From e97bab9680a1f6f35fb48f56ffe94b3048e569e5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Thu, 2 Jun 2011 23:15:11 +0100 Subject: [PATCH] Recognize offsets instead of blobs when PBOs are bound. --- gltrace.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/gltrace.py b/gltrace.py index dc9c097..8c5f66c 100644 --- a/gltrace.py +++ b/gltrace.py @@ -475,6 +475,36 @@ class GlTracer(Tracer): def gl_boolean(self, value): return self.boolean_names[int(bool(value))] + unpack_function_names = set([ + 'glBitmap', + 'glDrawPixels', + 'glMultiTexImage1DEXT', + 'glMultiTexImage2DEXT', + 'glMultiTexImage3DEXT', + 'glMultiTexSubImage1DEXT', + 'glMultiTexSubImage2DEXT', + 'glMultiTexSubImage3DEXT', + 'glPolygonStipple', + 'glTexImage1D', + 'glTexImage1DEXT', + 'glTexImage2D', + 'glTexImage2DEXT', + 'glTexImage3D', + 'glTexImage3DEXT', + 'glTexSubImage1D', + 'glTexSubImage1DEXT', + 'glTexSubImage2D', + 'glTexSubImage2DEXT', + 'glTexSubImage3D', + 'glTexSubImage3DEXT', + 'glTextureImage1DEXT', + 'glTextureImage2DEXT', + 'glTextureImage3DEXT', + 'glTextureSubImage1DEXT', + 'glTextureSubImage2DEXT', + 'glTextureSubImage3DEXT', + ]) + def dump_arg_instance(self, function, arg): if function.name in self.draw_function_names and arg.name == 'indices': print ' GLint __element_array_buffer = 0;' @@ -496,6 +526,20 @@ class GlTracer(Tracer): print ' }' return + # Recognize offsets instead of blobs when a PBO is bound + if function.name in self.unpack_function_names \ + and (isinstance(arg.type, stdapi.Blob) \ + or (isinstance(arg.type, stdapi.Const) \ + and isinstance(arg.type.type, stdapi.Blob))): + print ' GLint __unpack_buffer = 0;' + print ' __glGetIntegerv(GL_PIXEL_UNPACK_BUFFER_BINDING, &__unpack_buffer);' + print ' if (__unpack_buffer) {' + print ' __writer.writeOpaque(%s);' % arg.name + print ' } else {' + Tracer.dump_arg_instance(self, function, arg) + print ' }' + return + # Several GL state functions take GLenum symbolic names as # integer/floats; so dump the symbolic name whenever possible if function.name.startswith('gl') \ -- 2.7.4