Reviewed-by: Nicolai Hähnle <[email protected]>

On 01.07.2016 19:05, Alejandro Piñeiro wrote:
This patch adapts the test to the last change on mesa. Copying
the rationale on that patch here:

For the case (both src or dst) where we had a texobject, but the
texobject target was not the same that the method target, this spec
paragraph was appplied:

  /* Section 18.3.2 (Copying Between Images) of the OpenGL 4.5 Core
   * Profile spec says:
   *
   *     "An INVALID_VALUE error is generated if either name does not
   *     correspond to a valid renderbuffer or texture object according
   *     to the corresponding target parameter."
   */

But for that case, the correct spec paragraph should be:
  /* Section 18.3.2 (Copying Between Images) of the OpenGL 4.5 Core
   * Profile spec says:
   *
   *     "An INVALID_ENUM error is generated if either target is
   *      not RENDERBUFFER or a valid non-proxy texture target;
   *      is TEXTURE_BUFFER or one of the cubemap face selectors
   *      described in table 8.18; or if the target does not
   *      match the type of the object."
   */

specifically the last sentence: "or if the target does not match the
type of the object".

This patch fixes the error checked (s/INVALID/ENUM) for that case,
and moves down the INVALID_VALUE spec paragraph, as that case (invalid
texture object) was already checked on the test, but without spec
paragraph.
---

You can find the mesa patch Im talking about here:
https://patchwork.freedesktop.org/patch/96229/


  tests/spec/arb_copy_image/api_errors.c | 27 +++++++++++++++++++--------
  1 file changed, 19 insertions(+), 8 deletions(-)

diff --git a/tests/spec/arb_copy_image/api_errors.c 
b/tests/spec/arb_copy_image/api_errors.c
index a1abcf6..a348104 100644
--- a/tests/spec/arb_copy_image/api_errors.c
+++ b/tests/spec/arb_copy_image/api_errors.c
@@ -129,9 +129,11 @@ test_simple_errors(GLenum src_target, GLenum dst_target)
        /* Section 18.3.2 (Copying Between Images) of the OpenGL 4.5 Core
         * Profile spec says:
         *
-        *     "An INVALID_VALUE error is generated if either name does not
-        *     correspond to a valid renderbuffer or texture object according
-        *     to the corresponding target parameter."
+        *     "An INVALID_ENUM error is generated if either target is
+        *      not RENDERBUFFER or a valid non-proxy texture target;
+        *      is TEXTURE_BUFFER or one of the cubemap face selectors
+        *      described in table 8.18; or if the target does not
+        *      match the type of the object."
         */
        if (src_target != GL_RENDERBUFFER_EXT) {
                for (i = 0; i < ARRAY_LENGTH(targets); ++i) {
@@ -142,7 +144,7 @@ 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_VALUE);
+                       pass &= piglit_check_gl_error(GL_INVALID_ENUM);
                        if (!pass)
                                return false;
                }
@@ -151,9 +153,11 @@ test_simple_errors(GLenum src_target, GLenum dst_target)
        /* Section 18.3.2 (Copying Between Images) of the OpenGL 4.5 Core
         * Profile spec says:
         *
-        *     "An INVALID_VALUE error is generated if either name does not
-        *     correspond to a valid renderbuffer or texture object according
-        *     to the corresponding target parameter."
+        *     "An INVALID_ENUM error is generated if either target is
+        *      not RENDERBUFFER or a valid non-proxy texture target;
+        *      is TEXTURE_BUFFER or one of the cubemap face selectors
+        *      described in table 8.18; or if the target does not
+        *      match the type of the object."
         */
        if (dst_target != GL_RENDERBUFFER_EXT) {
                for (i = 0; i < ARRAY_LENGTH(targets); ++i) {
@@ -164,12 +168,19 @@ 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_VALUE);
+                       pass &= piglit_check_gl_error(GL_INVALID_ENUM);
                        if (!pass)
                                return false;
                }
        }

+       /* Section 18.3.2 (Copying Between Images) of the OpenGL 4.5 Core
+        * Profile spec says:
+        *
+        *     "An INVALID_VALUE error is generated if either name does not
+        *     correspond to a valid renderbuffer or texture object according
+        *     to the corresponding target parameter."
+        */
        /* 4523 should be a bogus renderbuffer/texture */
        glCopyImageSubData(4523, src_target, 0, 0, 0, 0,
                           dst, dst_target, 0, 0, 0, 0, 0, 0, 0);

_______________________________________________
Piglit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to