From: Mihai Preda Date: Wed, 23 Nov 2022 12:47:23 +0000 (+0200) Subject: radeonsi: add AMD_DEBUG=elements for printing vertex elements X-Git-Tag: upstream/23.3.3~15876 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=89eca6a2fa92a39dbbd583a5232e3d9e7141b9a4;p=platform%2Fupstream%2Fmesa.git radeonsi: add AMD_DEBUG=elements for printing vertex elements in si_create_vertex_elements() This information is useful in debugging shader inputs/outputs Sample output: AMD_DEBUG=elements ./bin/arb_vertex_attrib_64bit-overlapping-locations shader -auto elements[0]: offset 0, buffer_index 0, dual_slot 0, format 16, divisor 0 elements[1]: offset 16, buffer_index 0, dual_slot 0, format 16, divisor 0 elements[0]: offset 0, buffer_index 0, dual_slot 0, format 104, divisor 0 elements[0]: offset 0, buffer_index 0, dual_slot 0, format 105, divisor 0 elements[0]: offset 0, buffer_index 0, dual_slot 0, format 106, divisor 0 elements[0]: offset 0, buffer_index 0, dual_slot 0, format 107, divisor 0 elements[0]: offset 0, buffer_index 0, dual_slot 0, format 16, divisor 0 elements[1]: offset 16, buffer_index 0, dual_slot 0, format 16, divisor 0 elements[0]: offset 0, buffer_index 0, dual_slot 0, format 104, divisor 0 elements[0]: offset 0, buffer_index 0, dual_slot 0, format 105, divisor 0 elements[0]: offset 0, buffer_index 0, dual_slot 0, format 106, divisor 0 elements[0]: offset 0, buffer_index 0, dual_slot 0, format 107, divisor 0 elements[0]: offset 0, buffer_index 0, dual_slot 0, format 107, divisor 0 elements[1]: offset 16, buffer_index 0, dual_slot 1, format 107, divisor 0 elements[2]: offset 32, buffer_index 0, dual_slot 1, format 105, divisor 0 elements[0]: offset 0, buffer_index 0, dual_slot 0, format 107, divisor 0 elements[1]: offset 40, buffer_index 0, dual_slot 1, format 107, divisor 0 elements[2]: offset 56, buffer_index 0, dual_slot 1, format 105, divisor 0 elements[0]: offset 0, buffer_index 0, dual_slot 0, format 107, divisor 0 elements[1]: offset 64, buffer_index 0, dual_slot 1, format 107, divisor 0 elements[2]: offset 80, buffer_index 0, dual_slot 1, format 105, divisor 0 PIGLIT: {"result": "pass" } Reviewed-by: Marek Olšák Acked-by: Pierre-Eric Pelloux-Prayer Part-of: --- diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c index 999c0a3..1a46874 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.c +++ b/src/gallium/drivers/radeonsi/si_pipe.c @@ -81,6 +81,7 @@ static const struct debug_named_value radeonsi_debug_options[] = { {"vm", DBG(VM), "Print virtual addresses when creating resources"}, {"cache_stats", DBG(CACHE_STATS), "Print shader cache statistics."}, {"ib", DBG(IB), "Print command buffers."}, + {"elements", DBG(VERTEX_ELEMENTS), "Print vertex elements."}, /* Driver options: */ {"nowc", DBG(NO_WC), "Disable GTT write combining"}, diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h index 6358d6d..c05d2bd 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.h +++ b/src/gallium/drivers/radeonsi/si_pipe.h @@ -225,6 +225,7 @@ enum DBG_VM, DBG_CACHE_STATS, DBG_IB, + DBG_VERTEX_ELEMENTS, /* Driver options: */ DBG_NO_WC, diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c index 91be91c..b9a9b89 100644 --- a/src/gallium/drivers/radeonsi/si_state.c +++ b/src/gallium/drivers/radeonsi/si_state.c @@ -4871,6 +4871,15 @@ static void *si_create_vertex_elements(struct pipe_context *ctx, unsigned count, const struct pipe_vertex_element *elements) { struct si_screen *sscreen = (struct si_screen *)ctx->screen; + + if (sscreen->debug_flags & DBG(VERTEX_ELEMENTS)) { + for (int i = 0; i < count; ++i) { + const struct pipe_vertex_element *e = elements + i; + fprintf(stderr, "elements[%d]: offset %2d, buffer_index %d, dual_slot %d, format %3d, divisor %u\n", + i, e->src_offset, e->vertex_buffer_index, e->dual_slot, e->src_format, e->instance_divisor); + } + } + struct si_vertex_elements *v = CALLOC_STRUCT(si_vertex_elements); struct si_fast_udiv_info32 divisor_factors[SI_MAX_ATTRIBS] = {}; STATIC_ASSERT(sizeof(struct si_fast_udiv_info32) == 16);