[Piglit] [PATCH 2/2] arb_occlusion_query2: Checks that query obj passed to glBeginQuery matches target

Eduardo Lima Mitev elima at igalia.com
Mon Feb 16 03:19:37 PST 2015


>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



More information about the Piglit mailing list