mesa: Add error condition for integer formats in glGetTexImage()
authorAnuj Phogat <anuj.phogat@gmail.com>
Wed, 19 Mar 2014 00:01:19 +0000 (17:01 -0700)
committerAnuj Phogat <anuj.phogat@gmail.com>
Thu, 17 Apr 2014 01:37:06 +0000 (18:37 -0700)
OpenGL 4.0 spec, page 306 suggests an INVALID_OPERATION in glGetTexImage
if :
   "format is one of the integer formats in table 3.3 and the internal
    format of the texture image is not integer, or format is not one of
    the integer formats in table 3.3 and the internal format is integer."

V2: Use helper function _mesa_is_format_integer()

Cc: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
src/mesa/main/texgetimage.c

index daabf2e81380216e3dabc76dca6cc8d7a9f374d9..2beb0abe6d2d7502b96660ddae8591838caded89 100644 (file)
@@ -853,6 +853,11 @@ getteximage_error_check(struct gl_context *ctx, GLenum target, GLint level,
       _mesa_error(ctx, GL_INVALID_OPERATION, "glGetTexImage(format mismatch)");
       return GL_TRUE;
    }
+   else if (_mesa_is_enum_format_integer(format) !=
+            _mesa_is_format_integer(texImage->TexFormat)) {
+      _mesa_error(ctx, GL_INVALID_OPERATION, "glGetTexImage(format mismatch)");
+      return GL_TRUE;
+   }
 
    if (!_mesa_validate_pbo_access(dimensions, &ctx->Pack, texImage->Width,
                                   texImage->Height, texImage->Depth,