From c026a8f105f226858db506be1871a85e92de94ca Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Wed, 29 Oct 2025 13:18:10 -0700 Subject: [PATCH] freedreno/decode: Fix bindless descriptor dumping We shouldn't be trying to calculate an offset from the bindless base reg we looked up, as it already contains the array index. We could lookup the index 0 reg offset, and calculate an offset from there, but that breaks when the registers are not consecutive. Signed-off-by: Rob Clark Part-of: --- src/freedreno/decode/cffdec.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/freedreno/decode/cffdec.c b/src/freedreno/decode/cffdec.c index a7ebe27f17c..aea3b036c9c 100644 --- a/src/freedreno/decode/cffdec.c +++ b/src/freedreno/decode/cffdec.c @@ -1620,25 +1620,20 @@ dump_bindless_descriptors(bool is_compute, int level) } else { sprintf(reg_name, "SP_GFX_BINDLESS_BASE[%u].DESCRIPTOR", i); } - const unsigned base_reg = regbase(reg_name); - if (!base_reg) + const unsigned reg = regbase(reg_name); + if (!reg) break; printl(2, "%sset[%u]:\n", levels[level + 1], i); + if (!reg_written(reg)) + continue; + uint64_t ext_src_addr; if (is_64b()) { - const unsigned reg = base_reg + i * 2; - if (!reg_written(reg)) - continue; - ext_src_addr = reg_val(reg) & 0xfffffffc; ext_src_addr |= ((uint64_t)reg_val(reg + 1)) << 32; } else { - const unsigned reg = base_reg + i; - if (!reg_written(reg)) - continue; - ext_src_addr = reg_val(reg) & 0xfffffffc; }