[Mesa-dev] [PATCH] gallium/u_threaded: drop and ignore all non-async debug callbacks
Marek Olšák
maraeo at gmail.com
Fri May 12 19:06:55 UTC 2017
From: Marek Olšák <marek.olsak at amd.com>
This is necessary to comply with OpenGL.
---
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 b44430f..50cb820 100644
--- a/src/gallium/auxiliary/util/u_threaded_context.c
+++ b/src/gallium/auxiliary/util/u_threaded_context.c
@@ -1585,20 +1585,27 @@ tc_dump_debug_state(struct pipe_context *_pipe, FILE *stream,
pipe->dump_debug_state(pipe, stream, flags);
}
static void
tc_set_debug_callback(struct pipe_context *_pipe,
const struct pipe_debug_callback *cb)
{
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);
}
static void
tc_create_fence_fd(struct pipe_context *_pipe,
struct pipe_fence_handle **fence, int fd)
{
struct threaded_context *tc = threaded_context(_pipe);
struct pipe_context *pipe = tc->pipe;
diff --git a/src/gallium/auxiliary/util/u_threaded_context.h b/src/gallium/auxiliary/util/u_threaded_context.h
index ea58d4c..f139230 100644
--- a/src/gallium/auxiliary/util/u_threaded_context.h
+++ b/src/gallium/auxiliary/util/u_threaded_context.h
@@ -48,23 +48,21 @@
*
* 3) The threaded context must not be enabled for contexts that can use video
* codecs.
*
* 4) Changes in driver behavior:
* - begin_query and end_query always return true; return values from
* the driver are ignored.
* - 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
* -----------------------------------------------
*
* These pipe_context functions are executed directly, so they shouldn't use
* pipe_context in an unsafe way. They are de-facto screen functions now:
* - create_query
* - create_batch_query
* - create_*_state (all CSOs and shaders)
--
2.7.4
More information about the mesa-dev
mailing list