[Mesa-dev] [PATCH] aubinator: Don't skip the first field in each subgroup

Jason Ekstrand jason at jlekstrand.net
Sun Nov 12 05:45:51 UTC 2017


The previous iteration algorithm would advance the field pointer right
after we advance the group.  This meant that you would end up with
skipping the first field of the group.  In the common case, where the
only field is a struct (e.g. 3DSTATE_VERTEX_BUFFERS), it would get
skipped entirely.
---
 src/intel/common/gen_decoder.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/intel/common/gen_decoder.c b/src/intel/common/gen_decoder.c
index d09b6ea..b3501ae 100644
--- a/src/intel/common/gen_decoder.c
+++ b/src/intel/common/gen_decoder.c
@@ -824,14 +824,15 @@ iter_advance_group(struct gen_field_iterator *iter)
 static bool
 iter_advance_field(struct gen_field_iterator *iter)
 {
-   while (!iter_more_fields(iter)) {
+   if (iter_more_fields(iter)) {
+      iter->field = iter->field->next;
+   } else {
       if (!iter_more_groups(iter))
          return false;
 
       iter_advance_group(iter);
    }
 
-   iter->field = iter->field->next;
    if (iter->field->name)
       strncpy(iter->name, iter->field->name, sizeof(iter->name));
    else
-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list