diff options
author | Tom St Denis <tom.stdenis@amd.com> | 2019-03-05 12:28:34 -0500 |
---|---|---|
committer | Tom St Denis <tom.stdenis@amd.com> | 2019-03-05 12:28:34 -0500 |
commit | 9d05a446321dce2bf90ec1555d46916fe60f1db6 (patch) | |
tree | 84e3fc81eff8c03a4ad5bf1a753342bd790a1ec7 | |
parent | 20fec01d710258a7cf6a72c54689fdeab641e483 (diff) |
print out video decode CMD names in ring dump
Signed-off-by: Tom St Denis <tom.stdenis@amd.com>
-rw-r--r-- | src/lib/ring_decode.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/lib/ring_decode.c b/src/lib/ring_decode.c index 5ff9ab0..f08399f 100644 --- a/src/lib/ring_decode.c +++ b/src/lib/ring_decode.c @@ -1161,7 +1161,7 @@ static void print_decode_pm4_pkt3(struct umr_asic *asic, struct umr_ring_decoder */ static void print_decode_pm4(struct umr_asic *asic, struct umr_ring_decoder *decoder, uint32_t ib) { - char *name; + char namecpy[128], *name; switch (decoder->pm4.cur_opcode) { case 0xFFFFFFFF: // initial decode decoder->pm4.pkt_type = ib >> 30; @@ -1197,6 +1197,7 @@ static void print_decode_pm4(struct umr_asic *asic, struct umr_ring_decoder *dec name = strstr(name, "."); if (name) { if (name[0] == '.') ++name; + strcpy(namecpy, umr_find_reg_by_addr(asic, decoder->pm4.next_write_mem.addr_lo, NULL)->regname); // detect VCN/UVD IBs and chain them once all // 4 pieces of information are found @@ -1223,6 +1224,25 @@ static void print_decode_pm4(struct umr_asic *asic, struct umr_ring_decoder *dec decoder->pm4.next_ib_state.tally = 0; add_ib_pm4(decoder); } + + if (strstr(namecpy, "GPCOM_VCPU_CMD")) { + // print out command + printf(", OPCODE [%s0x%x%s, %s", + BLUE, (unsigned)umr_bitslice_reg_by_name(asic, namecpy, "CMD", ib), RST, + CYAN); + switch (umr_bitslice_reg_by_name(asic, namecpy, "CMD", ib)) { + case 0: printf("CMD_MSG_BUFFER"); break; + case 1: printf("DPB_MSG_BUFFER"); break; + case 2: printf("DECODING_TARGET_BUFFER"); break; + case 3: printf("FEEDBACK_BUFFER"); break; + case 5: printf("SESSSION_CONTEXT_BUFFER"); break; + case 0x100: printf("BITSTREAM_BUFFER"); break; + case 0x204: printf("ITSCALING_TABLE_BUFFER"); break; + case 0x206: printf("CONTEXT_BUFFER"); break; + default: printf("UNKNOWN"); break; + } + printf("%s]", RST); + } } decoder->pm4.next_write_mem.addr_lo++; |