summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>2021-04-07 08:23:50 -0400
committerMarge Bot <eric+marge@anholt.net>2021-04-13 02:04:22 +0000
commit5ecffaa7a669f20ed0b578a75a1cfcb9f169da6f (patch)
tree4b2bd17380b4f428832ece8d0a1ed8abe4cb5968
parent51216d656d702732169cac4c7a30607cbac0f077 (diff)
aux/trace: enhance trigger mode to dump context states during bind
when dumping a single frame, the creation info for these states hasn't been dumped yet, so always dump it during bind so it's visible Acked-by: Adam Jackson <ajax@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10093>
-rw-r--r--src/gallium/auxiliary/driver_trace/tr_context.c15
-rw-r--r--src/gallium/auxiliary/driver_trace/tr_dump.c6
-rw-r--r--src/gallium/auxiliary/driver_trace/tr_dump.h1
3 files changed, 19 insertions, 3 deletions
diff --git a/src/gallium/auxiliary/driver_trace/tr_context.c b/src/gallium/auxiliary/driver_trace/tr_context.c
index 1a25678f11a..25f0821a2ef 100644
--- a/src/gallium/auxiliary/driver_trace/tr_context.c
+++ b/src/gallium/auxiliary/driver_trace/tr_context.c
@@ -305,7 +305,10 @@ trace_context_bind_blend_state(struct pipe_context *_pipe,
trace_dump_call_begin("pipe_context", "bind_blend_state");
trace_dump_arg(ptr, pipe);
- trace_dump_arg(ptr, state);
+ if (trace_dump_is_triggered())
+ trace_dump_arg(blend_state, state);
+ else
+ trace_dump_arg(ptr, state);
pipe->bind_blend_state(pipe, state);
@@ -432,7 +435,10 @@ trace_context_bind_rasterizer_state(struct pipe_context *_pipe,
trace_dump_call_begin("pipe_context", "bind_rasterizer_state");
trace_dump_arg(ptr, pipe);
- trace_dump_arg(ptr, state);
+ if (trace_dump_is_triggered())
+ trace_dump_arg(rasterizer_state, state);
+ else
+ trace_dump_arg(ptr, state);
pipe->bind_rasterizer_state(pipe, state);
@@ -491,7 +497,10 @@ trace_context_bind_depth_stencil_alpha_state(struct pipe_context *_pipe,
trace_dump_call_begin("pipe_context", "bind_depth_stencil_alpha_state");
trace_dump_arg(ptr, pipe);
- trace_dump_arg(ptr, state);
+ if (trace_dump_is_triggered())
+ trace_dump_arg(depth_stencil_alpha_state, state);
+ else
+ trace_dump_arg(ptr, state);
pipe->bind_depth_stencil_alpha_state(pipe, state);
diff --git a/src/gallium/auxiliary/driver_trace/tr_dump.c b/src/gallium/auxiliary/driver_trace/tr_dump.c
index 20f498ea1b5..9032ddfce65 100644
--- a/src/gallium/auxiliary/driver_trace/tr_dump.c
+++ b/src/gallium/auxiliary/driver_trace/tr_dump.c
@@ -99,6 +99,12 @@ trace_dump_check_trigger(void)
mtx_unlock(&call_mutex);
}
+bool
+trace_dump_is_triggered(void)
+{
+ return trigger_active && !!trigger_filename;
+}
+
static inline void
trace_dump_write(const char *buf, size_t size)
{
diff --git a/src/gallium/auxiliary/driver_trace/tr_dump.h b/src/gallium/auxiliary/driver_trace/tr_dump.h
index 48e648b2822..9a4b294372c 100644
--- a/src/gallium/auxiliary/driver_trace/tr_dump.h
+++ b/src/gallium/auxiliary/driver_trace/tr_dump.h
@@ -110,6 +110,7 @@ void trace_dump_transfer_ptr(struct pipe_transfer *_transfer);
void trace_dump_trigger_active(bool active);
void trace_dump_check_trigger(void);
+bool trace_dump_is_triggered(void);
/*
* Code saving macros.