X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=retrace%2Fglretrace.py;h=44b2f9d941438e5be45f343ef773348a72e726b9;hb=d6b7eb6b7c8280762fb635a6e63aa3a426694ed7;hp=f2cc37232032387af218e300cf6b318eb43e1e3c;hpb=07a7ce801ab5bd986e4e580e8370ff705970f13a;p=apitrace diff --git a/retrace/glretrace.py b/retrace/glretrace.py index f2cc372..44b2f9d 100644 --- a/retrace/glretrace.py +++ b/retrace/glretrace.py @@ -84,6 +84,8 @@ class GlRetracer(Retracer): "glMultiDrawArrays", "glMultiDrawArraysEXT", "glMultiModeDrawArraysIBM", + 'glMultiDrawArraysIndirect', + 'glMultiDrawArraysIndirectAMD', ]) draw_elements_function_names = set([ @@ -103,11 +105,17 @@ class GlRetracer(Retracer): "glMultiDrawElementsBaseVertex", "glMultiDrawElementsEXT", "glMultiModeDrawElementsIBM", + 'glMultiDrawElementsIndirect', + 'glMultiDrawElementsIndirectAMD', ]) draw_indirect_function_names = set([ "glDrawArraysIndirect", "glDrawElementsIndirect", + 'glMultiDrawArraysIndirect', + 'glMultiDrawArraysIndirectAMD', + 'glMultiDrawElementsIndirect', + 'glMultiDrawElementsIndirectAMD', ]) misc_draw_function_names = set([ @@ -130,6 +138,9 @@ class GlRetracer(Retracer): # object. See also the ARB_pixel_buffer_object specification. pack_function_names = set([ 'glGetCompressedTexImage', + 'glGetCompressedTexImageARB', + 'glGetCompressedTextureImageEXT', + 'glGetCompressedMultiTexImageEXT', 'glGetConvolutionFilter', 'glGetHistogram', 'glGetMinmax', @@ -139,6 +150,8 @@ class GlRetracer(Retracer): 'glGetPolygonStipple', 'glGetSeparableFilter', 'glGetTexImage', + 'glGetTextureImageEXT', + 'glGetMultiTexImageEXT', 'glReadPixels', 'glGetnCompressedTexImageARB', 'glGetnConvolutionFilterARB', @@ -250,7 +263,7 @@ class GlRetracer(Retracer): print ' glretrace::insideGlBeginEnd = false;' if function.name.startswith('gl') and not function.name.startswith('glX'): - print r' if (retrace::debug && !glretrace::currentContext) {' + print r' if (retrace::debug && !glretrace::getCurrentContext()) {' print r' retrace::warning(call) << "no current context\n";' print r' }' @@ -299,8 +312,9 @@ class GlRetracer(Retracer): ) if function.name in ('glUseProgram', 'glUseProgramObjectARB'): - print r' if (glretrace::currentContext) {' - print r' glretrace::currentContext->activeProgram = call.arg(0).toUInt();' + print r' glretrace::Context *currentContext = glretrace::getCurrentContext();' + print r' if (currentContext) {' + print r' currentContext->activeProgram = call.arg(0).toUInt();' print r' }' # Only profile if not inside a list as the queries get inserted into list @@ -362,7 +376,7 @@ class GlRetracer(Retracer): # Error checking if function.name.startswith('gl'): # glGetError is not allowed inside glBegin/glEnd - print ' if (retrace::debug && !glretrace::insideGlBeginEnd) {' + print ' if (retrace::debug && !glretrace::insideGlBeginEnd && glretrace::getCurrentContext()) {' print ' glretrace::checkGlError(call);' if function.name in ('glProgramStringARB', 'glProgramStringNV'): print r' GLint error_position = -1;' @@ -479,7 +493,8 @@ class GlRetracer(Retracer): print ' GLint program = -1;' print ' if (glretrace::insideList) {' print ' // glUseProgram & glUseProgramObjectARB are display-list-able' - print ' program = _program_map[glretrace::currentContext->activeProgram];' + print r' glretrace::Context *currentContext = glretrace::getCurrentContext();' + print ' program = _program_map[currentContext->activeProgram];' print ' } else {' print ' GLint pipeline = 0;' print ' if (_pipelineHasBeenBound) {' @@ -526,7 +541,8 @@ if __name__ == '__main__': static bool _pipelineHasBeenBound = false; ''' - api = glapi.glapi - api.addApi(glesapi.glesapi) + api = stdapi.API() + api.addModule(glapi.glapi) + api.addModule(glesapi.glesapi) retracer = GlRetracer() retracer.retraceApi(api)