Restore support for BGRA formats.
Change-Id: I3a239325ed802e9188839c1c743d45930643c273
Reviewed-on: https://swiftshader-review.googlesource.com/14608
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/OpenGL/libGLESv2/Framebuffer.cpp b/src/OpenGL/libGLESv2/Framebuffer.cpp
index 810771b..9b9c78b 100644
--- a/src/OpenGL/libGLESv2/Framebuffer.cpp
+++ b/src/OpenGL/libGLESv2/Framebuffer.cpp
@@ -499,6 +499,9 @@
{
switch(colorbuffer->getFormat())
{
+ case GL_BGRA8_EXT: return GL_BGRA_EXT;
+ case GL_BGRA4_ANGLE: return GL_BGRA_EXT;
+ case GL_BGR5_A1_ANGLE: return GL_BGRA_EXT;
case GL_RGBA4: return GL_RGBA;
case GL_RGB5_A1: return GL_RGBA;
case GL_RGBA8: return GL_RGBA;
@@ -559,8 +562,11 @@
{
switch(colorbuffer->getFormat())
{
- case GL_RGBA4: return GL_UNSIGNED_BYTE;
- case GL_RGB5_A1: return GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT;
+ case GL_BGRA8_EXT: return GL_UNSIGNED_BYTE;
+ case GL_BGRA4_ANGLE: return GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT;
+ case GL_BGR5_A1_ANGLE: return GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT;
+ case GL_RGBA4: return GL_UNSIGNED_SHORT_4_4_4_4;
+ case GL_RGB5_A1: return GL_UNSIGNED_SHORT_5_5_5_1;
case GL_RGBA8: return GL_UNSIGNED_BYTE;
case GL_RGB565: return GL_UNSIGNED_SHORT_5_6_5;
case GL_RGB8: return GL_UNSIGNED_BYTE;
diff --git a/src/OpenGL/libGLESv2/Renderbuffer.h b/src/OpenGL/libGLESv2/Renderbuffer.h
index feb8f9e..c7719b5 100644
--- a/src/OpenGL/libGLESv2/Renderbuffer.h
+++ b/src/OpenGL/libGLESv2/Renderbuffer.h
@@ -27,6 +27,11 @@
namespace es2
{
+// Sized internal formats corresponding to GL_BGRA_EXT/GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT and
+// GL_BGRA_EXT/GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT format/type combinations, respectively.
+const GLint GL_BGRA4_ANGLE = 0x6ABC;
+const GLint GL_BGR5_A1_ANGLE = 0x6ABD;
+
class Texture2D;
class Texture3D;
class TextureCubeMap;
diff --git a/src/OpenGL/libGLESv2/libGLESv2.cpp b/src/OpenGL/libGLESv2/libGLESv2.cpp
index f612a63..f2f6410 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -2280,11 +2280,6 @@
return error(GL_INVALID_ENUM);
}
- if(texture->isCompressed(target, 0) || texture->isDepth(target, 0))
- {
- return error(GL_INVALID_OPERATION);
- }
-
if(!IsMipmappable(texture->getFormat(target, 0), clientVersion))
{
return error(GL_INVALID_OPERATION);
@@ -4690,7 +4685,7 @@
}
if(samples > es2::IMPLEMENTATION_MAX_SAMPLES ||
- (sw::Surface::isNonNormalizedInteger(es2sw::ConvertRenderbufferFormat(internalformat)) && samples > 0))
+ (IsNonNormalizedInteger(internalformat) && samples > 0))
{
return error(GL_INVALID_OPERATION);
}
diff --git a/src/OpenGL/libGLESv2/utilities.cpp b/src/OpenGL/libGLESv2/utilities.cpp
index a26edce..1903e3d 100644
--- a/src/OpenGL/libGLESv2/utilities.cpp
+++ b/src/OpenGL/libGLESv2/utilities.cpp
@@ -44,9 +44,6 @@
FormatMap BuildFormatMap()
{
- static const GLint GL_BGRA4_ANGLEX = 0x6ABC;
- static const GLint GL_BGR5_A1_ANGLEX = 0x6ABD;
-
FormatMap map;
// | Format | Type | Internal format |
@@ -123,8 +120,8 @@
InsertFormatMapping(&map, GL_ALPHA, GL_HALF_FLOAT_OES, GL_ALPHA16F_EXT);
InsertFormatMapping(&map, GL_BGRA_EXT, GL_UNSIGNED_BYTE, GL_BGRA8_EXT);
- InsertFormatMapping(&map, GL_BGRA_EXT, GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT, GL_BGRA4_ANGLEX);
- InsertFormatMapping(&map, GL_BGRA_EXT, GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT, GL_BGR5_A1_ANGLEX);
+ InsertFormatMapping(&map, GL_BGRA_EXT, GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT, GL_BGRA4_ANGLE);
+ InsertFormatMapping(&map, GL_BGRA_EXT, GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT, GL_BGR5_A1_ANGLE);
InsertFormatMapping(&map, GL_SRGB_EXT, GL_UNSIGNED_BYTE, GL_SRGB8);
InsertFormatMapping(&map, GL_SRGB_ALPHA_EXT, GL_UNSIGNED_BYTE, GL_SRGB8_ALPHA8);