From: José Fonseca Date: Thu, 31 Mar 2011 22:37:26 +0000 (+0100) Subject: Some cleanups for vertex arrays. X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=7f5163ebf2ae5d0f47111bf7bc6b8470888d6c84;p=apitrace Some cleanups for vertex arrays. --- diff --git a/glretrace.py b/glretrace.py index 9078b7f..b6d0f60 100644 --- a/glretrace.py +++ b/glretrace.py @@ -58,10 +58,11 @@ class GlRetracer(Retracer): #"glFogCoordPointerEXT", #"glSecondaryColorPointerEXT", - #"glVertexAttribPointer", - #"glVertexAttribPointerARB", - #"glVertexAttribPointerNV", - #"glVertexAttribLPointer", + "glVertexAttribPointer", + "glVertexAttribPointerARB", + "glVertexAttribPointerNV", + "glVertexAttribLPointer", + "glVertexAttribLPointerEXT", #"glMatrixIndexPointerARB", )) @@ -144,32 +145,8 @@ class GlRetracer(Retracer): # glGetError is not allowed inside glBegin/glEnd print ' checkGlError();' - pointer_function_names = set([ - "glColorPointer", - #"glColorPointerEXT", - "glEdgeFlagPointer", - #"glEdgeFlagPointerEXT", - "glFogCoordPointer", - #"glFogCoordPointerEXT", - "glIndexPointer", - #"glIndexPointerEXT", - #"glMatrixIndexPointerARB", - "glNormalPointer", - #"glNormalPointerEXT", - "glSecondaryColorPointer", - #"glSecondaryColorPointerEXT", - "glTexCoordPointer", - #"glTexCoordPointerEXT", - #"glVertexAttribLPointer", - #"glVertexAttribPointer", - #"glVertexAttribPointerARB", - #"glVertexAttribPointerNV", - "glVertexPointer", - #"glVertexPointerEXT", - ]) - def extract_arg(self, function, arg, arg_type, lvalue, rvalue): - if function.name in self.pointer_function_names and arg.name == 'pointer': + if function.name in self.array_pointer_function_names and arg.name == 'pointer': print ' %s = %s.blob();' % (lvalue, rvalue) return diff --git a/gltrace.py b/gltrace.py index 56292bd..701de74 100644 --- a/gltrace.py +++ b/gltrace.py @@ -46,7 +46,7 @@ class TypeGetter(stdapi.Visitor): return 'glGetDoublev', alias.expr elif alias.expr == 'GLfloat': return 'glGetFloatv', alias.expr - elif alias.expr in ('GLint', 'GLsizei'): + elif alias.expr in ('GLint', 'GLuint', 'GLsizei'): return 'glGetIntegerv', 'GLint' else: print alias.expr @@ -93,18 +93,15 @@ class GlTracer(Tracer): enable_name = 'GL_%s_ARRAY' % uppercase_name binding_name = 'GL_%s_ARRAY_BUFFER_BINDING' % uppercase_name print ' // %s' % function_name - print ' {' - print ' GLboolean __enabled = GL_FALSE;' - print ' __glGetBooleanv(%s, &__enabled);' % enable_name - print ' if (__enabled) {' - print ' GLint __binding = 0;' - print ' __glGetIntegerv(%s, &__binding);' % binding_name - print ' if (!__binding) {' - print ' return true;' - print ' }' + print ' if (__glIsEnabled(%s)) {' % enable_name + print ' GLint __binding = 0;' + print ' __glGetIntegerv(%s, &__binding);' % binding_name + print ' if (!__binding) {' + print ' return true;' print ' }' print ' }' print + print ' return false;' print '}' print @@ -121,20 +118,21 @@ class GlTracer(Tracer): "glEdgeFlagPointer", "glFogCoordPointer", "glSecondaryColorPointer", - - #"glVertexPointerEXT", - #"glNormalPointerEXT", - #"glColorPointerEXT", - #"glIndexPointerEXT", - #"glTexCoordPointerEXT", - #"glEdgeFlagPointerEXT", - #"glFogCoordPointerEXT", - #"glSecondaryColorPointerEXT", - - #"glVertexAttribPointer", - #"glVertexAttribPointerARB", - #"glVertexAttribPointerNV", - #"glVertexAttribLPointer", + + "glVertexPointerEXT", + "glNormalPointerEXT", + "glColorPointerEXT", + "glIndexPointerEXT", + "glTexCoordPointerEXT", + "glEdgeFlagPointerEXT", + "glFogCoordPointerEXT", + "glSecondaryColorPointerEXT", + + "glVertexAttribPointer", + "glVertexAttribPointerARB", + "glVertexAttribPointerNV", + "glVertexAttribLPointer", + "glVertexAttribLPointerEXT", #"glMatrixIndexPointerARB", )) @@ -264,39 +262,35 @@ class GlTracer(Tracer): function = api.get_function_by_name(function_name) print ' // %s' % function.name - print ' {' - print ' GLboolean __enabled = GL_FALSE;' - print ' __glGetBooleanv(%s, &__enabled);' % enable_name - print ' if (__enabled) {' - print ' GLint __binding = 0;' - print ' __glGetIntegerv(%s, &__binding);' % binding_name - print ' if (!__binding) {' + print ' if (__glIsEnabled(%s)) {;' % enable_name + print ' GLint __binding = 0;' + print ' __glGetIntegerv(%s, &__binding);' % binding_name + print ' if (!__binding) {' # Get the arguments via glGet* for arg in function.args: arg_get_enum = 'GL_%s_ARRAY_%s' % (uppercase_name, arg.name.upper()) arg_get_function, arg_type = TypeGetter().visit(arg.type) - print ' %s %s = 0;' % (arg_type, arg.name) - print ' __%s(%s, &%s);' % (arg_get_function, arg_get_enum, arg.name) + print ' %s %s = 0;' % (arg_type, arg.name) + print ' __%s(%s, &%s);' % (arg_get_function, arg_get_enum, arg.name) arg_names = ', '.join([arg.name for arg in function.args[:-1]]) - print ' size_t __size = __%s_size(%s, maxindex);' % (function.name, arg_names) + print ' size_t __size = __%s_size(%s, maxindex);' % (function.name, arg_names) # Emit a fake function - print ' unsigned __call = Trace::BeginEnter(__%s_sig);' % (function.name,) + print ' unsigned __call = Trace::BeginEnter(__%s_sig);' % (function.name,) for arg in function.args: assert not arg.output - print ' Trace::BeginArg(%u);' % (arg.index,) + print ' Trace::BeginArg(%u);' % (arg.index,) if arg.name != 'pointer': dump_instance(arg.type, arg.name) else: - print ' Trace::LiteralBlob((const void *)%s, __size);' % (arg.name) - print ' Trace::EndArg();' + print ' Trace::LiteralBlob((const void *)%s, __size);' % (arg.name) + print ' Trace::EndArg();' - print ' Trace::EndEnter();' - print ' Trace::BeginLeave(__call);' - print ' Trace::EndLeave();' - print ' }' + print ' Trace::EndEnter();' + print ' Trace::BeginLeave(__call);' + print ' Trace::EndLeave();' print ' }' print ' }' print