Module: Mesa Branch: master Commit: 5a61a4dbfafa33ac00b0ed1e961950a73fd1bd06 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5a61a4dbfafa33ac00b0ed1e961950a73fd1bd06
Author: Mike Blumenkrantz <michael.blumenkra...@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 <a...@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); _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit