[Mesa-dev] [PATCH 1/5] panfrost/decode: Disassemble Bifrost shaders

Alyssa Rosenzweig alyssa at rosenzweig.io
Sat May 18 21:53:16 UTC 2019


We already have the Bifrost disassembler in-tree, so now that panwrap is
able to dump Bifrost command streams, hook up the disassembler to
pandecode.

Signed-off-by: Alyssa Rosenzweig <alyssa at rosenzweig.io>
Cc: Ryan Houdek <Sonicadvance1 at gmail.com>
---
 src/gallium/drivers/panfrost/meson.build        |  3 ++-
 src/gallium/drivers/panfrost/pandecode/decode.c | 15 ++++++++-------
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/gallium/drivers/panfrost/meson.build b/src/gallium/drivers/panfrost/meson.build
index b3673d15bc1..65db4006e50 100644
--- a/src/gallium/drivers/panfrost/meson.build
+++ b/src/gallium/drivers/panfrost/meson.build
@@ -151,7 +151,8 @@ files_pandecode = files(
 
   'pan_pretty_print.c',
 
-  'midgard/disassemble.c'
+  'midgard/disassemble.c',
+  'bifrost/disassemble.c',
 )
 
 pandecode = executable(
diff --git a/src/gallium/drivers/panfrost/pandecode/decode.c b/src/gallium/drivers/panfrost/pandecode/decode.c
index f8f49f69e42..e70ebb7f660 100644
--- a/src/gallium/drivers/panfrost/pandecode/decode.c
+++ b/src/gallium/drivers/panfrost/pandecode/decode.c
@@ -33,6 +33,7 @@
 
 #include "../pan_pretty_print.h"
 #include "../midgard/disassemble.h"
+#include "../bifrost/disassemble.h"
 int pandecode_replay_jc(mali_ptr jc_gpu_va, bool bifrost);
 
 #define MEMORY_PROP(obj, p) {\
@@ -1155,17 +1156,17 @@ pandecode_shader_disassemble(mali_ptr shader_ptr, int shader_no, int type,
         /* Compute maximum possible size */
         size_t sz = mem->length - (shader_ptr - mem->gpu_va);
 
-        /* TODO: When Bifrost is upstreamed, disassemble that too */
-        if (is_bifrost) {
-                pandecode_msg("Bifrost disassembler not yet upstreamed");
-                return;
-        }
-
         /* Print some boilerplate to clearly denote the assembly (which doesn't
          * obey indentation rules), and actually do the disassembly! */
 
         printf("\n\n");
-        disassemble_midgard(code, sz);
+
+        if (is_bifrost) {
+                disassemble_bifrost(code, sz, false);
+        } else {
+                disassemble_midgard(code, sz);
+        }
+
         printf("\n\n");
 }
 
-- 
2.20.1



More information about the mesa-dev mailing list