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