[Piglit] [Mesa-dev] [PATCH] arb_occlusion_query2: expect an error when target mismatch in glBeginQuery()
Emil Velikov
emil.l.velikov at gmail.com
Tue Feb 10 15:28:23 PST 2015
I'm guessing that this was meant for the piglit ML - Cc-ing it :)
-Emil
On 10/02/15 07:48, Eduardo Lima Mitev wrote:
> From the OpenGL ES 3.0.0 spec, section "2.13. ASYNCHRONOUS QUERIES",
> page 82:
>
> "BeginQuery generates an INVALID_OPERATION error if any of the
> following conditions hold: [...]; id is the name of an existing
> query object whose type does not match target; [...]
>
> OpenGL 3.3 spec has similar wording at section "2.14. ASYNCHRONOUS
> QUERIES", page 94.
>
> Hence, trying to call BeginQuery on a query object which has already
> been bound to a different target should return GL_INVALID_OPERATION.
> ---
> tests/spec/arb_occlusion_query2/api.c | 49 +++++++++++++++++++++++++++++++++++
> 1 file changed, 49 insertions(+)
>
> diff --git a/tests/spec/arb_occlusion_query2/api.c b/tests/spec/arb_occlusion_query2/api.c
> index f4d46e3..6d48b96 100644
> --- a/tests/spec/arb_occlusion_query2/api.c
> +++ b/tests/spec/arb_occlusion_query2/api.c
> @@ -59,6 +59,10 @@ test_error_begin_while_other_active(void)
> glEndQuery(GL_SAMPLES_PASSED);
> piglit_reset_gl_error();
>
> + glDeleteQueries(2, oq);
> +
> + glGenQueries(2, oq);
> +
> glBeginQuery(GL_ANY_SAMPLES_PASSED, oq[0]);
> if (!piglit_check_gl_error(0))
> pass = false;
> @@ -102,6 +106,43 @@ 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 ES 3.0.0 spec, section "2.13. ASYNCHRONOUS QUERIES",
> + * page 82:
> + *
> + * "BeginQuery generates an INVALID_OPERATION error if any of the
> + * following conditions hold: [...]; id is the name of an existing
> + * query object whose type does not match target; [...]
> + *
> + * OpenGL 3.3 spec has similar wording at section "2.14. ASYNCHRONOUS
> + * QUERIES", page 94.
> + *
> + * Hence, trying to call BeginQuery on a query object which has already
> + * been bound to a different target should return GL_INVALID_OPERATION.
> + */
> + 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;
> @@ -124,6 +165,10 @@ test_error_end_wrong_target(void)
> glEndQuery(GL_SAMPLES_PASSED);
> piglit_reset_gl_error();
>
> + glDeleteQueries(1, &oq);
> +
> + glGenQueries(1, &oq);
> +
> glBeginQuery(GL_ANY_SAMPLES_PASSED, oq);
> if (!piglit_check_gl_error(0))
> pass = false;
> @@ -191,6 +236,9 @@ test_current_query(void)
> pass = false;
> }
> glEndQuery(GL_ANY_SAMPLES_PASSED);
> + glDeleteQueries(1, &oq);
> +
> + glGenQueries(1, &oq);
>
> /* Test the result for GL_SAMPLES_PASSED active */
> glBeginQuery(GL_SAMPLES_PASSED, oq);
> @@ -226,6 +274,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;
>
>
More information about the Piglit
mailing list