Set the EGL_NATIVE_VISUAL_ID attribute for Android HAL formats. Bug 25390254 Change-Id: I6ac37912435e2c73f5e905db7c78af7884f0c93c Reviewed-on: https://swiftshader-review.googlesource.com/4187 Tested-by: Nicolas Capens <capn@google.com> Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/libEGL/Config.cpp b/src/OpenGL/libEGL/Config.cpp index 3f290b5..6ee6c96 100644 --- a/src/OpenGL/libEGL/Config.cpp +++ b/src/OpenGL/libEGL/Config.cpp
@@ -18,6 +18,9 @@ #include "common/debug.h" #include <EGL/eglext.h> +#ifdef __ANDROID__ +#include <system/graphics.h> +#endif #include <string.h> #include <algorithm> @@ -33,6 +36,8 @@ mBindToTextureRGB = EGL_FALSE; mBindToTextureRGBA = EGL_FALSE; + mNativeVisualID = 0; + switch(renderTargetFormat) { case sw::FORMAT_A1R5G5B5: @@ -53,6 +58,9 @@ mBlueSize = 8; mAlphaSize = 8; mBindToTextureRGBA = EGL_TRUE; + #ifdef __ANDROID__ + mNativeVisualID = HAL_PIXEL_FORMAT_BGRA_8888; + #endif break; case sw::FORMAT_A8B8G8R8: mRedSize = 8; @@ -60,12 +68,18 @@ mBlueSize = 8; mAlphaSize = 8; mBindToTextureRGBA = EGL_TRUE; + #ifdef __ANDROID__ + mNativeVisualID = HAL_PIXEL_FORMAT_RGBA_8888; + #endif break; case sw::FORMAT_R5G6B5: mRedSize = 5; mGreenSize = 6; mBlueSize = 5; mAlphaSize = 0; + #ifdef __ANDROID__ + mNativeVisualID = HAL_PIXEL_FORMAT_RGB_565; + #endif break; case sw::FORMAT_X8R8G8B8: mRedSize = 8; @@ -73,6 +87,9 @@ mBlueSize = 8; mAlphaSize = 0; mBindToTextureRGB = EGL_TRUE; + #ifdef __ANDROID__ + mNativeVisualID = HAL_PIXEL_FORMAT_BGRA_8888; + #endif break; case sw::FORMAT_X8B8G8R8: mRedSize = 8; @@ -80,6 +97,9 @@ mBlueSize = 8; mAlphaSize = 0; mBindToTextureRGBA = EGL_TRUE; + #ifdef __ANDROID__ + mNativeVisualID = HAL_PIXEL_FORMAT_RGBX_8888; + #endif break; default: UNREACHABLE(renderTargetFormat); // Other formats should not be valid @@ -151,7 +171,6 @@ mMaxSwapInterval = maxInterval; mMinSwapInterval = minInterval; mNativeRenderable = EGL_FALSE; - mNativeVisualID = 0; mNativeVisualType = 0; mRenderableType = EGL_OPENGL_ES_BIT | EGL_OPENGL_ES2_BIT #ifndef __ANDROID__ // Do not allow GLES 3.0 on Android