X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=glretrace.py;h=97a6ecc1c8f07063c0ea24bf68168bbc2d09ccc4;hb=cbabe34c0bc4c5190f53c2b4e6991ad10ad36e44;hp=deeb86d4ebe39c368944da2f6147913da4701b6a;hpb=97ac28e65ca20b5649552597afaeee1d67766f6a;p=apitrace diff --git a/glretrace.py b/glretrace.py index deeb86d..97a6ecc 100644 --- a/glretrace.py +++ b/glretrace.py @@ -159,7 +159,8 @@ class GlRetracer(Retracer): 'glMapBufferOES', 'glMapBufferRange', 'glMapNamedBufferEXT', - 'glMapNamedBufferRangeEXT' + 'glMapNamedBufferRangeEXT', + 'glMapObjectBufferATI', ]) unmap_function_names = set([ @@ -167,6 +168,7 @@ class GlRetracer(Retracer): 'glUnmapBufferARB', 'glUnmapBufferOES', 'glUnmapNamedBufferEXT', + 'glUnmapObjectBufferATI', ]) def retraceFunctionBody(self, function): @@ -224,6 +226,21 @@ class GlRetracer(Retracer): # Infer the drawable size from GL calls if function.name == "glViewport": print ' glretrace::updateDrawable(x + width, y + height);' + if function.name == "glViewportArray": + # We are concerned about drawables so only care for the first viewport + print ' if (first == 0 && count > 0) {' + print ' GLfloat x = v[0], y = v[1], w = v[2], h = v[3];' + print ' glretrace::updateDrawable(x + w, y + h);' + print ' }' + if function.name == "glViewportIndexedf": + print ' if (index == 0) {' + print ' glretrace::updateDrawable(x + w, y + h);' + print ' }' + if function.name == "glViewportIndexedfv": + print ' if (index == 0) {' + print ' GLfloat x = v[0], y = v[1], w = v[2], h = v[3];' + print ' glretrace::updateDrawable(x + w, y + h);' + print ' }' if function.name in ('glBlitFramebuffer', 'glBlitFramebufferEXT'): # Some applications do all their rendering in a framebuffer, and # then just blit to the drawable without ever calling glViewport. @@ -251,6 +268,9 @@ class GlRetracer(Retracer): print r' glGetBufferPointervOES(target, GL_BUFFER_MAP_POINTER_OES, &ptr);' elif function.name == 'glUnmapNamedBufferEXT': print r' glGetNamedBufferPointervEXT(buffer, GL_BUFFER_MAP_POINTER, &ptr);' + elif function.name == 'glUnmapObjectBufferATI': + # TODO + pass else: assert False print r' if (ptr) {' @@ -323,7 +343,7 @@ class GlRetracer(Retracer): print r' if (!__result) {' print r' retrace::warning(call) << "failed to map buffer\n";' print r' }' - if function.name in self.unmap_function_names: + if function.name in self.unmap_function_names and function.type is not stdapi.Void: print r' if (!__result) {' print r' retrace::warning(call) << "failed to unmap buffer\n";' print r' }' @@ -353,6 +373,8 @@ class GlRetracer(Retracer): print r' glGetBufferParameterivARB(target, GL_BUFFER_SIZE_ARB, &length);' elif function.name == 'glMapNamedBufferEXT': print r' glGetNamedBufferParameterivEXT(buffer, GL_BUFFER_SIZE, &length);' + elif function.name == 'glMapObjectBufferATI': + print r' glGetObjectBufferivATI(buffer, GL_OBJECT_BUFFER_SIZE_ATI, &length);' else: assert False