[Piglit] [PATCH 3/3] arb_get_texture_sub_image: update cube map tests to make textures cube complete
Anthony Pesch
inolen at gmail.com
Wed Apr 11 16:45:09 UTC 2018
From: Anthony Pesch <apesch at nvidia.com>
Update cube map tests to ensure cube map textures are cube complete before querying
them. Querying a cube map which is not cube complete should set INVALID_OPERATION
as per the OpenGL 4.6 Core spec:
"An INVALID_OPERATION error is generated 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."
Reviewed-by: Arthur Huillet <ahuillet at nvidia.com>
Reviewed-by: Juan A. Suarez <jasuarez at igalia.com>
---
tests/spec/arb_get_texture_sub_image/errors.c | 10 +++++++---
tests/spec/arb_get_texture_sub_image/get.c | 16 ++++++++++------
2 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/tests/spec/arb_get_texture_sub_image/errors.c b/tests/spec/arb_get_texture_sub_image/errors.c
index 1e7b17115..4b99d1cc2 100644
--- a/tests/spec/arb_get_texture_sub_image/errors.c
+++ b/tests/spec/arb_get_texture_sub_image/errors.c
@@ -253,16 +253,20 @@ test_cubemap_faces(void)
0, GL_RGBA, 8, 8, 0, GL_RGBA, GL_FLOAT, NULL);
}
- /* try to get all six cube faces, should fail */
+ /* try to query incomplete cube map, should fail */
glGetTextureSubImage(tex, 0,
0, 0, 0,
- 8, 8, 6,
+ 8, 8, 5,
GL_RGBA, GL_UNSIGNED_BYTE,
sizeof(results), results);
if (!piglit_check_gl_error(GL_INVALID_OPERATION))
pass = false;
- /* try to get five cube faces, should pass */
+ /* upload final face */
+ glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + 5,
+ 0, GL_RGBA, 8, 8, 0, GL_RGBA, GL_FLOAT, NULL);
+
+ /* try to query complete cube map, should now pass */
glGetTextureSubImage(tex, 0,
0, 0, 0,
8, 8, 5,
diff --git a/tests/spec/arb_get_texture_sub_image/get.c b/tests/spec/arb_get_texture_sub_image/get.c
index 8aa4c92e1..4abf3a596 100644
--- a/tests/spec/arb_get_texture_sub_image/get.c
+++ b/tests/spec/arb_get_texture_sub_image/get.c
@@ -157,12 +157,16 @@ test_getsubimage(GLenum target,
GL_RGBA, GL_UNSIGNED_BYTE, texData);
break;
case GL_TEXTURE_CUBE_MAP:
- /* only set +Y face */
- glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
- level, intFormat,
- mip_width, mip_height, 0,
- GL_RGBA, GL_UNSIGNED_BYTE,
- texData);
+ /* specify dimensions and format for all faces to make texture cube complete,
+ but specify data for only the +Y face as it is the only one read back */
+ for (i = 0; i < 6; i++) {
+ GLubyte *faceData = i == 2 ? texData : NULL;
+ glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i,
+ level, intFormat,
+ mip_width, mip_height, 0,
+ GL_RGBA, GL_UNSIGNED_BYTE,
+ faceData);
+ }
break;
}
}
--
2.13.6
More information about the Piglit
mailing list