summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/panfrost/include/panfrost-job.h
diff options
context:
space:
mode:
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;