This patch is

Reviewed-by: Ian Romanick <[email protected]>

I did some spec archaeology.  This error was added in OpenGL 3.0 when
the second (and third) query types were added.  EXT_transform_feedback
(2008),  ARB_occlusion_query2 (2010), and ARB_timer_query (2010) all add
this error.  If you're feeling really bored, there is some value in
having a similar test for those other extensions.

On 02/16/2015 03:19 AM, Eduardo Lima Mitev wrote:
> 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;
>  
> 

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

Reply via email to