From eacb167375ad0915bf4d2daca1c23a672b30f075 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 10 Jul 2025 09:57:29 -0400 Subject: [PATCH] aux/trace: sanitize draws if a draw isn't indexed, don't trace index_bias since this is a garbage value Part-of: --- src/gallium/auxiliary/driver_trace/tr_context.c | 5 ++++- src/gallium/auxiliary/driver_trace/tr_dump_state.c | 11 +++++++++++ src/gallium/auxiliary/driver_trace/tr_dump_state.h | 2 ++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/gallium/auxiliary/driver_trace/tr_context.c b/src/gallium/auxiliary/driver_trace/tr_context.c index 2a78009d912..cfee0ddaa01 100644 --- a/src/gallium/auxiliary/driver_trace/tr_context.c +++ b/src/gallium/auxiliary/driver_trace/tr_context.c @@ -112,7 +112,10 @@ trace_context_draw_vbo(struct pipe_context *_pipe, trace_dump_arg(int, drawid_offset); trace_dump_arg(draw_indirect_info, indirect); trace_dump_arg_begin("draws"); - trace_dump_struct_array(draw_start_count, draws, num_draws); + if (info->index.resource) + trace_dump_struct_array(draw_start_count_indexed, draws, num_draws); + else + trace_dump_struct_array(draw_start_count, draws, num_draws); trace_dump_arg_end(); trace_dump_arg(uint, num_draws); diff --git a/src/gallium/auxiliary/driver_trace/tr_dump_state.c b/src/gallium/auxiliary/driver_trace/tr_dump_state.c index 8d63e0e49e5..563e9b4ec9b 100644 --- a/src/gallium/auxiliary/driver_trace/tr_dump_state.c +++ b/src/gallium/auxiliary/driver_trace/tr_dump_state.c @@ -934,6 +934,17 @@ void trace_dump_draw_vertex_state_info(struct pipe_draw_vertex_state_info state) } void trace_dump_draw_start_count(const struct pipe_draw_start_count_bias *state) +{ + if (!trace_dumping_enabled_locked()) + return; + + trace_dump_struct_begin("pipe_draw_start_count_bias"); + trace_dump_member(uint, state, start); + trace_dump_member(uint, state, count); + trace_dump_struct_end(); +} + +void trace_dump_draw_start_count_indexed(const struct pipe_draw_start_count_bias *state) { if (!trace_dumping_enabled_locked()) return; diff --git a/src/gallium/auxiliary/driver_trace/tr_dump_state.h b/src/gallium/auxiliary/driver_trace/tr_dump_state.h index e20da564409..53c2be752d9 100644 --- a/src/gallium/auxiliary/driver_trace/tr_dump_state.h +++ b/src/gallium/auxiliary/driver_trace/tr_dump_state.h @@ -103,6 +103,8 @@ void trace_dump_draw_vertex_state_info(struct pipe_draw_vertex_state_info state) void trace_dump_draw_start_count(const struct pipe_draw_start_count_bias *state); +void trace_dump_draw_start_count_indexed(const struct pipe_draw_start_count_bias *state); + void trace_dump_draw_indirect_info(const struct pipe_draw_indirect_info *state); void trace_dump_blit_info(const struct pipe_blit_info *);