broadcom/genxml: Fix decoding of groups with small fields.

Groups containing fields smaller than a byte probably not being decoded
correctly.  For example:

    <group count="32" start="32" size="4">
      <field name="Vertex Element Enables" start="0" end="3" type="uint"/>
    </group>

gen_field_iterator_next would properly walk over each element of the
array, incrementing group_iter.  However, the code to print the actual
values only considered iter->field->start/end, which are 0 and 3 in the
above example.  So it would always fetch bits 3:0 of the current byte,
printing the same value over and over.

Cc: Eric Anholt <eric@anholt.net>
This commit is contained in:
Kenneth Graunke 2017-10-25 21:17:14 -07:00 committed by Eric Anholt
parent 47dac5d2bc
commit cb47de4ff0

View file

@ -781,8 +781,10 @@ v3d_field_iterator_next(struct v3d_field_iterator *iter)
const char *enum_name = NULL;
int s = iter->field->start;
int e = iter->field->end;
int group_member_offset =
iter_group_offset_bits(iter, iter->group_iter);
int s = group_member_offset + iter->field->start;
int e = group_member_offset + iter->field->end;
switch (iter->field->type.kind) {
case V3D_TYPE_UNKNOWN: