From cb47de4ff0668597902c4276deb2f8b2e2d2d28e Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Wed, 25 Oct 2017 21:17:14 -0700 Subject: [PATCH] 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 --- src/broadcom/cle/v3d_decoder.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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: -- 2.30.2