Mesa (master): ilo: improve blob decoding

Chia-I Wu olv at kemper.freedesktop.org
Sat Oct 25 06:58:57 UTC 2014


Module: Mesa
Branch: master
Commit: 762c68b8796bea8a277c883b94f7184a8307f274
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=762c68b8796bea8a277c883b94f7184a8307f274

Author: Chia-I Wu <olvaffe at gmail.com>
Date:   Sat Oct 25 13:27:09 2014 +0800

ilo: improve blob decoding

The last few dwords were skipped if the total number of dwords was not a
multiple of 4.  Change the formatting for better readability.

Signed-off-by: Chia-I Wu <olvaffe at gmail.com>

---

 src/gallium/drivers/ilo/ilo_builder_decode.c |   39 ++++++++++++++++++++------
 1 file changed, 31 insertions(+), 8 deletions(-)

diff --git a/src/gallium/drivers/ilo/ilo_builder_decode.c b/src/gallium/drivers/ilo/ilo_builder_decode.c
index 922acc0..3a9ae24 100644
--- a/src/gallium/drivers/ilo/ilo_builder_decode.c
+++ b/src/gallium/drivers/ilo/ilo_builder_decode.c
@@ -79,21 +79,44 @@ writer_decode_blob(const struct ilo_builder *builder,
                    enum ilo_builder_writer_type which,
                    const struct ilo_builder_item *item)
 {
-   const unsigned state_size = sizeof(uint32_t) * 4;
+   const unsigned state_size = sizeof(uint32_t);
    const unsigned count = item->size / state_size;
    unsigned offset = item->offset;
    unsigned i;
 
-   for (i = 0; i < count; i++) {
+   for (i = 0; i < count; i += 4) {
       const uint32_t *dw = writer_pointer(builder, which, offset);
 
-      writer_dw(builder, which, offset, 0, "BLOB%d", i);
-      /* output a single line for all four DWords */
-      ilo_printf("(% f, % f, % f, % f) (0x%08x, 0x%08x, 0x%08x, 0x%08x)\n",
-               uif(dw[0]), uif(dw[1]), uif(dw[2]), uif(dw[3]),
-               dw[0], dw[1], dw[2], dw[3]);
+      writer_dw(builder, which, offset, 0, "BLOB%d", i / 4);
+
+      switch (count - i) {
+      case 1:
+         ilo_printf("(%10.4f, %10c, %10c, %10c) "
+                    "(0x%08x, %10c, %10c, %10c)\n",
+                    uif(dw[0]), 'X', 'X', 'X',
+                        dw[0],  'X', 'X', 'X');
+         break;
+      case 2:
+         ilo_printf("(%10.4f, %10.4f, %10c, %10c) "
+                    "(0x%08x, 0x%08x, %10c, %10c)\n",
+                    uif(dw[0]), uif(dw[1]), 'X', 'X',
+                        dw[0],      dw[1],  'X', 'X');
+         break;
+      case 3:
+         ilo_printf("(%10.4f, %10.4f, %10.4f, %10c) "
+                    "(0x%08x, 0x%08x, 0x%08x, %10c)\n",
+                    uif(dw[0]), uif(dw[1]), uif(dw[2]), 'X',
+                        dw[0],      dw[1],      dw[2],  'X');
+         break;
+      default:
+         ilo_printf("(%10.4f, %10.4f, %10.4f, %10.4f) "
+                    "(0x%08x, 0x%08x, 0x%08x, 0x%08x)\n",
+                    uif(dw[0]), uif(dw[1]), uif(dw[2]), uif(dw[3]),
+                        dw[0],      dw[1],      dw[2],      dw[3]);
+         break;
+      }
 
-      offset += state_size;
+      offset += state_size * 4;
    }
 }
 




More information about the mesa-commit mailing list