[PATCH 10/10] gles: Add support for GLES tracing to egltrace
Chia-I Wu
olvaffe at gmail.com
Tue Nov 8 14:13:20 PST 2011
Override GLES entrypoints and set the tracer context's profile when
eglMakeCurrent is called. This allows egltrace to trace GLES apps.
---
egltrace.py | 19 ++++++++++++++++++-
1 files changed, 18 insertions(+), 1 deletions(-)
diff --git a/egltrace.py b/egltrace.py
index 64e5191..27a7b0f 100644
--- a/egltrace.py
+++ b/egltrace.py
@@ -35,6 +35,7 @@
from specs.stdapi import API
from specs.glapi import glapi
from specs.eglapi import eglapi
+from specs.glesapi import glesapi
from gltrace import GlTracer
from dispatch import function_pointer_type, function_pointer_value
@@ -52,15 +53,30 @@ class EglTracer(GlTracer):
if function.name == 'eglSwapBuffers':
print ' glsnapshot::snapshot(__call);'
if function.name in ('glFinish', 'glFlush'):
+ print ' tracer_context *ctx = __get_context();'
print ' GLint __draw_framebuffer = 0;'
print ' __glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &__draw_framebuffer);'
- print ' if (__draw_framebuffer == 0) {'
+ print ' if (__draw_framebuffer == 0 && ctx->profile == PROFILE_COMPAT) {'
print ' GLint __draw_buffer = GL_NONE;'
print ' __glGetIntegerv(GL_DRAW_BUFFER, &__draw_buffer);'
print ' if (__draw_buffer == GL_FRONT) {'
print ' glsnapshot::snapshot(__call);'
print ' }'
print ' }'
+ if function.name == 'eglMakeCurrent':
+ print ' // update the profile'
+ print ' if (ctx != EGL_NO_CONTEXT) {'
+ print ' EGLint api = EGL_OPENGL_ES_API, version = 1;'
+ print ' tracer_context *tr = __get_context();'
+ print ' __eglQueryContext(dpy, ctx, EGL_CONTEXT_CLIENT_TYPE, &api);'
+ print ' __eglQueryContext(dpy, ctx, EGL_CONTEXT_CLIENT_VERSION, &version);'
+ print ' if (api == EGL_OPENGL_API)'
+ print ' tr->profile = PROFILE_COMPAT;'
+ print ' else if (version == 1)'
+ print ' tr->profile = PROFILE_ES1;'
+ print ' else'
+ print ' tr->profile = PROFILE_ES2;'
+ print ' }'
def wrap_ret(self, function, instance):
GlTracer.wrap_ret(self, function, instance)
@@ -90,6 +106,7 @@ if __name__ == '__main__':
api = API()
api.add_api(eglapi)
api.add_api(glapi)
+ api.add_api(glesapi)
tracer = EglTracer()
tracer.trace_api(api)
--
1.7.6.3
More information about the apitrace
mailing list