diff options
author | Lionel Landwerlin <lionel.g.landwerlin@intel.com> | 2017-08-02 19:33:09 +0100 |
---|---|---|
committer | Lionel Landwerlin <lionel.g.landwerlin@intel.com> | 2017-11-01 13:19:20 +0000 |
commit | 1b369acdd83c853eede3e484251a42980f1f7b30 (patch) | |
tree | e97010db71d555151624998f40cb41d06610d368 | |
parent | 3ae5c579169a62ee11be23d1587792a45747b77f (diff) |
intel: common: print out all dword with field spanning multiple dwords
For example, we were skipping Dword 3 in this PIPE_CONTROL :
0x000ce130: 0x7a000004: PIPE_CONTROL
DWord Length: 4
0x000ce134: 0x00000010 : Dword 1
Flush LLC: false
Destination Address Type: 0 (PPGTT)
LRI Post Sync Operation: 0 (No LRI Operation)
Store Data Index: 0
Command Streamer Stall Enable: false
Global Snapshot Count Reset: false
TLB Invalidate: false
Generic Media State Clear: false
Post Sync Operation: 0 (No Write)
Depth Stall Enable: false
Render Target Cache Flush Enable: false
Instruction Cache Invalidate Enable: false
Texture Cache Invalidation Enable: false
Indirect State Pointers Disable: false
Notify Enable: false
Pipe Control Flush Enable: false
DC Flush Enable: false
VF Cache Invalidation Enable: true
Constant Cache Invalidation Enable: false
State Cache Invalidation Enable: false
Stall At Pixel Scoreboard: false
Depth Cache Flush Enable: false
0x000ce138: 0x00000000 : Dword 2
Address: 0x00000000
0x000ce140: 0x00000000 : Dword 4
Immediate Data: 0
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
-rw-r--r-- | src/intel/common/gen_decoder.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/intel/common/gen_decoder.c b/src/intel/common/gen_decoder.c index cdeb464c1b..acd0908acb 100644 --- a/src/intel/common/gen_decoder.c +++ b/src/intel/common/gen_decoder.c @@ -943,10 +943,11 @@ gen_field_iterator_next(struct gen_field_iterator *iter) static void print_dword_header(FILE *outfile, - struct gen_field_iterator *iter, uint64_t offset) + struct gen_field_iterator *iter, + uint64_t offset, uint32_t dword) { fprintf(outfile, "0x%08"PRIx64": 0x%08x : Dword %d\n", - offset + 4 * iter->dword, iter->p[iter->dword], iter->dword); + offset + 4 * dword, iter->p[dword], dword); } static bool @@ -968,12 +969,13 @@ gen_print_group(FILE *outfile, struct gen_group *group, uint64_t offset, const uint32_t *p, bool color) { struct gen_field_iterator iter; - int last_dword = 0; + int last_dword = -1; gen_field_iterator_init(&iter, group, p, color); while (gen_field_iterator_next(&iter)) { if (last_dword != iter.dword) { - print_dword_header(outfile, &iter, offset); + for (int i = last_dword + 1; i <= iter.dword; i++) + print_dword_header(outfile, &iter, offset, i); last_dword = iter.dword; } if (!is_header_field(group, iter.field)) { |