[Mesa-dev] [PATCH 2/4] i965: Fix dump_prog_cache to handle compacted instructions.

Kenneth Graunke kenneth at whitecape.org
Thu May 15 16:22:01 PDT 2014


dump_prog_cache has interpreted compacted instructions as full size
instructions, decoding garbage and complaining about invalid values.

We can just use brw_dump_compile to handle this correctly in less code.
The output format changes slightly, but it's still perfectly acceptable.

Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
---
 src/mesa/drivers/dri/i965/brw_state_dump.c | 18 +++++-------------
 1 file changed, 5 insertions(+), 13 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_state_dump.c b/src/mesa/drivers/dri/i965/brw_state_dump.c
index 57dd2e7..5cc5ac6 100644
--- a/src/mesa/drivers/dri/i965/brw_state_dump.c
+++ b/src/mesa/drivers/dri/i965/brw_state_dump.c
@@ -30,6 +30,7 @@
 
 #include "brw_context.h"
 #include "brw_defines.h"
+#include "brw_eu.h"
 
 static void
 batch_out(struct brw_context *brw, const char *name, uint32_t offset,
@@ -486,8 +487,7 @@ static void
 dump_prog_cache(struct brw_context *brw)
 {
    struct brw_cache *cache = &brw->cache;
-   unsigned int b, i;
-   uint32_t *data;
+   unsigned int b;
 
    drm_intel_bo_map(brw->cache.bo, false);
 
@@ -496,9 +496,6 @@ dump_prog_cache(struct brw_context *brw)
 
       for (item = cache->items[b]; item; item = item->next) {
 	 const char *name;
-	 uint32_t offset = item->offset;
-
-	 data = brw->cache.bo->virtual + item->offset;
 
 	 switch (item->cache_id) {
 	 case BRW_VS_PROG:
@@ -524,14 +521,9 @@ dump_prog_cache(struct brw_context *brw)
 	    break;
 	 }
 
-	 for (i = 0; i < item->size / 4 / 4; i++) {
-	    fprintf(stderr, "0x%08x: %8s: 0x%08x 0x%08x 0x%08x 0x%08x ",
-		    offset + i * 4 * 4,
-		    name,
-		    data[i * 4], data[i * 4 + 1], data[i * 4 + 2], data[i * 4 + 3]);
-
-	    brw_disasm(stderr, (void *)(data + i * 4), brw->gen, false);
-	 }
+         fprintf(stderr, "%s:\n", name);
+         brw_dump_compile(brw, brw->cache.bo->virtual, item->offset, item->size,
+                          stderr);
       }
    }
 
-- 
1.9.2



More information about the mesa-dev mailing list