summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/panfrost/include/panfrost-job.h
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <[email protected]>2019-06-13 10:25:32 -0700
committerAlyssa Rosenzweig <[email protected]>2019-06-17 07:47:49 -0700
commit7f26bb3553fcdb896c3fb65d21ef7ec1f2325930 (patch)
tree0830872a925324a7830b07b62bfb339ca84f712d /src/gallium/drivers/panfrost/include/panfrost-job.h
parent8d6fb66e3acc9565549c77071ab376ce2a7b8bb2 (diff)
panfrost: Rename tiler fields per tiler research
Following the research into Midgard's hierarchical tiling infrastructure, we now understand (in broad stokes) the purpose of each tiler field in the MFBD. Additionally, we understand more of the tiling fields in the SFBD and in Bifrost's structures, although this knowledge is still incomplete. Update the names, decoder, and comments to reflect this new understanding. Signed-off-by: Alyssa Rosenzweig <[email protected]>
Diffstat (limited to 'src/gallium/drivers/panfrost/include/panfrost-job.h')
-rw-r--r--src/gallium/drivers/panfrost/include/panfrost-job.h40
1 files changed, 24 insertions, 16 deletions
diff --git a/src/gallium/drivers/panfrost/include/panfrost-job.h b/src/gallium/drivers/panfrost/include/panfrost-job.h
index 401fef8fcec..c7cb2d7b5f4 100644
--- a/src/gallium/drivers/panfrost/include/panfrost-job.h
+++ b/src/gallium/drivers/panfrost/include/panfrost-job.h
@@ -963,7 +963,8 @@ struct bifrost_tiler_heap_meta {
struct bifrost_tiler_meta {
u64 zero0;
- u32 unk; // = 0xf0
+ u16 hierarchy_mask;
+ u16 flags;
u16 width;
u16 height;
u64 zero1;
@@ -1362,13 +1363,18 @@ struct mali_single_framebuffer {
u32 zero6[7];
- /* Very weird format, see generation code in trans_builder.c */
+ /* Logically, by symmetry to the MFBD, this ought to be the size of the
+ * polygon list. But this doesn't quite compute up. More investigation
+ * is needed. */
+
u32 tiler_resolution_check;
- u32 tiler_flags;
- /* Guesses? */
- mali_ptr tiler_scratch_start; /* Pointing towards... a zero buffer? */
- mali_ptr tiler_scratch_middle;
+ u16 tiler_hierarchy_mask;
+ u16 tiler_flags;
+
+ /* See pan_tiler.c */
+ mali_ptr tiler_polygon_list;
+ mali_ptr tiler_polygon_list_body;
/* See mali_kbase_replay.c */
mali_ptr tiler_heap_free;
@@ -1523,21 +1529,23 @@ struct bifrost_framebuffer {
/* Tiler section begins here */
- u32 tiler_unknown;
+ u32 tiler_polygon_list_size;
/* Name known from the replay workaround in the kernel. What exactly is
- * flagged here is less known. We do that (tiler_flags & 0x1ff)
+ * flagged here is less known. We do that (tiler_hierarchy_mask & 0x1ff)
* specifies a mask of hierarchy weights, which explains some of the
- * performance mysteries around setting it. We also known (1 << 16)
- * should be set, but there's no explanation in the kernel why. */
- u32 tiler_flags;
+ * performance mysteries around setting it. We also see the bottom bit
+ * of tiler_flags set in the kernel, but no comment why. */
+
+ u16 tiler_hierarchy_mask;
+ u16 tiler_flags;
- /* Note: these are guesses! */
- mali_ptr tiler_scratch_start;
- mali_ptr tiler_scratch_middle;
+ /* See mali_tiler.c for an explanation */
+ mali_ptr tiler_polygon_list;
+ mali_ptr tiler_polygon_list_body;
- /* These are not, since we see symmetry with replay
- * jobs which name these explicitly */
+ /* Names based on we see symmetry with replay jobs which name these
+ * explicitly */
mali_ptr tiler_heap_start; /* tiler heap_free_address */
mali_ptr tiler_heap_end;