v3d: Pass the whole clif_dump structure to v3d_print_group().
[mesa.git] / src / broadcom / cle / v3d_decoder.c
index 832ff3c7089329b371bdea5ebaefcf974f5d4f79..de57e5f5acbed0a8b9005d4632fb895b4d50c0b9 100644 (file)
@@ -37,6 +37,7 @@
 #include "v3d_decoder.h"
 #include "v3d_packet_helpers.h"
 #include "v3d_xml.h"
+#include "broadcom/clif/clif_private.h"
 
 struct v3d_spec {
         uint32_t ver;
@@ -858,6 +859,8 @@ v3d_field_iterator_next(struct v3d_field_iterator *iter)
                 uint32_t value = __gen_unpack_uint(iter->p, s, e);
                 if (iter->field->minus_one)
                         value++;
+                if (strcmp(iter->field->name, "Vec size") == 0 && value == 0)
+                        value = 1 << (e - s);
                 snprintf(iter->value, sizeof(iter->value), "%u", value);
                 enum_name = v3d_get_enum_name(&iter->field->inline_enum, value);
                 break;
@@ -915,24 +918,24 @@ v3d_field_iterator_next(struct v3d_field_iterator *iter)
         if (enum_name) {
                 int length = strlen(iter->value);
                 snprintf(iter->value + length, sizeof(iter->value) - length,
-                         " (%s)", enum_name);
+                         " /* %s */", enum_name);
         }
 
         return true;
 }
 
 void
-v3d_print_group(FILE *outfile, struct v3d_group *group,
+v3d_print_group(struct clif_dump *clif, struct v3d_group *group,
                 uint64_t offset, const uint8_t *p, bool color)
 {
         struct v3d_field_iterator iter;
 
         v3d_field_iterator_init(&iter, group, p, color);
         while (v3d_field_iterator_next(&iter)) {
-                fprintf(outfile, "    %s: %s\n", iter.name, iter.value);
+                fprintf(clif->out, "    %s: %s\n", iter.name, iter.value);
                 if (iter.struct_desc) {
                         uint64_t struct_offset = offset + iter.offset;
-                        v3d_print_group(outfile, iter.struct_desc,
+                        v3d_print_group(clif, iter.struct_desc,
                                         struct_offset,
                                         &p[iter.offset], color);
                 }