OSDN Git Service

Added floating point formats to glCopyTexImage2D
authorAlexis Hetu <sugoi@google.com>
Wed, 13 Apr 2016 14:30:03 +0000 (10:30 -0400)
committerAlexis Hétu <sugoi@google.com>
Wed, 13 Apr 2016 14:41:51 +0000 (14:41 +0000)
Added floating point formats to validateColorBufferFormat,
which is used by glCopyTexImage2D, since it was a missing
part of the previously added floating point extensions.

From the extension spec:
https://www.khronos.org/registry/gles/extensions/EXT/EXT_color_buffer_half_float.txt
"9. Should CopyTex[Sub]Image be supported for floating-point formats? [...] Yes."

Change-Id: Ie14d8afd352b004e8a2400cfef16facdeab94e33
Reviewed-on: https://swiftshader-review.googlesource.com/5110
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
src/OpenGL/libGLESv2/libGLESv2.cpp

index 19db3b2..ec8a2fa 100644 (file)
@@ -73,7 +73,9 @@ static bool validateColorBufferFormat(GLenum textureFormat, GLenum colorbufferFo
                   colorbufferFormat != GL_RGBA &&\r
                   colorbufferFormat != GL_RGBA4 &&\r
                   colorbufferFormat != GL_RGB5_A1 &&\r
-                  colorbufferFormat != GL_RGBA8_OES)\r
+                  colorbufferFormat != GL_RGBA8_OES &&\r
+                  colorbufferFormat != GL_RGBA16F_EXT &&\r
+                  colorbufferFormat != GL_RGBA32F_EXT)\r
                {\r
                        return error(GL_INVALID_OPERATION, false);\r
                }\r
@@ -86,7 +88,11 @@ static bool validateColorBufferFormat(GLenum textureFormat, GLenum colorbufferFo
                   colorbufferFormat != GL_RGBA &&\r
                   colorbufferFormat != GL_RGBA4 &&\r
                   colorbufferFormat != GL_RGB5_A1 &&\r
-                  colorbufferFormat != GL_RGBA8_OES)\r
+                  colorbufferFormat != GL_RGBA8_OES &&\r
+                  colorbufferFormat != GL_RGB16F_EXT &&\r
+                  colorbufferFormat != GL_RGB32F_EXT &&\r
+                  colorbufferFormat != GL_RGBA16F_EXT &&\r
+                  colorbufferFormat != GL_RGBA32F_EXT)\r
                {\r
                        return error(GL_INVALID_OPERATION, false);\r
                }\r
@@ -96,7 +102,9 @@ static bool validateColorBufferFormat(GLenum textureFormat, GLenum colorbufferFo
                if(colorbufferFormat != GL_RGBA &&\r
                   colorbufferFormat != GL_RGBA4 &&\r
                   colorbufferFormat != GL_RGB5_A1 &&\r
-                  colorbufferFormat != GL_RGBA8_OES)\r
+                  colorbufferFormat != GL_RGBA8_OES &&\r
+                  colorbufferFormat != GL_RGBA16F_EXT &&\r
+                  colorbufferFormat != GL_RGBA32F_EXT)\r
                {\r
                        return error(GL_INVALID_OPERATION, false);\r
                }\r