X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gltrace.py;h=2dee18d965ccc82ce7a756e8d6a3a72a6d0893d9;hb=9977b37a1c61376f55fba070d025389b5616c93b;hp=42efa74d0dc398662a06b9358dbbfb85808207ab;hpb=7e0bfd953c6ee29eeebe1fd3d5a59a6039e81e1f;p=apitrace diff --git a/gltrace.py b/gltrace.py index 42efa74..2dee18d 100644 --- a/gltrace.py +++ b/gltrace.py @@ -29,7 +29,7 @@ import stdapi import glapi -import glstate +import glparams from glxapi import glxapi from trace import Tracer, dump_instance @@ -177,7 +177,7 @@ class GlTracer(Tracer): print 'static bool' print 'is_symbolic_pname(GLenum pname) {' print ' switch(pname) {' - for function, type, count, name in glstate.parameters: + for function, type, count, name in glparams.parameters: if type is glapi.GLenum: print ' case %s:' % name print ' return true;' @@ -201,7 +201,7 @@ class GlTracer(Tracer): print 'static size_t' print 'pname_size(GLenum pname) {' print ' switch(pname) {' - for function, type, count, name in glstate.parameters: + for function, type, count, name in glparams.parameters: if type is not None: print ' case %s: return %u;' % (name, count) print ' case GL_COMPRESSED_TEXTURE_FORMATS: {' @@ -216,7 +216,6 @@ class GlTracer(Tracer): print '}' print - array_pointer_function_names = set(( "glVertexPointer", "glNormalPointer", @@ -227,6 +226,8 @@ class GlTracer(Tracer): "glFogCoordPointer", "glSecondaryColorPointer", + "glInterleavedArrays", + "glVertexPointerEXT", "glNormalPointerEXT", "glColorPointerEXT", @@ -239,6 +240,8 @@ class GlTracer(Tracer): "glVertexAttribPointer", "glVertexAttribPointerARB", "glVertexAttribPointerNV", + "glVertexAttribIPointer", + "glVertexAttribIPointerEXT", "glVertexAttribLPointer", "glVertexAttribLPointerEXT", @@ -278,6 +281,48 @@ class GlTracer(Tracer): print ' if (!__array_buffer) {' print ' __user_arrays = true;' self.dispatch_function(function) + + # And also break down glInterleavedArrays into the individual calls + if function.name == 'glInterleavedArrays': + print + + # Initialize the enable flags + for camelcase_name, uppercase_name in self.arrays: + flag_name = '__' + uppercase_name.lower() + print ' GLboolean %s = GL_FALSE;' % flag_name + print + + # Switch for the interleaved formats + print ' switch (format) {' + for format in self.interleaved_formats: + print ' case %s:' % format + for camelcase_name, uppercase_name in self.arrays: + flag_name = '__' + uppercase_name.lower() + if format.find('_' + uppercase_name[0]) >= 0: + print ' %s = GL_TRUE;' % flag_name + print ' break;' + print ' default:' + print ' return;' + print ' }' + print + + # Emit fake glEnableClientState/glDisableClientState flags + for camelcase_name, uppercase_name in self.arrays: + flag_name = '__' + uppercase_name.lower() + enable_name = 'GL_%s_ARRAY' % uppercase_name + + # Emit a fake function + print ' {' + print ' static const Trace::FunctionSig &__sig = %s ? __glEnableClientState_sig : __glDisableClientState_sig;' % flag_name + print ' unsigned __call = Trace::BeginEnter(__sig);' + print ' Trace::BeginArg(0);' + dump_instance(glapi.GLenum, enable_name) + print ' Trace::EndArg();' + print ' Trace::EndEnter();' + print ' Trace::BeginLeave(__call);' + print ' Trace::EndLeave();' + print ' }' + print ' return;' print ' }' @@ -289,55 +334,6 @@ class GlTracer(Tracer): print ' __trace_user_arrays(maxindex);' print ' }' - # And also break down glInterleavedArrays into the individual calls - if function.name == 'glInterleavedArrays': - print ' GLint __array_buffer = 0;' - print ' __glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &__array_buffer);' - print ' if (!__array_buffer) {' - print ' __user_arrays = true;' - self.dispatch_function(function) - print - - # Initialize the enable flags - for camelcase_name, uppercase_name in self.arrays: - flag_name = '__' + uppercase_name.lower() - print ' GLboolean %s = GL_FALSE;' % flag_name - print - - # Swicth for the interleaved formats - print ' switch (format) {' - for format in self.interleaved_formats: - print ' case %s:' % format - for camelcase_name, uppercase_name in self.arrays: - flag_name = '__' + uppercase_name.lower() - if format.find('_' + uppercase_name[0]) >= 0: - print ' %s = GL_TRUE;' % flag_name - print ' break;' - print ' default:' - print ' return;' - print ' }' - print - - # Emit fake glEnableClientState/glDisableClientState flags - for camelcase_name, uppercase_name in self.arrays: - flag_name = '__' + uppercase_name.lower() - enable_name = 'GL_%s_ARRAY' % uppercase_name - - # Emit a fake function - print ' {' - print ' static const Trace::FunctionSig &__sig = %s ? __glEnableClientState_sig : __glDisableClientState_sig;' % flag_name - print ' unsigned __call = Trace::BeginEnter(__sig);' - print ' Trace::BeginArg(0);' - dump_instance(glapi.GLenum, enable_name) - print ' Trace::EndArg();' - print ' Trace::EndEnter();' - print ' Trace::BeginLeave(__call);' - print ' Trace::EndLeave();' - print ' }' - - print ' return;' - print ' }' - # Emit a fake memcpy on if function.name in ('glUnmapBuffer', 'glUnmapBufferARB'): print ' struct buffer_mapping *mapping = get_buffer_mapping(target);'