summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/texgetimage.c
diff options
context:
space:
mode:
authorJuan A. Suarez Romero <[email protected]>2018-04-05 09:00:46 +0000
committerJuan A. Suarez Romero <[email protected]>2018-04-13 17:47:27 +0200
commit8d411eb6b36cb1d8c5e8582d9c6cf30f80859027 (patch)
treed322f529533dcb558da32d2cbcde3ddc0a007c5c /src/mesa/main/texgetimage.c
parent42891dbaa12a67162ea219fface71726696971e2 (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/main/texgetimage.c')
-rw-r--r--src/mesa/main/texgetimage.c23
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: