From: Kenneth Graunke Date: Thu, 26 Oct 2017 04:17:14 +0000 (-0700) Subject: broadcom/genxml: Fix decoding of groups with small fields. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=cb47de4ff0668597902c4276deb2f8b2e2d2d28e;p=mesa.git broadcom/genxml: Fix decoding of groups with small fields. Groups containing fields smaller than a byte probably not being decoded correctly. For example: 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 --- diff --git a/src/broadcom/cle/v3d_decoder.c b/src/broadcom/cle/v3d_decoder.c index 4ac40af05e8..9c457b76068 100644 --- a/src/broadcom/cle/v3d_decoder.c +++ b/src/broadcom/cle/v3d_decoder.c @@ -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: