OSDN Git Service

Validate renderability of texture formats.
authorNicolas Capens <capn@google.com>
Thu, 14 Apr 2016 18:53:24 +0000 (14:53 -0400)
committerNicolas Capens <capn@google.com>
Thu, 14 Apr 2016 21:01:16 +0000 (21:01 +0000)
Change-Id: I49c0f7b78a131c0d78c2cfb207bb3019b2b93a15
Reviewed-on: https://swiftshader-review.googlesource.com/5129
Reviewed-by: Alexis Hétu <sugoi@google.com>
Tested-by: Nicolas Capens <capn@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
src/OpenGL/libGLES_CM/Framebuffer.cpp
src/OpenGL/libGLESv2/Framebuffer.cpp
src/OpenGL/libGLESv2/utilities.cpp

index 2efdca6..25db3d6 100644 (file)
@@ -251,7 +251,7 @@ GLenum Framebuffer::completeness(int &width, int &height, int &samples)
 
                if(mColorbufferType == GL_RENDERBUFFER_OES)
                {
-                       if(!es1::IsColorRenderable(colorbuffer->getFormat()))
+                       if(!IsColorRenderable(colorbuffer->getFormat()))
                        {
                                return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES;
                        }
@@ -260,15 +260,12 @@ GLenum Framebuffer::completeness(int &width, int &height, int &samples)
                {
                        GLenum format = colorbuffer->getFormat();
 
-                       if(IsCompressed(format) ||
-                          format == GL_ALPHA ||
-                          format == GL_LUMINANCE ||
-                          format == GL_LUMINANCE_ALPHA)
+                       if(!IsColorRenderable(format))
                        {
-                               return GL_FRAMEBUFFER_UNSUPPORTED_OES;
+                               return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES;
                        }
 
-                       if(es1::IsDepthTexture(format) || es1::IsStencilTexture(format))
+                       if(IsDepthTexture(format) || IsStencilTexture(format))
                        {
                                return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES;
                        }
index 9e8b22b..f4c9a76 100644 (file)
@@ -330,7 +330,7 @@ GLenum Framebuffer::completeness(int &width, int &height, int &samples)
 
                        if(IsRenderbuffer(mColorbufferType[i]))
                        {
-                               if(!es2::IsColorRenderable(colorbuffer->getFormat(), egl::getClientVersion()))
+                               if(!IsColorRenderable(colorbuffer->getFormat(), egl::getClientVersion()))
                                {
                                        return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
                                }
@@ -339,15 +339,12 @@ GLenum Framebuffer::completeness(int &width, int &height, int &samples)
                        {
                                GLenum format = colorbuffer->getFormat();
 
-                               if(IsCompressed(format, egl::getClientVersion()) ||
-                                       format == GL_ALPHA ||
-                                       format == GL_LUMINANCE ||
-                                       format == GL_LUMINANCE_ALPHA)
+                               if(!IsColorRenderable(format, egl::getClientVersion()))
                                {
-                                       return GL_FRAMEBUFFER_UNSUPPORTED;
+                                       return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
                                }
 
-                               if(es2::IsDepthTexture(format) || es2::IsStencilTexture(format))
+                               if(IsDepthTexture(format) || IsStencilTexture(format))
                                {
                                        return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
                                }
@@ -369,7 +366,6 @@ GLenum Framebuffer::completeness(int &width, int &height, int &samples)
                        {
                                return GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE;
                        }
-
                }
        }
 
index d308fdc..9288e2a 100644 (file)
@@ -998,6 +998,7 @@ namespace es2
                case GL_RG16F:\r
                case GL_RGB16F:\r
                case GL_RGBA16F:\r
+               case GL_BGRA8_EXT:\r
                        return true;\r
                case GL_R8:\r
                case GL_R8UI:\r