Several fixes have been added as part of this as listed below:
1) Fix the mask and add disassembler handling for STATE_DS, STATE_HS as the mask returned wrong values of the fields.
2) Fix the GEN_TYPE_ADDRESS/GEN_TYPE_OFFSET decoding - the address/ offset were handled the same way as the other fields and that gives the wrong values for the address/offset.
3) Decode nested/recurssive structures - Many packets contain nested structures, ex: 3DSATE_SO_BUFFER, STATE_BASE_ADDRESS, etc contain MOC structures. Previously, the aubinator printed 1 if there was a MOC structure. Now we decode the entire structure and print out its fields.
4) Print out the DWord address along with its hex value - For a better clarity of information, it is helpful to print both the address and hex value of the DWord along with the DWord count. Since the DWord0 contains the instruction code and the instruction length, it is unnecessary to print the decoded values for DWord0. This information is already available from the DWord hex value.
5) Decode the
v2: Fix the formatting (per Matt) Make the start and end pos calculation to extract fields from a DWord more appropriate by moving %32 away from mask() method
56ba965 aubinator: Fix the tool to correctly decode the DWords
src/intel/tools/aubinator.c | 104 +++++++++++++++++++++++++++++++++++++++++--
src/intel/tools/decoder.c | 98 ++++++++++++++++++++--------------------
src/intel/tools/decoder.h | 40 +++++++++++++++++
3 files changed, 189 insertions(+), 53 deletions(-)
Upstream: cgit.freedesktop.org