diff options
-rw-r--r-- | src/gallium/auxiliary/util/u_threaded_context.c | 7 | ||||
-rw-r--r-- | 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 |