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 <jasuarez@igalia.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user