[Mesa-dev] [PATCH 3/4] mesa: Refuse to EndQuery with a mismatched query target.

Brian Paul brianp at vmware.com
Fri Oct 19 14:59:30 PDT 2012


On 10/19/2012 12:53 PM, Eric Anholt wrote:
> ---
>   src/mesa/main/queryobj.c |    9 +++++++++
>   1 file changed, 9 insertions(+)
>
> diff --git a/src/mesa/main/queryobj.c b/src/mesa/main/queryobj.c
> index ac03649..d2f064e 100644
> --- a/src/mesa/main/queryobj.c
> +++ b/src/mesa/main/queryobj.c
> @@ -374,6 +374,15 @@ _mesa_EndQueryIndexed(GLenum target, GLuint index)
>
>      /* XXX should probably refcount query objects */
>      q = *bindpt;
> +
> +   if (q&&  q->Target != target) {
> +      _mesa_error(ctx, GL_INVALID_OPERATION,
> +                  "glEndQuery(target=%s with active query of target %s)",
> +                  _mesa_lookup_enum_by_nr(target),
> +                  _mesa_lookup_enum_by_nr(q->Target));
> +      return;
> +   }
> +
>      *bindpt = NULL;
>
>      if (!q || !q->Active) {

I'm not clear on how this can actually happen.  The bindpt pointer 
comes from get_query_binding_point() which depends on the target.  And 
I don't see how a query object's target would not match the binding 
point's target.

That said, I don't see any harm in this, so if this really happens:
Reviewed-by: Brian Paul <brianp at vmware.com>



More information about the mesa-dev mailing list