[Mesa-dev] [PATCH] Mesa: Fix error code for glTexImage3D in GLES

Randy Xu randy.xu at intel.com
Wed Dec 21 01:05:27 UTC 2016


>From the OGLES 3.2 spec, Section 8.5 Texture Image Specification, page 158:
 "An INVALID_OPERATION error is generated if a combination of
  values for format, type, and internalformat is specified that is
  not listed as a valid combination in tables 8.2 or 8.3."
It means that TexImage3D should return GL_INVALID_OPERATION if the internal
format is DEPTH_COMPONENT, DEPTH_-STENCIL or STENCIL_INDEX.

The current code returns INVALID_ENUM as _mesa_error_check_format_and_type is
also used by glReadPixels and the GL specification defines
 "INVALID_ENUM is generated if format is DEPTH_STENCIL and type is not
  UNSIGNED_INT_24_8 or FLOAT_32_UNSIGNED_INT_24_8_- REV".

This patch only impacts GLES, which can generate GL_INVALID_OPERATION because
glReadPixels cannot be used to read depth or stencil buffer.
Fixes dEQP-GLES3.functional.negative_api.texture.teximage3d.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99076
Signed-off-by: Randy Xu <randy.xu at intel.com>
---
 src/mesa/main/glformats.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c
index a95909c..3070db9 100644
--- a/src/mesa/main/glformats.c
+++ b/src/mesa/main/glformats.c
@@ -2087,6 +2087,13 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx,
          else if (ctx->Extensions.ARB_depth_buffer_float &&
              type == GL_FLOAT_32_UNSIGNED_INT_24_8_REV)
             return GL_NO_ERROR;
+         //From the OpenGL ES 3.2 spec, Section 8.5 Texture Image
+         // Specification, page 158:
+         // An INVALID_OPERATION error is generated if a combination of
+         // values for format, type, and internalformat is specified that
+         // is not listed as a valid combination in tables 8.2 or 8.3.
+         else if (!_mesa_is_desktop_gl(ctx))
+            return GL_INVALID_OPERATION;
          else
             return GL_INVALID_ENUM;
 
-- 
2.7.4



More information about the mesa-dev mailing list