Some of the error checks were incorrect before.  Per the spec:

1. GL_TEXTURE_BUFFER and GL_TEXTURE_CUBE_MAP_+/-_XYZ are not legal targets
and should be flagged as invalid enums.

2. GL_INVALID_OPERATION should be generated when trying to copy between
compressed/uncompressed formats whose block/texel size do not match.
---
 tests/spec/arb_copy_image/api_errors.c | 23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/tests/spec/arb_copy_image/api_errors.c 
b/tests/spec/arb_copy_image/api_errors.c
index 0ef1eda..6f94d06 100644
--- a/tests/spec/arb_copy_image/api_errors.c
+++ b/tests/spec/arb_copy_image/api_errors.c
@@ -140,7 +140,14 @@ test_simple_errors(GLenum src_target, GLenum dst_target)
                        glCopyImageSubData(src, targets[i], 0, 0, 0, 0,
                                           dst, dst_target, 0, 0, 0, 0,
                                           0, 0, 0);
-                       pass &= piglit_check_gl_error(GL_INVALID_ENUM);
+                        if (targets[i] == GL_TEXTURE_BUFFER ||
+                           (targets[i] >= GL_TEXTURE_CUBE_MAP_POSITIVE_X &&
+                            targets[i] <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z)) {
+                               pass &= piglit_check_gl_error(GL_INVALID_ENUM);
+                       }
+                       else {
+                               pass &= piglit_check_gl_error(GL_INVALID_VALUE);
+                       }
                        if (!pass)
                                return false;
                }
@@ -154,7 +161,14 @@ test_simple_errors(GLenum src_target, GLenum dst_target)
                        glCopyImageSubData(src, src_target, 0, 0, 0, 0,
                                           dst, targets[i], 0, 0, 0, 0,
                                           0, 0, 0);
-                       pass &= piglit_check_gl_error(GL_INVALID_ENUM);
+                        if (targets[i] == GL_TEXTURE_BUFFER ||
+                           (targets[i] >= GL_TEXTURE_CUBE_MAP_POSITIVE_X &&
+                            targets[i] <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z)) {
+                               pass &= piglit_check_gl_error(GL_INVALID_ENUM);
+                       }
+                       else {
+                               pass &= piglit_check_gl_error(GL_INVALID_VALUE);
+                       }
                        if (!pass)
                                return false;
                }
@@ -235,14 +249,15 @@ test_compressed_alignment_errors()
        glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGB16UI, 32, 32);
        glCopyImageSubData(tex[0], GL_TEXTURE_2D, 0, 0, 0, 0,
                           tex[2], GL_TEXTURE_2D, 0, 0, 0, 0, 20, 20, 1);
-       pass &= piglit_check_gl_error(GL_INVALID_VALUE);
+       pass &= piglit_check_gl_error(GL_INVALID_OPERATION);
 
+        /* Check for invalid copy between different compressed formats */
        glBindTexture(GL_TEXTURE_2D, tex[3]);
        glTexStorage2D(GL_TEXTURE_2D, 1,
                       GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, 32, 32);
        glCopyImageSubData(tex[0], GL_TEXTURE_2D, 0, 0, 0, 0,
                           tex[3], GL_TEXTURE_2D, 0, 0, 0, 0, 20, 20, 1);
-       pass &= piglit_check_gl_error(GL_INVALID_VALUE);
+       pass &= piglit_check_gl_error(GL_INVALID_OPERATION);
 
        glDeleteTextures(4, tex);
 
-- 
1.9.1

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

Reply via email to