panfrost: Elucidate thread group split field
authorAlyssa Rosenzweig <alyssa@collabora.com>
Thu, 20 May 2021 23:25:00 +0000 (19:25 -0400)
committerMarge Bot <eric+marge@anholt.net>
Tue, 1 Jun 2021 19:10:28 +0000 (19:10 +0000)
Last unknown field in the XML :-)

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11074>

src/gallium/drivers/panfrost/pan_context.c
src/panfrost/lib/midgard.xml
src/panfrost/lib/pan_invocation.c

index c258020..238bca7 100644 (file)
@@ -553,7 +553,7 @@ panfrost_direct_draw(struct panfrost_batch *batch,
                         cfg.workgroups_x_shift = 0;
                         cfg.workgroups_y_shift = 0;
                         cfg.workgroups_z_shift = 32;
-                        cfg.unknown_shift = 2;
+                        cfg.thread_group_split = MALI_SPLIT_MIN_EFFICIENT;
                 }
         }
 
index 1f52695..f27a9ef 100644 (file)
     <field name="Workgroups X shift" size="6" start="1:10" type="uint"/>
     <field name="Workgroups Y shift" size="6" start="1:16" type="uint"/>
     <field name="Workgroups Z shift" size="6" start="1:22" type="uint"/>
-    <field name="Unknown shift" size="4" start="1:28" type="uint"/>
+    <field name="Thread group split" size="4" start="1:28" type="uint" prefix="MALI_SPLIT">
+      <value name="Min efficient" value="2"/>
+    </field>
   </struct>
 
   <enum name="Point Size Array Format">
index c92296f..6c0843e 100644 (file)
@@ -98,9 +98,11 @@ panfrost_pack_work_groups_compute(
                 if (quirk_graphics && (num_z <= 1))
                         cfg.workgroups_z_shift = 32;
 
-                /* Quirk: for graphics, >= 2.  For compute, 2 without barriers
-                 * but equal to workgroups_x_shift with barriers */
+                /* For graphics, set to the minimum efficient value. For
+                 * compute, must equal the workgroup X shift for barriers to
+                 * function correctly */
 
-                cfg.unknown_shift = quirk_graphics ? 2 : cfg.workgroups_x_shift;
+                cfg.thread_group_split = quirk_graphics ?
+                        MALI_SPLIT_MIN_EFFICIENT : cfg.workgroups_x_shift;
         }
 }