panfrost: Add a bit more info about some tiler fields
authorTomeu Vizoso <tomeu.vizoso@collabora.com>
Mon, 27 Apr 2020 15:09:39 +0000 (17:09 +0200)
committerTomeu Vizoso <tomeu.vizoso@collabora.com>
Fri, 1 May 2020 14:52:07 +0000 (16:52 +0200)
Has been observed that after the job chain has completed, those fields
become populated.

tiler_heap_next_start contains an address inside the tiler heap, a bit
before the value that the GPU writes to tiler_heap_free.

used_hierarchy_mask contains a hex value that corresponds to values
observed as hierarchy masks.

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4832>

src/panfrost/include/panfrost-job.h
src/panfrost/pandecode/decode.c

index 827f9287d4f70c60f286a36bc159d1c6c2e844ac..b02d0abcde93c41d7ff00421ed40732d676dce92 100644 (file)
@@ -1041,12 +1041,13 @@ struct bifrost_tiler_heap_meta {
 } __attribute__((packed));
 
 struct bifrost_tiler_meta {
-        u64 zero0;
+        u32 tiler_heap_next_start;  /* To be written by the GPU */
+        u32 used_hierarchy_mask;  /* To be written by the GPU */
         u16 hierarchy_mask; /* Five values observed: 0xa, 0x14, 0x28, 0x50, 0xa0 */
         u16 flags;
         u16 width;
         u16 height;
-        u64 zero1;
+        u64 zero0;
         mali_ptr tiler_heap_meta;
         /* TODO what is this used for? */
         u64 zeros[20];
index 743abc00d137a7e3f245efb61eaab70931e8e5eb..2779ec4873c99043a1f3980ac15cdd45335c3a95 100644 (file)
@@ -2890,11 +2890,8 @@ pandecode_tiler_meta(mali_ptr gpu_va, int job_no)
         pandecode_log("struct bifrost_tiler_meta tiler_meta_%"PRIx64"_%d = {\n", gpu_va, job_no);
         pandecode_indent++;
 
-        if (t->zero0 || t->zero1) {
-                pandecode_msg("XXX: tiler meta zero tripped\n");
-                pandecode_prop("zero0 = 0x%" PRIx64, t->zero0);
-                pandecode_prop("zero1 = 0x%" PRIx64, t->zero1);
-        }
+        pandecode_prop("tiler_heap_next_start = 0x%" PRIx32, t->tiler_heap_next_start);
+        pandecode_prop("used_hierarchy_mask = 0x%" PRIx32, t->used_hierarchy_mask);
 
         if (t->hierarchy_mask != 0xa &&
             t->hierarchy_mask != 0x14 &&
@@ -2910,6 +2907,11 @@ pandecode_tiler_meta(mali_ptr gpu_va, int job_no)
         pandecode_prop("width = MALI_POSITIVE(%d)", t->width + 1);
         pandecode_prop("height = MALI_POSITIVE(%d)", t->height + 1);
 
+        if (t->zero0) {
+                pandecode_msg("XXX: tiler meta zero tripped\n");
+                pandecode_prop("zero0 = 0x%" PRIx64, t->zero0);
+        }
+
         for (int i = 0; i < 12; i++) {
                 if (t->zeros[i] != 0) {
                         pandecode_msg("XXX: tiler heap zero %d tripped, value %" PRIx64 "\n",