mesa: Enable GL_RGB/GL_RGBA in GLES3 glGetInternalformativ

Removes commit 7894278 changes and moves fix to _mesa_GetInternalformativ().
The original commit enabled the GL_RGB and GL_RGBA unsized internal formats
as valid for render buffers in GLES3, but this is incorrect. They should
have only been enabled for GetInternalformativ()

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=88079
Reviewed-by: Chad Versace <chad.versace@intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
Mike Mason
2015-01-12 14:37:28 -08:00
committed by Chad Versace
parent 876550ff97
commit 90d2a85193
2 changed files with 15 additions and 7 deletions
-6
View File
@@ -1455,9 +1455,6 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat)
case GL_RGB8:
return GL_RGB;
case GL_RGB:
if (_mesa_is_gles3(ctx))
return GL_RGB;
/* fallthrough */
case GL_R3_G3_B2:
case GL_RGB4:
case GL_RGB5:
@@ -1472,9 +1469,6 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat)
case GL_RGBA8:
return GL_RGBA;
case GL_RGBA:
if (_mesa_is_gles3(ctx))
return GL_RGBA;
/* fallthrough */
case GL_RGBA2:
case GL_RGBA12:
case GL_RGBA16:
+15 -1
View File
@@ -89,8 +89,22 @@ _mesa_GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname,
* "If the <internalformat> parameter to GetInternalformativ is not
* color-, depth- or stencil-renderable, then an INVALID_ENUM error is
* generated."
*
* Page 243 of the GLES 3.0.4 spec says this for GetInternalformativ:
*
* "internalformat must be color-renderable, depth-renderable or
* stencilrenderable (as defined in section 4.4.4)."
*
* Section 4.4.4 on page 212 of the same spec says:
*
* "An internal format is color-renderable if it is one of the
* formats from table 3.13 noted as color-renderable or if it
* is unsized format RGBA or RGB."
*
* Therefore, we must accept GL_RGB and GL_RGBA here.
*/
if (_mesa_base_fbo_format(ctx, internalformat) == 0) {
if (internalformat != GL_RGB && internalformat != GL_RGBA &&
_mesa_base_fbo_format(ctx, internalformat) == 0) {
_mesa_error(ctx, GL_INVALID_ENUM,
"glGetInternalformativ(internalformat=%s)",
_mesa_lookup_enum_by_nr(internalformat));