mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 16:50:10 +01:00
intel: gen-decoder: print all dword a field belongs to
Prior to printing a decoded field, print out all dwords that field belongs to. In particular with address fields spanning multiple dwords, we want to have all the dwords presented before the field is decoded to make it easier to read. Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Scott D Phillips <scott.d.phillips@intel.com>
This commit is contained in:
parent
4d59127213
commit
78c18d99dc
2 changed files with 9 additions and 7 deletions
|
|
@ -841,7 +841,8 @@ iter_advance_field(struct gen_field_iterator *iter)
|
|||
|
||||
int group_member_offset = iter_group_offset_bits(iter, iter->group_iter);
|
||||
|
||||
iter->bit = group_member_offset + iter->field->start;
|
||||
iter->start_bit = group_member_offset + iter->field->start;
|
||||
iter->end_bit = group_member_offset + iter->field->end;
|
||||
iter->struct_desc = NULL;
|
||||
|
||||
return true;
|
||||
|
|
@ -852,10 +853,10 @@ iter_decode_field_raw(struct gen_field_iterator *iter, uint64_t *qw)
|
|||
{
|
||||
*qw = 0;
|
||||
|
||||
int field_start = iter->p_bit + iter->bit;
|
||||
int field_end = field_start + (iter->field->end - iter->field->start);
|
||||
int field_start = iter->p_bit + iter->start_bit;
|
||||
int field_end = iter->p_bit + iter->end_bit;
|
||||
|
||||
const uint32_t *p = iter->p + (iter->bit / 32);
|
||||
const uint32_t *p = iter->p + (iter->start_bit / 32);
|
||||
if (iter->p_end && p >= iter->p_end)
|
||||
return false;
|
||||
|
||||
|
|
@ -1040,7 +1041,7 @@ gen_print_group(FILE *outfile, struct gen_group *group, uint64_t offset,
|
|||
|
||||
gen_field_iterator_init(&iter, group, p, p_bit, color);
|
||||
do {
|
||||
int iter_dword = iter.bit / 32;
|
||||
int iter_dword = iter.end_bit / 32;
|
||||
if (last_dword != iter_dword) {
|
||||
for (int i = last_dword + 1; i <= iter_dword; i++)
|
||||
print_dword_header(outfile, &iter, offset, i);
|
||||
|
|
@ -1051,7 +1052,7 @@ gen_print_group(FILE *outfile, struct gen_group *group, uint64_t offset,
|
|||
if (iter.struct_desc) {
|
||||
uint64_t struct_offset = offset + 4 * iter_dword;
|
||||
gen_print_group(outfile, iter.struct_desc, struct_offset,
|
||||
&p[iter_dword], iter.bit % 32, color);
|
||||
&p[iter_dword], iter.start_bit % 32, color);
|
||||
}
|
||||
}
|
||||
} while (gen_field_iterator_next(&iter));
|
||||
|
|
|
|||
|
|
@ -73,7 +73,8 @@ struct gen_field_iterator {
|
|||
const uint32_t *p;
|
||||
int p_bit; /**< bit offset into p */
|
||||
const uint32_t *p_end;
|
||||
int bit; /**< current field starts at this bit offset into p */
|
||||
int start_bit; /**< current field starts at this bit offset into p */
|
||||
int end_bit; /**< current field ends at this bit offset into p */
|
||||
|
||||
int group_iter;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue