[PATCH v4 05/19] mt trace: egl: track GL context on a per-thread basis
Imre Deak
imre.deak at intel.com
Thu Jun 14 08:55:13 PDT 2012
Wrap EGL context handling calls and keep our own per-thread basis track
of the context object.
Signed-off-by: Imre Deak <imre.deak at intel.com>
---
wrappers/egltrace.py | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/wrappers/egltrace.py b/wrappers/egltrace.py
index f40b8a0..fb8a3a0 100644
--- a/wrappers/egltrace.py
+++ b/wrappers/egltrace.py
@@ -52,11 +52,16 @@ class EglTracer(GlTracer):
def traceFunctionImplBody(self, function):
GlTracer.traceFunctionImplBody(self, function)
+ if function.name == 'eglCreateContext':
+ print ' if (_result != EGL_NO_CONTEXT)'
+ print ' gltrace::createContext((uintptr_t)_result);'
+
if function.name == 'eglMakeCurrent':
print ' if (_result) {'
print ' // update the profile'
print ' if (ctx != EGL_NO_CONTEXT) {'
print ' EGLint api = EGL_OPENGL_ES_API, version = 1;'
+ print ' gltrace::setContext((uintptr_t)ctx);'
print ' gltrace::Context *tr = gltrace::getContext();'
print ' _eglQueryContext(dpy, ctx, EGL_CONTEXT_CLIENT_TYPE, &api);'
print ' _eglQueryContext(dpy, ctx, EGL_CONTEXT_CLIENT_VERSION, &version);'
@@ -66,9 +71,14 @@ class EglTracer(GlTracer):
print ' tr->profile = gltrace::PROFILE_ES1;'
print ' else'
print ' tr->profile = gltrace::PROFILE_ES2;'
+ print ' } else {'
+ print ' gltrace::clearContext();'
print ' }'
print ' }'
+ if function.name == 'eglDestroyContext':
+ print ' if (_result)'
+ print ' gltrace::destroyContext((uintptr_t)ctx);'
if __name__ == '__main__':
print '#include <stdlib.h>'
--
1.7.5.4
More information about the apitrace
mailing list