Mesa (master): aux/trace: do deep dumps of fb state for triggered traces
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Apr 13 02:28:40 UTC 2021
Module: Mesa
Branch: master
Commit: 5a61a4dbfafa33ac00b0ed1e961950a73fd1bd06
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5a61a4dbfafa33ac00b0ed1e961950a73fd1bd06
Author: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Date: Wed Apr 7 09:05:12 2021 -0400
aux/trace: do deep dumps of fb state for triggered traces
having the full surface info available here is very useful
Acked-by: Adam Jackson <ajax at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10093>
---
src/gallium/auxiliary/driver_trace/tr_context.c | 12 +++++++----
src/gallium/auxiliary/driver_trace/tr_dump_state.c | 24 ++++++++++++++++++++++
src/gallium/auxiliary/driver_trace/tr_dump_state.h | 4 ++++
3 files changed, 36 insertions(+), 4 deletions(-)
diff --git a/src/gallium/auxiliary/driver_trace/tr_context.c b/src/gallium/auxiliary/driver_trace/tr_context.c
index ea2ef265c4a..93f72b8246c 100644
--- a/src/gallium/auxiliary/driver_trace/tr_context.c
+++ b/src/gallium/auxiliary/driver_trace/tr_context.c
@@ -90,14 +90,18 @@ trace_surface_unwrap(struct trace_context *tr_ctx,
static void
dump_fb_state(struct trace_context *tr_ctx,
- const char *method)
+ const char *method,
+ bool deep)
{
struct pipe_context *pipe = tr_ctx->pipe;
trace_dump_call_begin("pipe_context", method);
trace_dump_arg(ptr, pipe);
- trace_dump_arg(framebuffer_state, &tr_ctx->unwrapped_state);
+ if (deep)
+ trace_dump_arg(framebuffer_state_deep, &tr_ctx->unwrapped_state);
+ else
+ trace_dump_arg(framebuffer_state, &tr_ctx->unwrapped_state);
trace_dump_call_end();
tr_ctx->seen_fb_state = true;
@@ -114,7 +118,7 @@ trace_context_draw_vbo(struct pipe_context *_pipe,
struct pipe_context *pipe = tr_ctx->pipe;
if (!tr_ctx->seen_fb_state && trace_dump_is_triggered())
- dump_fb_state(tr_ctx, "current_framebuffer_state");
+ dump_fb_state(tr_ctx, "current_framebuffer_state", true);
trace_dump_call_begin("pipe_context", "draw_vbo");
@@ -870,7 +874,7 @@ trace_context_set_framebuffer_state(struct pipe_context *_pipe,
tr_ctx->unwrapped_state.zsbuf = trace_surface_unwrap(tr_ctx, state->zsbuf);
state = &tr_ctx->unwrapped_state;
- dump_fb_state(tr_ctx, "set_framebuffer_state");
+ dump_fb_state(tr_ctx, "set_framebuffer_state", trace_dump_is_triggered());
pipe->set_framebuffer_state(pipe, state);
}
diff --git a/src/gallium/auxiliary/driver_trace/tr_dump_state.c b/src/gallium/auxiliary/driver_trace/tr_dump_state.c
index 2d2abd0a428..ec479b59677 100644
--- a/src/gallium/auxiliary/driver_trace/tr_dump_state.c
+++ b/src/gallium/auxiliary/driver_trace/tr_dump_state.c
@@ -487,6 +487,24 @@ void trace_dump_framebuffer_state(const struct pipe_framebuffer_state *state)
trace_dump_struct_end();
}
+void trace_dump_framebuffer_state_deep(const struct pipe_framebuffer_state *state)
+{
+ if (!trace_dumping_enabled_locked())
+ return;
+
+ trace_dump_struct_begin("pipe_framebuffer_state");
+
+ trace_dump_member(uint, state, width);
+ trace_dump_member(uint, state, height);
+ trace_dump_member(uint, state, samples);
+ trace_dump_member(uint, state, layers);
+ trace_dump_member(uint, state, nr_cbufs);
+ trace_dump_member_array(surface, state, cbufs);
+ trace_dump_member(surface, state, zsbuf);
+
+ trace_dump_struct_end();
+}
+
void trace_dump_sampler_state(const struct pipe_sampler_state *state)
{
@@ -566,6 +584,12 @@ void trace_dump_sampler_view_template(const struct pipe_sampler_view *state,
}
+void trace_dump_surface(const struct pipe_surface *surface)
+{
+ trace_dump_surface_template(surface, surface ? surface->texture->target : 0);
+}
+
+
void trace_dump_surface_template(const struct pipe_surface *state,
enum pipe_texture_target target)
{
diff --git a/src/gallium/auxiliary/driver_trace/tr_dump_state.h b/src/gallium/auxiliary/driver_trace/tr_dump_state.h
index 78895577710..1a969c75066 100644
--- a/src/gallium/auxiliary/driver_trace/tr_dump_state.h
+++ b/src/gallium/auxiliary/driver_trace/tr_dump_state.h
@@ -62,11 +62,15 @@ void trace_dump_stencil_ref(const struct pipe_stencil_ref *state);
void trace_dump_framebuffer_state(const struct pipe_framebuffer_state *state);
+void trace_dump_framebuffer_state_deep(const struct pipe_framebuffer_state *state);
+
void trace_dump_sampler_state(const struct pipe_sampler_state *state);
void trace_dump_sampler_view_template(const struct pipe_sampler_view *view,
enum pipe_texture_target target);
+void trace_dump_surface(const struct pipe_surface *surface);
+
void trace_dump_surface_template(const struct pipe_surface *state,
enum pipe_texture_target target);
More information about the mesa-commit
mailing list