]> git.cworth.org Git - apitrace/commitdiff
glretrace: GLX and WGL support for ES2/EGL traces.
authorNigel Stewart <nigels@users.sourceforge.net>
Fri, 12 Jul 2013 14:30:41 +0000 (09:30 -0500)
committerJosé Fonseca <jfonseca@vmware.com>
Sat, 20 Jul 2013 13:58:32 +0000 (14:58 +0100)
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.

retrace/glws_glx.cpp
retrace/glws_wgl.cpp

index 1494d060d7245cae687637db7c5452cc6a6c2f2b..5de845085cdc28350192dc47587b5571a0b13a33 100644 (file)
@@ -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.
index 9244b799d4ae2566bc5ee7fd92577be40c47a6e9..47b34a9413d1239d3bca8842f3b964be1a076286 100644 (file)
@@ -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<WglContext *>(shareContext));