[Mesa-dev] [PATCH 1/2] mesa: Make glGet queries initialize ctx->Debug when necessary.

Timothy Arceri timothy.arceri at collabora.com
Thu Mar 3 21:21:26 UTC 2016


On Thu, 2016-03-03 at 01:27 -0800, Kenneth Graunke wrote:
> dEQP-GLES31.functional.debug.state_query.debug_group_stack_depth_*
> tries to call glGet on GL_DEBUG_GROUP_STACK_DEPTH right away, before
> doing any other debug setup.  This should return 1.
> 
> However, because ctx->Debug wasn't allocated, we bailed and returned
> 0.
> 
> This patch removes the open-coded locking and switches the two glGet
> functions to use _mesa_lock_debug_state(), which takes care of
> allocating and initializing that state on the first time.  It also
> conveniently takes care of unlocking on failure for us, so we don't
> need to handle that in every caller.
> 
> Fixes dEQP-
> GLES31.functional.debug.state_query.debug_group_stack_depth_
> {getboolean,getfloat,getinteger,getinteger64}.

Makes sense to me. Assuming no issues with the ES 3.2 and Desktop CTS.

Reviewed-by: Timothy Arceri <timothy.arceri at collabora.com> 


> 
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/mesa/main/debug_output.c | 20 ++++++--------------
>  1 file changed, 6 insertions(+), 14 deletions(-)
> 
> diff --git a/src/mesa/main/debug_output.c
> b/src/mesa/main/debug_output.c
> index 10ee675..c2b9f05 100644
> --- a/src/mesa/main/debug_output.c
> +++ b/src/mesa/main/debug_output.c
> @@ -761,15 +761,11 @@ _mesa_set_debug_state_int(struct gl_context
> *ctx, GLenum pname, GLint val)
>  GLint
>  _mesa_get_debug_state_int(struct gl_context *ctx, GLenum pname)
>  {
> -   struct gl_debug_state *debug;
>     GLint val;
>  
> -   mtx_lock(&ctx->DebugMutex);
> -   debug = ctx->Debug;
> -   if (!debug) {
> -      mtx_unlock(&ctx->DebugMutex);
> +   struct gl_debug_state *debug = _mesa_lock_debug_state(ctx);
> +   if (!debug)
>        return 0;
> -   }
>  
>     switch (pname) {
>     case GL_DEBUG_OUTPUT:
> @@ -794,7 +790,7 @@ _mesa_get_debug_state_int(struct gl_context *ctx,
> GLenum pname)
>        break;
>     }
>  
> -   mtx_unlock(&ctx->DebugMutex);
> +   _mesa_unlock_debug_state(ctx);
>  
>     return val;
>  }
> @@ -806,15 +802,11 @@ _mesa_get_debug_state_int(struct gl_context
> *ctx, GLenum pname)
>  void *
>  _mesa_get_debug_state_ptr(struct gl_context *ctx, GLenum pname)
>  {
> -   struct gl_debug_state *debug;
>     void *val;
> +   struct gl_debug_state *debug = _mesa_lock_debug_state(ctx);
>  
> -   mtx_lock(&ctx->DebugMutex);
> -   debug = ctx->Debug;
> -   if (!debug) {
> -      mtx_unlock(&ctx->DebugMutex);
> +   if (!debug)
>        return NULL;
> -   }
>  
>     switch (pname) {
>     case GL_DEBUG_CALLBACK_FUNCTION_ARB:
> @@ -829,7 +821,7 @@ _mesa_get_debug_state_ptr(struct gl_context *ctx,
> GLenum pname)
>        break;
>     }
>  
> -   mtx_unlock(&ctx->DebugMutex);
> +   _mesa_unlock_debug_state(ctx);
>  
>     return val;
>  }


More information about the mesa-dev mailing list