summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2016-03-02 23:19:27 -0800
committerEmil Velikov <emil.l.velikov@gmail.com>2016-03-04 14:48:25 +0000
commitc9da4f896685e061947f41664d4fb7492a31327d (patch)
tree883245885cc1099a94cc397f608b308e3d6dbba1
parenta07e84278c06a8008087c0b9526b208cb257844a (diff)
mesa: Make glGet queries initialize ctx->Debug when necessary.
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}. Cc: mesa-stable@lists.freedesktop.org Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com> Reviewed-by: Emil Velikov <emil.velikov@collabora.com> (cherry picked from commit b4b50b074beae9b679e5acdbb4b49193e539576d)
-rw-r--r--src/mesa/main/debug_output.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/src/mesa/main/debug_output.c b/src/mesa/main/debug_output.c
index 10ee6757cc1..c2b9f053352 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;
}