[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