Fix framebuffer attachment parameter query error.
OpenGL ES 2.0 expects GL_INVALID_OPERATION when querying default framebuffer
attachment parameters.
Change-Id: Ie0e0c35ad835e06b16c7aaaea48f7ec7eb64c663
Reviewed-on: https://swiftshader-review.googlesource.com/5124
Tested-by: Nicolas Capens <capn@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/libGLESv2/libGLESv2.cpp b/src/OpenGL/libGLESv2/libGLESv2.cpp
index ec6a512..28838c8 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -2730,30 +2730,33 @@
if(context)
{
- if(target != GL_FRAMEBUFFER && target != GL_DRAW_FRAMEBUFFER_ANGLE && target != GL_READ_FRAMEBUFFER_ANGLE)
+ if(target != GL_FRAMEBUFFER && target != GL_DRAW_FRAMEBUFFER && target != GL_READ_FRAMEBUFFER)
{
return error(GL_INVALID_ENUM);
}
GLint clientVersion = context->getClientVersion();
- es2::Framebuffer *framebuffer = NULL;
- if(target == GL_READ_FRAMEBUFFER_ANGLE)
+ es2::Framebuffer *framebuffer = nullptr;
+ if(target == GL_READ_FRAMEBUFFER)
{
if(context->getReadFramebufferName() == 0)
{
- switch(attachment)
+ if(clientVersion < 3)
{
- case GL_BACK:
- case GL_DEPTH:
- case GL_STENCIL:
- if(clientVersion >= 3)
+ return error(GL_INVALID_OPERATION);
+ }
+ else
+ {
+ switch(attachment)
{
+ case GL_BACK:
+ case GL_DEPTH:
+ case GL_STENCIL:
break;
+ default:
+ return error(GL_INVALID_ENUM);
}
- // fall through
- default:
- return error(GL_INVALID_ENUM);
}
}
@@ -2763,18 +2766,21 @@
{
if(context->getDrawFramebufferName() == 0)
{
- switch(attachment)
+ if(clientVersion < 3)
{
- case GL_BACK:
- case GL_DEPTH:
- case GL_STENCIL:
- if(clientVersion >= 3)
+ return error(GL_INVALID_OPERATION);
+ }
+ else
+ {
+ switch(attachment)
{
+ case GL_BACK:
+ case GL_DEPTH:
+ case GL_STENCIL:
break;
+ default:
+ return error(GL_INVALID_ENUM);
}
- // fall through
- default:
- return error(GL_INVALID_ENUM);
}
}