From 762c68b8796bea8a277c883b94f7184a8307f274 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Sat, 25 Oct 2014 13:27:09 +0800 Subject: [PATCH] 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 --- 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 922acc00..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; } } -- 2.7.4