From: Anthony Pesch <ape...@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 <ahuil...@nvidia.com>
Reviewed-by: Juan A. Suarez <jasua...@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

_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to