getteximage: Return correct error value when texure object is not found
authorEduardo Lima Mitev <elima@igalia.com>
Wed, 15 Feb 2017 11:14:40 +0000 (12:14 +0100)
committerEduardo Lima Mitev <elima@igalia.com>
Wed, 15 Feb 2017 18:37:21 +0000 (19:37 +0100)
glGetTextureSubImage() and glGetCompressedTextureSubImage() are currently
returning INVALID_OPERATION error when the passed texture argument does not
correspond to an existing texture object. However, the error should be
INVALID_VALUE instead. From OpenGL 4.5 spec PDF, section '8.11. Texture
Queries', page 236:

    "An INVALID_VALUE error is generated if texture is not the name of
     an existing texture object."

Same wording applies to the compressed version.

The INVALID_OPERATION error is coming from the call to
_mesa_lookup_texture_err(). This patch uses _mesa_lookup_texture() instead
and emits the correct error in the caller.

Fixes: GL45-CTS.get_texture_sub_image.errors_test
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/mesa/main/texgetimage.c

index b0ced1eac0f87c02f0574b5465fdd3a189618890..c0c50b0518bf71544a43d2b51e77109627724964 100644 (file)
@@ -1459,9 +1459,10 @@ _mesa_GetTextureSubImage(GLuint texture, GLint level,
    GET_CURRENT_CONTEXT(ctx);
    static const char *caller = "glGetTextureSubImage";
    struct gl_texture_object *texObj =
-      _mesa_lookup_texture_err(ctx, texture, caller);
+      _mesa_lookup_texture(ctx, texture);
 
    if (!texObj) {
+      _mesa_error(ctx, GL_INVALID_VALUE, "%s(texture)", caller);
       return;
    }
 
@@ -1775,8 +1776,9 @@ _mesa_GetCompressedTextureSubImage(GLuint texture, GLint level,
    static const char *caller = "glGetCompressedTextureImage";
    struct gl_texture_object *texObj;
 
-   texObj = _mesa_lookup_texture_err(ctx, texture, caller);
+   texObj = _mesa_lookup_texture(ctx, texture);
    if (!texObj) {
+      _mesa_error(ctx, GL_INVALID_VALUE, "%s(texture)", caller);
       return;
    }