summaryrefslogtreecommitdiffstats
path: root/opengl/libs/EGL/eglApi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'opengl/libs/EGL/eglApi.cpp')
-rw-r--r--opengl/libs/EGL/eglApi.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/opengl/libs/EGL/eglApi.cpp b/opengl/libs/EGL/eglApi.cpp
index cdec565..2f6bc79 100644
--- a/opengl/libs/EGL/eglApi.cpp
+++ b/opengl/libs/EGL/eglApi.cpp
@@ -462,15 +462,32 @@ EGLSurface eglCreateWindowSurface( EGLDisplay dpy, EGLConfig config,
// modify the EGLconfig's format before setting the native window's
// format.
+#ifdef USE_BGRA_8888
+ // by default, just pick BGRA_8888
+ EGLint format = HAL_PIXEL_FORMAT_BGRA_8888;
+#else
// by default, just pick RGBA_8888
EGLint format = HAL_PIXEL_FORMAT_RGBA_8888;
+#endif
android_dataspace dataSpace = HAL_DATASPACE_UNKNOWN;
+#if WORKAROUND_BUG_10194508
+ if (!cnx->egl.eglGetConfigAttrib(iDpy, config, EGL_NATIVE_VISUAL_ID,
+ &format)) {
+ ALOGE("eglGetConfigAttrib(EGL_NATIVE_VISUAL_ID) failed: %#x",
+ eglGetError());
+ format = 0;
+ }
+#else
EGLint a = 0;
cnx->egl.eglGetConfigAttrib(iDpy, config, EGL_ALPHA_SIZE, &a);
if (a > 0) {
// alpha-channel requested, there's really only one suitable format
+#ifdef USE_BGRA_8888
+ format = HAL_PIXEL_FORMAT_BGRA_8888;
+#else
format = HAL_PIXEL_FORMAT_RGBA_8888;
+#endif
} else {
EGLint r, g, b;
r = g = b = 0;
@@ -484,6 +501,7 @@ EGLSurface eglCreateWindowSurface( EGLDisplay dpy, EGLConfig config,
format = HAL_PIXEL_FORMAT_RGBX_8888;
}
}
+#endif
// now select a corresponding sRGB format if needed
if (attrib_list && dp->haveExtension("EGL_KHR_gl_colorspace")) {