2
0
Эх сурвалжийг харах

Fixed EGL setup for Tegra 3 devices.
Tegra 3 devices only support 16 bit depth buffers, not 24. I've changed the code to fall back to 16 bit if 24 is not supported.

Darryl Gough 13 жил өмнө
parent
commit
946372f98d

+ 13 - 2
gameplay/src/PlatformAndroid.cpp

@@ -93,7 +93,7 @@ static EGLenum checkErrorEGL(const char* msg)
 static bool initEGL()
 static bool initEGL()
 {
 {
     // Hard-coded to 32-bit/OpenGL ES 2.0.
     // Hard-coded to 32-bit/OpenGL ES 2.0.
-    const EGLint eglConfigAttrs[] =
+    EGLint eglConfigAttrs[] =
     {
     {
         EGL_RED_SIZE,           8,
         EGL_RED_SIZE,           8,
         EGL_GREEN_SIZE,         8,
         EGL_GREEN_SIZE,         8,
@@ -135,11 +135,22 @@ static bool initEGL()
             goto error;
             goto error;
         }
         }
     
     
-        if (eglChooseConfig(__eglDisplay, eglConfigAttrs, &__eglConfig, 1, &eglConfigCount) != EGL_TRUE || eglConfigCount == 0)
+        if (eglChooseConfig(__eglDisplay, eglConfigAttrs, &__eglConfig, 1, &eglConfigCount) != EGL_TRUE)
         {
         {
             checkErrorEGL("eglChooseConfig");
             checkErrorEGL("eglChooseConfig");
             goto error;
             goto error;
         }
         }
+        
+        if (eglConfigCount == 0)
+        {
+            // try 16 bit depth buffer instead
+            eglConfigAttrs[9] = 16;
+            if (eglChooseConfig(__eglDisplay, eglConfigAttrs, &__eglConfig, 1, &eglConfigCount) != EGL_TRUE || eglConfigCount == 0)
+            {
+                checkErrorEGL("eglChooseConfig");
+                goto error;
+            }
+        }
     
     
         __eglContext = eglCreateContext(__eglDisplay, __eglConfig, EGL_NO_CONTEXT, eglContextAttrs);
         __eglContext = eglCreateContext(__eglDisplay, __eglConfig, EGL_NO_CONTEXT, eglContextAttrs);
         if (__eglContext == EGL_NO_CONTEXT)
         if (__eglContext == EGL_NO_CONTEXT)