From: Nigel Stewart Date: Fri, 12 Jul 2013 14:30:41 +0000 (-0500) Subject: glretrace: GLX and WGL support for ES2/EGL traces. X-Git-Url: https://git.cworth.org/git?p=apitrace;a=commitdiff_plain;h=1c2cacdef64e4939f8edc223fd13be56fd9e82c9 glretrace: GLX and WGL support for ES2/EGL traces. I was able to glretrace Gears for Android on x86 Linux with NVIDIA (non-DRI supporting) driver by enabling GLX_CONTEXT_ES2_PROFILE_BIT_EXT for the glXCreateContextAttribsARB path. Unfortunately eglretrace via Mesa es2/egl doesn't seem to be compatible the NVIDIA desktop driver. --- diff --git a/retrace/glws_glx.cpp b/retrace/glws_glx.cpp index 1494d06..5de8450 100644 --- a/retrace/glws_glx.cpp +++ b/retrace/glws_glx.cpp @@ -267,7 +267,8 @@ cleanup(void) { Visual * createVisual(bool doubleBuffer, Profile profile) { if (profile != PROFILE_COMPAT && - profile != PROFILE_CORE) { + profile != PROFILE_CORE && + profile != PROFILE_ES2) { return NULL; } @@ -342,6 +343,9 @@ createContext(const Visual *_visual, Context *shareContext, Profile profile, boo switch (profile) { case PROFILE_COMPAT: break; + case PROFILE_ES2: + attribs.add(GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_ES2_PROFILE_BIT_EXT); + break; case PROFILE_CORE: // XXX: This will invariable return a 3.2 context, when supported. // We probably should have a PROFILE_CORE_XX per version. diff --git a/retrace/glws_wgl.cpp b/retrace/glws_wgl.cpp index 9244b79..47b34a9 100644 --- a/retrace/glws_wgl.cpp +++ b/retrace/glws_wgl.cpp @@ -304,7 +304,8 @@ cleanup(void) { Visual * createVisual(bool doubleBuffer, Profile profile) { if (profile != PROFILE_COMPAT && - profile != PROFILE_CORE) { + profile != PROFILE_CORE && + profile != PROFILE_ES2) { return NULL; } @@ -325,12 +326,20 @@ Context * createContext(const Visual *visual, Context *shareContext, Profile profile, bool debug) { if (profile != PROFILE_COMPAT && - profile != PROFILE_CORE) { + profile != PROFILE_CORE && + profile != PROFILE_ES2) { return NULL; } - if (profile == PROFILE_CORE) { + switch (profile) + { + case PROFILE_CORE: std::cerr << "warning: ignoring OpenGL core profile request\n"; + break; + + case PROFILE_ES2: + std::cerr << "warning: ignoring OpenGL ES 2.0 profile request\n"; + break; } return new WglContext(visual, profile, static_cast(shareContext));