Fix initial rbo state.
Renderbuffer objects are defined to have an initial internalformat of
GL_RGBA4, but the red/green/blue/alpha bits are 0. This inconsistency
is resolved by setting the internalformat to GL_NONE but reporting
GL_RGBA4 when queried.
Change-Id: Ie9a342c05eaa23f81773b37ebb942ca2e5b1addb
Reviewed-on: https://swiftshader-review.googlesource.com/14588
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/libGLESv2.cpp b/src/OpenGL/libGLESv2/libGLESv2.cpp
index 5198ada..f612a63 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -3349,7 +3349,12 @@
{
case GL_RENDERBUFFER_WIDTH: *params = renderbuffer->getWidth(); break;
case GL_RENDERBUFFER_HEIGHT: *params = renderbuffer->getHeight(); break;
- case GL_RENDERBUFFER_INTERNAL_FORMAT: *params = renderbuffer->getFormat(); break;
+ case GL_RENDERBUFFER_INTERNAL_FORMAT:
+ {
+ GLint internalformat = renderbuffer->getFormat();
+ *params = (internalformat == GL_NONE) ? GL_RGBA4 : internalformat;
+ }
+ break;
case GL_RENDERBUFFER_RED_SIZE: *params = renderbuffer->getRedSize(); break;
case GL_RENDERBUFFER_GREEN_SIZE: *params = renderbuffer->getGreenSize(); break;
case GL_RENDERBUFFER_BLUE_SIZE: *params = renderbuffer->getBlueSize(); break;