[PATCH v2 13/18] Android manual state tracking: wrap native GL calls

Imre Deak imre.deak at intel.com
Tue May 15 07:11:08 PDT 2012


Signed-off-by: Imre Deak <imre.deak at intel.com>
---
 helpers/glsize.hpp  |   14 ++++++++++++--
 wrappers/gltrace.py |   18 +++++++++---------
 2 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/helpers/glsize.hpp b/helpers/glsize.hpp
index 7efa12e..f930213 100644
--- a/helpers/glsize.hpp
+++ b/helpers/glsize.hpp
@@ -325,6 +325,14 @@ _glDrawArrays_maxindex(GLint first, GLsizei count)
 
 #define _glDrawArraysEXT_maxindex _glDrawArrays_maxindex
 
+/* Forward declarations for definitions in gltrace.py */
+void
+_apitrace_glGetIntegerv(GLenum pname, GLint *params);
+
+void
+_apitrace_glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size,
+                              GLvoid *data);
+
 static inline GLuint
 _glDrawElementsBaseVertex_maxindex(GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex)
 {
@@ -335,7 +343,8 @@ _glDrawElementsBaseVertex_maxindex(GLsizei count, GLenum type, const GLvoid *ind
         return 0;
     }
 
-    _glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &element_array_buffer);
+    _apitrace_glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING,
+                                      &element_array_buffer);
     if (element_array_buffer) {
         // Read indices from index buffer object
         GLintptr offset = (GLintptr)indices;
@@ -345,7 +354,8 @@ _glDrawElementsBaseVertex_maxindex(GLsizei count, GLenum type, const GLvoid *ind
             return 0;
         }
         memset(temp, 0, size);
-        _glGetBufferSubData(GL_ELEMENT_ARRAY_BUFFER, offset, size, temp);
+        _apitrace_glGetBufferSubData(GL_ELEMENT_ARRAY_BUFFER, offset,
+                                               size, temp);
         indices = temp;
     } else {
         if (!indices) {
diff --git a/wrappers/gltrace.py b/wrappers/gltrace.py
index a3bfb41..d60f1e4 100644
--- a/wrappers/gltrace.py
+++ b/wrappers/gltrace.py
@@ -181,9 +181,9 @@ class GlTracer(Tracer):
             print '    // %s' % function_name
             print '  if (%s) {' % profile_check
             self.array_prolog(api, uppercase_name)
-            print '    if (_glIsEnabled(%s)) {' % enable_name
+            print '    if (_apitrace_glIsEnabled(%s)) {' % enable_name
             print '        GLint _binding = 0;'
-            print '        _glGetIntegerv(%s, &_binding);' % binding_name
+            print '        _apitrace_glGetIntegerv(%s, &_binding);' % binding_name
             print '        if (!_binding) {'
             self.array_cleanup(api, uppercase_name)
             print '            return true;'
@@ -681,7 +681,7 @@ class GlTracer(Tracer):
         # Defer tracing of user array pointers...
         if function.name in self.array_pointer_function_names:
             print '    GLint _array_buffer = 0;'
-            print '    _glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &_array_buffer);'
+            print '    _apitrace_glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &_array_buffer);'
             print '    if (!_array_buffer) {'
             print '        gltrace::Context *ctx = gltrace::getContext();'
             print '        ctx->user_arrays = true;'
@@ -1024,7 +1024,7 @@ class GlTracer(Tracer):
     def serializeArgValue(self, function, arg):
         if function.name in self.draw_function_names and arg.name == 'indices':
             print '    GLint _element_array_buffer = 0;'
-            print '    _glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &_element_array_buffer);'
+            print '    _apitrace_glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &_element_array_buffer);'
             print '    if (!_element_array_buffer) {'
             if isinstance(arg.type, stdapi.Array):
                 print '        trace::localWriter.beginArray(%s);' % arg.type.length
@@ -1050,7 +1050,7 @@ class GlTracer(Tracer):
             print '        gltrace::Context *ctx = gltrace::getContext();'
             print '        GLint _unpack_buffer = 0;'
             print '        if (ctx->profile == gltrace::PROFILE_COMPAT)'
-            print '            _glGetIntegerv(GL_PIXEL_UNPACK_BUFFER_BINDING, &_unpack_buffer);'
+            print '            _apitrace_glGetIntegerv(GL_PIXEL_UNPACK_BUFFER_BINDING, &_unpack_buffer);'
             print '        if (_unpack_buffer) {'
             print '            trace::localWriter.writePointer((uintptr_t)%s);' % arg.name
             print '        } else {'
@@ -1100,15 +1100,15 @@ class GlTracer(Tracer):
             print '  if (%s) {' % profile_check
             self.array_trace_prolog(api, uppercase_name)
             self.array_prolog(api, uppercase_name)
-            print '    if (_glIsEnabled(%s)) {' % enable_name
+            print '    if (_apitrace_glIsEnabled(%s)) {' % enable_name
             print '        GLint _binding = 0;'
-            print '        _glGetIntegerv(%s, &_binding);' % binding_name
+            print '        _apitrace_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)
+                arg_get_function, arg_type = TypeGetterManualTracking().visit(arg.type)
                 print '            %s %s = 0;' % (arg_type, arg.name)
                 print '            _%s(%s, &%s);' % (arg_get_function, arg_get_enum, arg.name)
             
@@ -1225,7 +1225,7 @@ class GlTracer(Tracer):
     def array_prolog(self, api, uppercase_name):
         if uppercase_name == 'TEXTURE_COORD':
             print '    GLint client_active_texture = 0;'
-            print '    _glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &client_active_texture);'
+            print '    _apitrace_glGetIntegerv(GL_CLIENT_ACTIVE_TEXTURE, &client_active_texture);'
             print '    GLint max_texture_coords = 0;'
             print '    if (ctx->profile == gltrace::PROFILE_COMPAT)'
             print '        _glGetIntegerv(GL_MAX_TEXTURE_COORDS, &max_texture_coords);'
-- 
1.7.5.4



More information about the apitrace mailing list