summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom St Denis <tom.stdenis@amd.com>2019-03-25 13:31:16 -0400
committerTom St Denis <tom.stdenis@amd.com>2019-03-25 13:31:16 -0400
commitc56ba4e23e4442d6f65d9f2a2fe4277635b1dc10 (patch)
tree50b0716785338428b5ccf0b926fda68a7e6e8467
parent51112c767164c62bc9183ed7cc1bfbe0116dca0d (diff)
ignore reading PM4 streams in --waves if no_disasm is specified
Signed-off-by: Tom St Denis <tom.stdenis@amd.com>
-rw-r--r--src/app/print_waves.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/app/print_waves.c b/src/app/print_waves.c
index 26463d6..4fef83f 100644
--- a/src/app/print_waves.c
+++ b/src/app/print_waves.c
@@ -56,9 +56,17 @@ void umr_print_waves(struct umr_asic *asic)
if (asic->options.disasm_anyways)
ring_halted = 1;
- // scan a ring but don't trigger the halt/resume
- // since it would have already been done
- stream = umr_pm4_decode_ring(asic, asic->options.ring_name[0] ? asic->options.ring_name : "gfx", 1);
+ // don't scan for shader info by reading the ring if no_disasm is
+ // requested. This is useful for when the ring or IBs contain
+ // invalid or racy data that cannot be reliably parsed.
+ if (!asic->options.no_disasm) {
+ // scan a ring but don't trigger the halt/resume
+ // since it would have already been done
+ stream = umr_pm4_decode_ring(asic, asic->options.ring_name[0] ? asic->options.ring_name : "gfx", 1);
+ } else {
+ ring_halted = 0;
+ stream = NULL;
+ }
if (asic->family <= FAMILY_CIK)
shift = 3; // on SI..CIK allocations were done in 8-dword blocks