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:
@@ -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:
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user