From e24d094d70a1ccd4d41b8dd245e2e3f95fb95498 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Fri, 12 May 2017 01:25:49 +0200 Subject: [PATCH] gallium/u_threaded: drop and ignore all non-async debug callbacks MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This is necessary to comply with OpenGL. Reviewed-by: Nicolai Hähnle --- src/gallium/auxiliary/util/u_threaded_context.c | 7 +++++++ src/gallium/auxiliary/util/u_threaded_context.h | 4 +--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/gallium/auxiliary/util/u_threaded_context.c b/src/gallium/auxiliary/util/u_threaded_context.c index b44430fd096..50cb820440c 100644 --- a/src/gallium/auxiliary/util/u_threaded_context.c +++ b/src/gallium/auxiliary/util/u_threaded_context.c @@ -1592,6 +1592,13 @@ tc_set_debug_callback(struct pipe_context *_pipe, struct threaded_context *tc = threaded_context(_pipe); struct pipe_context *pipe = tc->pipe; + /* Drop all synchronous debug callbacks. Drivers are expected to be OK + * with this. shader-db will use an environment variable to disable + * the threaded context. + */ + if (cb && cb->debug_message && !cb->async) + return; + tc_sync(tc); pipe->set_debug_callback(pipe, cb); } diff --git a/src/gallium/auxiliary/util/u_threaded_context.h b/src/gallium/auxiliary/util/u_threaded_context.h index ea58d4ca0cf..f13923050a0 100644 --- a/src/gallium/auxiliary/util/u_threaded_context.h +++ b/src/gallium/auxiliary/util/u_threaded_context.h @@ -55,9 +55,7 @@ * - generate_mipmap uses is_format_supported to determine success; * the return value from the driver is ignored. * - resource_commit always returns true; failures are ignored. - * - If a non-async debug callback is set, the threaded context keeps using - * asynchronous execution. This is OK for shader-db, but the driver - * shouldn't use the debug callback in any other way. + * - set_debug_callback is skipped if the callback is synchronous. * * * Thread-safety requirements on context functions -- 2.30.2