From the OpenGL 3.3 spec, section "2.14. ASYNCHRONOUS QUERIES", page 94:

    "[...] if id is the name of an existing query object whose type does not
     match target, [...] the error INVALID_OPERATION is generated."

Similar wording exists in the OpenGL ES 3.0.0 spec, section "2.13.
ASYNCHRONOUS QUERIES", page 82.

This patch adds a check for this situation.
---
 tests/spec/arb_occlusion_query2/api.c | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/tests/spec/arb_occlusion_query2/api.c 
b/tests/spec/arb_occlusion_query2/api.c
index 271948e..463e1fa 100644
--- a/tests/spec/arb_occlusion_query2/api.c
+++ b/tests/spec/arb_occlusion_query2/api.c
@@ -106,6 +106,38 @@ test_counter_bits(void)
 }
 
 static bool
+test_error_begin_wrong_target(void)
+{
+       bool pass = true;
+       GLuint oq;
+
+       glGenQueries(1, &oq);
+
+       glBeginQuery(GL_SAMPLES_PASSED, oq);
+       if (!piglit_check_gl_error(0))
+               pass = false;
+       glEndQuery(GL_SAMPLES_PASSED);
+
+       /* From the OpenGL 3.3 spec, section "2.14. ASYNCHRONOUS QUERIES", page 
94:
+        *
+        *    "[...] if id is the name of an existing query object whose type 
does not
+        *     match target, [...] the error INVALID_OPERATION is generated."
+        *
+        * Similar wording exists in the OpenGL ES 3.0.0 spec, section "2.13.
+        * ASYNCHRONOUS QUERIES", page 82.
+        */
+       glBeginQuery(GL_ANY_SAMPLES_PASSED, oq);
+       if (!piglit_check_gl_error(GL_INVALID_OPERATION))
+               pass = false;
+       glEndQuery(GL_ANY_SAMPLES_PASSED);
+       piglit_reset_gl_error();
+
+       glDeleteQueries(1, &oq);
+
+       return pass;
+}
+
+static bool
 test_error_end_wrong_target(void)
 {
        bool pass = true;
@@ -237,6 +269,7 @@ piglit_display(void)
 
        pass = test_counter_bits() && pass;
        pass = test_current_query() && pass;
+       pass = test_error_begin_wrong_target() && pass;
        pass = test_error_end_wrong_target() && pass;
        pass = test_error_begin_while_other_active() && pass;
 
-- 
2.1.3

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

Reply via email to