diff options
author | Juan A. Suarez Romero <[email protected]> | 2018-04-05 09:00:46 +0000 |
---|---|---|
committer | Juan A. Suarez Romero <[email protected]> | 2018-04-13 17:47:27 +0200 |
commit | 8d411eb6b36cb1d8c5e8582d9c6cf30f80859027 (patch) | |
tree | d322f529533dcb558da32d2cbcde3ddc0a007c5c /src/mesa | |
parent | 42891dbaa12a67162ea219fface71726696971e2 (diff) |
gettextureimage: verify cube map is complete
According to OpenGL 4.6 spec, section 8.11.4 ("Texture Image Queries"),
relative to errors for GetTexImage, GetTextureImage, and GetnTexImage:
"An INVALID_OPERATION error is generated by GetTextureImage if the
effective target is TEXTURE_CUBE_MAP or TEXTURE_CUBE_MAP_ARRAY, and
the texture object is not cube complete or cube array complete,
respectively."
This fixes arb_get_texture_sub_image piglit tests.
Signed-off-by: Juan A. Suarez Romero <[email protected]>
Reviewed-by: Iago Toral Quiroga <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/main/texgetimage.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c index fbdbcd90a7d..85d0ffd4770 100644 --- a/src/mesa/main/texgetimage.c +++ b/src/mesa/main/texgetimage.c @@ -982,15 +982,20 @@ dimensions_error_check(struct gl_context *ctx, "%s(zoffset + depth = %d)", caller, zoffset + depth); return true; } - /* check that the range of faces exist */ - for (i = 0; i < depth; i++) { - GLenum face = GL_TEXTURE_CUBE_MAP_POSITIVE_X + zoffset + i; - if (!_mesa_select_tex_image(texObj, face, level)) { - /* non-existant face */ - _mesa_error(ctx, GL_INVALID_OPERATION, - "%s(missing cube face)", caller); - return true; - } + /* According to OpenGL 4.6 spec, section 8.11.4 ("Texture Image Queries"): + * + * "An INVALID_OPERATION error is generated by GetTextureImage if the + * effective target is TEXTURE_CUBE_MAP or TEXTURE_CUBE_MAP_ARRAY , + * and the texture object is not cube complete or cube array complete, + * respectively." + * + * This applies also to GetTextureSubImage, GetCompressedTexImage, + * GetCompressedTextureImage, and GetnCompressedTexImage. + */ + if (!_mesa_cube_complete(texObj)) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "%s(cube incomplete)", caller); + return true; } break; default: |