aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexis Hetu <sugoi@google.com>2018-01-18 16:17:54 -0500
committerAlexis Hétu <sugoi@google.com>2018-03-14 20:06:47 +0000
commit2f113e3e8d420ab760fb697196f202765d78f7c6 (patch)
treeee8c2e93de7b2bfd1b5ccc0ebd2a775dbb7837e5
parentf9b80fe143f8bf6e27203b43f4eb5c283222af70 (diff)
downloadswiftshader-2f113e3e8d420ab760fb697196f202765d78f7c6.tar.gz
GL_CHROMIUM_color_buffer_float_rgba extension support
GL_CHROMIUM_color_buffer_float_rgba (OpenGL ES 2.0) is a subset of GL_EXT_color_buffer_float (OpenGL ES 3.0), which SwiftShader already supports. Fixes 1 webgl conformance tests: conformance/extensions/oes-texture-float.html Change-Id: Ic1451187db219af74ba41fa7634bd5bcb6fb0b44 Reviewed-on: https://swiftshader-review.googlesource.com/16470 Tested-by: Alexis Hétu <sugoi@google.com> Reviewed-by: Nicolas Capens <nicolascapens@google.com>
-rw-r--r--src/OpenGL/libGLESv2/Context.cpp1
-rw-r--r--src/OpenGL/libGLESv2/libGLESv2.cpp3
2 files changed, 3 insertions, 1 deletions
diff --git a/src/OpenGL/libGLESv2/Context.cpp b/src/OpenGL/libGLESv2/Context.cpp
index cc2dbc697..f495e8a6d 100644
--- a/src/OpenGL/libGLESv2/Context.cpp
+++ b/src/OpenGL/libGLESv2/Context.cpp
@@ -4400,6 +4400,7 @@ const GLubyte *Context::getExtensions(GLuint index, GLuint *numExt) const
"GL_ANGLE_texture_compression_dxt3",
"GL_ANGLE_texture_compression_dxt5",
"GL_APPLE_texture_format_BGRA8888",
+ "GL_CHROMIUM_color_buffer_float_rgba", // A subset of EXT_color_buffer_float on top of OpenGL ES 2.0
"GL_CHROMIUM_texture_filtering_hint",
"GL_NV_fence",
"GL_NV_framebuffer_blit",
diff --git a/src/OpenGL/libGLESv2/libGLESv2.cpp b/src/OpenGL/libGLESv2/libGLESv2.cpp
index 94107ab23..4be027381 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -4964,7 +4964,8 @@ void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width,
GLint clientVersion = context->getClientVersion();
if(clientVersion < 3)
{
- if(internalformat != (GLint)format)
+ if((internalformat != (GLint)format) &&
+ !((type == GL_FLOAT) && (format == GL_RGBA) && (internalformat == GL_RGBA32F))) // CHROMIUM_color_buffer_float_rgba
{
return error(GL_INVALID_OPERATION);
}