gltrace: fixup data for glTexSubImage2D & glDeleteBuffers
Change-Id: I1c1deb8c6026ecf1fa0ed5287ccf601416eba6dc
This commit is contained in:
parent
5b941c3233
commit
34c726efb5
@ -107,19 +107,11 @@ void fixup_addFBContents(GLTraceContext *context, GLMessage *glmsg, FBBinding fb
|
|||||||
fb->add_contents(fbcontents, fbsize);
|
fb->add_contents(fbcontents, fbsize);
|
||||||
}
|
}
|
||||||
|
|
||||||
void fixup_glTexImage2D(GLMessage *glmsg) {
|
/** Common fixup routing for glTexImage2D & glTexSubImage2D. */
|
||||||
/* void glTexImage2D(GLenum target,
|
void fixup_glTexImage(int widthIndex, int heightIndex, GLMessage *glmsg) {
|
||||||
GLint level,
|
GLMessage_DataType arg_width = glmsg->args(widthIndex);
|
||||||
GLint internalformat,
|
GLMessage_DataType arg_height = glmsg->args(heightIndex);
|
||||||
GLsizei width,
|
|
||||||
GLsizei height,
|
|
||||||
GLint border,
|
|
||||||
GLenum format,
|
|
||||||
GLenum type,
|
|
||||||
const GLvoid *data);
|
|
||||||
*/
|
|
||||||
GLMessage_DataType arg_width = glmsg->args(3);
|
|
||||||
GLMessage_DataType arg_height = glmsg->args(4);
|
|
||||||
GLMessage_DataType arg_format = glmsg->args(6);
|
GLMessage_DataType arg_format = glmsg->args(6);
|
||||||
GLMessage_DataType arg_type = glmsg->args(7);
|
GLMessage_DataType arg_type = glmsg->args(7);
|
||||||
GLMessage_DataType *arg_data = glmsg->mutable_args(8);
|
GLMessage_DataType *arg_data = glmsg->mutable_args(8);
|
||||||
@ -133,21 +125,51 @@ void fixup_glTexImage2D(GLMessage *glmsg) {
|
|||||||
int bytesPerTexel = getBytesPerTexel(format, type);
|
int bytesPerTexel = getBytesPerTexel(format, type);
|
||||||
|
|
||||||
arg_data->set_type(GLMessage::DataType::BYTE);
|
arg_data->set_type(GLMessage::DataType::BYTE);
|
||||||
arg_data->set_isarray(true);
|
|
||||||
arg_data->clear_rawbytes();
|
arg_data->clear_rawbytes();
|
||||||
|
|
||||||
if (data != NULL) {
|
if (data != NULL) {
|
||||||
|
arg_data->set_isarray(true);
|
||||||
arg_data->add_rawbytes(data, bytesPerTexel * width * height);
|
arg_data->add_rawbytes(data, bytesPerTexel * width * height);
|
||||||
} else {
|
} else {
|
||||||
ALOGE("fixup_glTexImage2D: image data is NULL.\n");
|
arg_data->set_isarray(false);
|
||||||
arg_data->set_type(GLMessage::DataType::VOID);
|
arg_data->set_type(GLMessage::DataType::VOID);
|
||||||
// FIXME:
|
|
||||||
// This will create the texture, but it will be uninitialized.
|
|
||||||
// It can later be initialized with glTexSubImage2D or by
|
|
||||||
// attaching an FBO to it and rendering into the FBO.
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void fixup_glTexImage2D(GLMessage *glmsg) {
|
||||||
|
/* void glTexImage2D(GLenum target,
|
||||||
|
GLint level,
|
||||||
|
GLint internalformat,
|
||||||
|
GLsizei width,
|
||||||
|
GLsizei height,
|
||||||
|
GLint border,
|
||||||
|
GLenum format,
|
||||||
|
GLenum type,
|
||||||
|
const GLvoid *data);
|
||||||
|
*/
|
||||||
|
int widthIndex = 3;
|
||||||
|
int heightIndex = 4;
|
||||||
|
fixup_glTexImage(widthIndex, heightIndex, glmsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fixup_glTexSubImage2D(GLMessage *glmsg) {
|
||||||
|
/*
|
||||||
|
void glTexSubImage2D(GLenum target,
|
||||||
|
GLint level,
|
||||||
|
GLint xoffset,
|
||||||
|
GLint yoffset,
|
||||||
|
GLsizei width,
|
||||||
|
GLsizei height,
|
||||||
|
GLenum format,
|
||||||
|
GLenum type,
|
||||||
|
const GLvoid * data);
|
||||||
|
*/
|
||||||
|
int widthIndex = 4;
|
||||||
|
int heightIndex = 5;
|
||||||
|
fixup_glTexImage(widthIndex, heightIndex, glmsg);
|
||||||
|
}
|
||||||
|
|
||||||
void fixup_glShaderSource(GLMessage *glmsg) {
|
void fixup_glShaderSource(GLMessage *glmsg) {
|
||||||
/* void glShaderSource(GLuint shader, GLsizei count, const GLchar** string,
|
/* void glShaderSource(GLuint shader, GLsizei count, const GLchar** string,
|
||||||
const GLint* length) */
|
const GLint* length) */
|
||||||
@ -218,6 +240,14 @@ void fixup_glGenGeneric(GLMessage *glmsg) {
|
|||||||
fixup_GenericIntArray(1, n, glmsg);
|
fixup_GenericIntArray(1, n, glmsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void fixup_glDeleteGeneric(GLMessage *glmsg) {
|
||||||
|
/* void glDelete*(GLsizei n, GLuint *buffers); */
|
||||||
|
GLMessage_DataType arg_n = glmsg->args(0);
|
||||||
|
GLsizei n = arg_n.intvalue(0);
|
||||||
|
|
||||||
|
fixup_GenericIntArray(1, n, glmsg);
|
||||||
|
}
|
||||||
|
|
||||||
void fixup_glGetBooleanv(GLMessage *glmsg) {
|
void fixup_glGetBooleanv(GLMessage *glmsg) {
|
||||||
/* void glGetBooleanv(GLenum pname, GLboolean *params); */
|
/* void glGetBooleanv(GLenum pname, GLboolean *params); */
|
||||||
GLMessage_DataType *arg_params = glmsg->mutable_args(1);
|
GLMessage_DataType *arg_params = glmsg->mutable_args(1);
|
||||||
@ -250,10 +280,16 @@ void fixupGLMessage(GLTraceContext *context, nsecs_t start, nsecs_t end, GLMessa
|
|||||||
|
|
||||||
// do any custom message dependent processing
|
// do any custom message dependent processing
|
||||||
switch (glmsg->function()) {
|
switch (glmsg->function()) {
|
||||||
|
case GLMessage::glDeleteBuffers: /* glDeleteBuffers(GLsizei n, GLuint *buffers); */
|
||||||
|
case GLMessage::glDeleteFramebuffers: /* glDeleteFramebuffers(GLsizei n, GLuint *buffers); */
|
||||||
|
case GLMessage::glDeleteRenderbuffers:/* glDeleteRenderbuffers(GLsizei n, GLuint *buffers); */
|
||||||
|
case GLMessage::glDeleteTextures: /* glDeleteTextures(GLsizei n, GLuint *textures); */
|
||||||
|
fixup_glDeleteGeneric(glmsg);
|
||||||
|
break;
|
||||||
case GLMessage::glGenBuffers: /* void glGenBuffers(GLsizei n, GLuint *buffers); */
|
case GLMessage::glGenBuffers: /* void glGenBuffers(GLsizei n, GLuint *buffers); */
|
||||||
case GLMessage::glGenFramebuffers: /* void glGenFramebuffers(GLsizei n, GLuint *buffers); */
|
case GLMessage::glGenFramebuffers: /* void glGenFramebuffers(GLsizei n, GLuint *buffers); */
|
||||||
case GLMessage::glGenRenderbuffers: /* void glGenFramebuffers(GLsizei n, GLuint *buffers); */
|
case GLMessage::glGenRenderbuffers: /* void glGenFramebuffers(GLsizei n, GLuint *buffers); */
|
||||||
case GLMessage::glGenTextures: /* void glGenTextures(GLsizei n, GLuint * buffers); */
|
case GLMessage::glGenTextures: /* void glGenTextures(GLsizei n, GLuint *textures); */
|
||||||
fixup_glGenGeneric(glmsg);
|
fixup_glGenGeneric(glmsg);
|
||||||
break;
|
break;
|
||||||
case GLMessage::glGetAttribLocation:
|
case GLMessage::glGetAttribLocation:
|
||||||
@ -287,6 +323,11 @@ void fixupGLMessage(GLTraceContext *context, nsecs_t start, nsecs_t end, GLMessa
|
|||||||
fixup_glTexImage2D(glmsg);
|
fixup_glTexImage2D(glmsg);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case GLMessage::glTexSubImage2D:
|
||||||
|
if (context->getGlobalTraceState()->shouldCollectTextureDataOnGlTexImage()) {
|
||||||
|
fixup_glTexSubImage2D(glmsg);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case GLMessage::glShaderSource:
|
case GLMessage::glShaderSource:
|
||||||
fixup_glShaderSource(glmsg);
|
fixup_glShaderSource(glmsg);
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user