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