Skip to content

Commit 8293c92

Browse files
committed
gltrace: attach buffer data sent with glBufferData
Attach the buffer that is passed with glBufferData and glBufferSubData to the proto buf. Change-Id: I1b4c1172d405736b06cb0a356a6e241e1d60c4d5
1 parent 6b48f08 commit 8293c92

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

opengl/libs/GLES_trace/src/gltrace_fixup.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,26 @@ void fixup_glUniformMatrixGeneric(int matrixSize, GLMessage *glmsg) {
237237
fixup_glUniformGeneric(3, matrixSize * matrixSize * n_matrices, glmsg);
238238
}
239239

240+
void fixup_glBufferData(int sizeIndex, int dataIndex, GLMessage *glmsg) {
241+
/* void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data) */
242+
/* void glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage) */
243+
GLsizeiptr size = glmsg->args(sizeIndex).intvalue(0);
244+
245+
GLMessage_DataType *arg_datap = glmsg->mutable_args(dataIndex);
246+
GLvoid *datap = (GLvoid *)arg_datap->intvalue(0);
247+
248+
if (datap == NULL) {
249+
// glBufferData can be called with a NULL data pointer
250+
return;
251+
}
252+
253+
arg_datap->set_type(GLMessage::DataType::VOID);
254+
arg_datap->set_isarray(true);
255+
arg_datap->clear_intvalue();
256+
257+
arg_datap->add_rawbytes(datap, size);
258+
}
259+
240260
void fixup_GenericIntArray(int argIndex, int nInts, GLMessage *glmsg) {
241261
GLMessage_DataType *arg_intarray = glmsg->mutable_args(argIndex);
242262
GLint *intp = (GLint *)arg_intarray->intvalue(0);
@@ -503,6 +523,14 @@ void fixupGLMessage(GLTraceContext *context, nsecs_t wallStart, nsecs_t wallEnd,
503523
const GLfloat* value) */
504524
fixup_glUniformMatrixGeneric(4, glmsg);
505525
break;
526+
case GLMessage::glBufferData:
527+
/* void glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage) */
528+
fixup_glBufferData(1, 2, glmsg);
529+
break;
530+
case GLMessage::glBufferSubData:
531+
/* void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data) */
532+
fixup_glBufferData(2, 3, glmsg);
533+
break;
506534
case GLMessage::glDrawArrays:
507535
/* void glDrawArrays(GLenum mode, GLint first, GLsizei count) */
508536
if (context->getGlobalTraceState()->shouldCollectFbOnGlDraw()) {

0 commit comments

Comments
 (0)