Expose GL_APPLE_texture_format_BGRA8888.
GL_APPLE_texture_format_BGRA8888 is similar to
GL_EXT_texture_format_BGRA8888 but explicitly mentions texture storage
support for OpenGL ES 3.0. It adds the format as texture-only (i.e.
non-renderable), but GL_EXT_texture_format_BGRA8888 makes it color-
renderable.
Also allow a sized internalformat of GL_BGRA8_EXT. Previously we were
only allowing unsized internalformat GL_BGRA.
Change-Id: Ieb3a4f85847035392445d0a924591f5531e424d9
Reviewed-on: https://swiftshader-review.googlesource.com/16069
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/OpenGL/libGLESv2/Context.cpp b/src/OpenGL/libGLESv2/Context.cpp
index 7b8a666..6f16f82 100644
--- a/src/OpenGL/libGLESv2/Context.cpp
+++ b/src/OpenGL/libGLESv2/Context.cpp
@@ -4404,6 +4404,7 @@
"GL_ANGLE_texture_compression_dxt3",
"GL_ANGLE_texture_compression_dxt5",
#endif
+ "GL_APPLE_texture_format_BGRA8888",
"GL_CHROMIUM_texture_filtering_hint",
"GL_NV_fence",
"GL_NV_framebuffer_blit",
diff --git a/src/OpenGL/libGLESv2/utilities.cpp b/src/OpenGL/libGLESv2/utilities.cpp
index 27b1b5b..2f13d3f 100644
--- a/src/OpenGL/libGLESv2/utilities.cpp
+++ b/src/OpenGL/libGLESv2/utilities.cpp
@@ -997,7 +997,7 @@
}
break;
case GL_BGRA_EXT:
- if(type != GL_UNSIGNED_BYTE) // GL_APPLE_texture_format_BGRA8888
+ if(type != GL_UNSIGNED_BYTE) // GL_APPLE_texture_format_BGRA8888 / GL_EXT_texture_format_BGRA8888
{
return GL_INVALID_OPERATION;
}
@@ -1136,9 +1136,8 @@
switch(type)
{
case GL_UNSIGNED_BYTE: VALIDATE_INTERNALFORMAT(GL_LUMINANCE8_ALPHA8_EXT)
- case GL_HALF_FLOAT_OES:
- case GL_FLOAT:
- break;
+ case GL_HALF_FLOAT_OES: // Invalid, only exists as unsized.
+ case GL_FLOAT: // Invalid, only exists as unsized.
default:
return GL_INVALID_OPERATION;
}
@@ -1147,9 +1146,8 @@
switch(type)
{
case GL_UNSIGNED_BYTE: VALIDATE_INTERNALFORMAT(GL_LUMINANCE8_EXT)
- case GL_HALF_FLOAT_OES:
- case GL_FLOAT:
- break;
+ case GL_HALF_FLOAT_OES: // Invalid, only exists as unsized.
+ case GL_FLOAT: // Invalid, only exists as unsized.
default:
return GL_INVALID_OPERATION;
}
@@ -1158,17 +1156,17 @@
switch(type)
{
case GL_UNSIGNED_BYTE: VALIDATE_INTERNALFORMAT(GL_ALPHA8_EXT)
- case GL_HALF_FLOAT_OES:
- case GL_FLOAT:
- break;
+ case GL_HALF_FLOAT_OES: // Invalid, only exists as unsized.
+ case GL_FLOAT: // Invalid, only exists as unsized.
default:
return GL_INVALID_OPERATION;
}
break;
- case GL_BGRA_EXT:
- if(type != GL_UNSIGNED_BYTE)
+ case GL_BGRA_EXT: // GL_APPLE_texture_format_BGRA8888
+ switch(type)
{
- return GL_INVALID_OPERATION;
+ case GL_UNSIGNED_BYTE: VALIDATE_INTERNALFORMAT(GL_BGRA8_EXT)
+ default: return GL_INVALID_OPERATION;
}
break;
default:
@@ -1242,7 +1240,7 @@
case GL_RG32F:
case GL_RGB32F:
case GL_RGBA32F:
- case GL_BGRA8_EXT:
+ case GL_BGRA8_EXT: // GL_EXT_texture_format_BGRA8888
return true;
case GL_R8UI:
case GL_R8I: