panfrost: Adjust the primitive desc definition

Add missing fields and rename some of the existing ones.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6980>
diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c
index 2b7ce4b..222a764 100644
--- a/src/gallium/drivers/panfrost/pan_context.c
+++ b/src/gallium/drivers/panfrost/pan_context.c
@@ -349,10 +349,12 @@
                   pan_section_ptr(job, MIDGARD_TILER_JOB, PRIMITIVE);
         pan_pack(section, PRIMITIVE, cfg) {
                 cfg.draw_mode = pan_draw_mode(info->mode);
-                cfg.point_size_array = panfrost_writes_point_size(ctx);
+                if (panfrost_writes_point_size(ctx))
+                        cfg.point_size_array_format = MALI_POINT_SIZE_ARRAY_FORMAT_FP16;
                 cfg.first_provoking_vertex = rast->flatshade_first;
-                cfg.primitive_restart = info->primitive_restart;
-                cfg.unknown_3 = 6;
+                if (info->primitive_restart)
+                        cfg.primitive_restart = MALI_PRIMITIVE_RESTART_IMPLICIT;
+                cfg.job_task_split = 6;
 
                 if (info->index_size) {
                         cfg.index_type = panfrost_translate_index_size(info->index_size);
diff --git a/src/panfrost/lib/decode.c b/src/panfrost/lib/decode.c
index a556fd7..d736511 100644
--- a/src/panfrost/lib/decode.c
+++ b/src/panfrost/lib/decode.c
@@ -1393,7 +1393,7 @@
 
         pan_section_unpack(p, MIDGARD_TILER_JOB, PRIMITIVE, primitive);
         pandecode_primitive_size(pan_section_ptr(p, MIDGARD_TILER_JOB, PRIMITIVE_SIZE),
-                                 primitive.point_size_array == 0);
+                                 primitive.point_size_array_format == MALI_POINT_SIZE_ARRAY_FORMAT_NONE);
         pandecode_indent--;
         pandecode_log("\n");
 }
diff --git a/src/panfrost/lib/midgard.xml b/src/panfrost/lib/midgard.xml
index 74dcc38..48e55e8 100644
--- a/src/panfrost/lib/midgard.xml
+++ b/src/panfrost/lib/midgard.xml
@@ -324,24 +324,37 @@
     <field name="Unknown shift" size="4" start="1:28" type="uint"/>
   </struct>
 
+  <enum name="Point Size Array Format">
+    <value name="None" value="0"/>
+    <value name="FP16" value="2"/>
+    <value name="FP32" value="3"/>
+  </enum>
+
+  <enum name="Primitive Restart">
+    <value name="None" value="0"/>
+    <value name="Implicit" value="2"/>
+    <value name="Explicit" value="3"/>
+  </enum>
+
   <struct name="Primitive">
-    <field name="Draw mode" size="4" start="0:0" type="Draw Mode" default="None"/>
-    <field name="Index type" size="2" start="0:8" type="Index Type" default="None"/>
-    <field name="Point size array" size="1" start="0:12" type="bool"/>
-    <!--- TODO -->
+    <field name="Draw mode" size="8" start="0:0" type="Draw Mode" default="None"/>
+    <field name="Index type" size="3" start="0:8" type="Index Type" default="None"/>
+    <field name="Point size array format" size="2" start="0:11" type="Point Size Array Format"/>
+    <field name="Primitive Index Enable" size="1" start="0:13" type="bool"/>
+    <field name="Primitive Index Writeback" size="1" start="0:14" type="bool"/>
     <field name="First provoking vertex" size="1" start="0:15" type="bool" default="true"/>
-    <field name="Unknown 1" size="1" start="0:16" type="bool" default="true"/>
-    <field name="Unknown 2" size="1" start="0:17" type="bool" default="true"/>
-    <!--- TODO -->
-    <field name="Primitive restart" size="1" start="0:20" type="bool"/>
-    <field name="Unknown 3" size="6" start="0:26" type="uint"/>
+    <field name="Low Depth Cull" size="1" start="0:16" type="bool" default="true"/>
+    <field name="High Depth Cull" size="1" start="0:17" type="bool" default="true"/>
+    <field name="Secondary Shader" size="1" start="0:18" type="bool"/>
+    <field name="Primitive restart" size="2" start="0:19" type="Primitive Restart"/>
+    <field name="Job Task Split" size="6" start="0:26" type="uint"/>
     <field name="Base vertex offset" size="32" start="1:0" type="uint"/>
-    <!--- TODO: word 2 -->
+    <field name="Primitive Restart Index" size="32" start="2:0" type="uint"/>
     <field name="Index count" size="32" start="3:0" type="uint" modifier="minus(1)"/>
     <field name="Indices" size="64" start="4:0" type="address"/>
   </struct>
 
-  <struct name="Draw" size="30">
+  <struct name="Draw" size="32">
     <field name="Four Components Per Vertex" size="1" start="0:0" type="bool"/>
     <field name="Draw Descriptor Is 64b" size="1" start="0:1" type="bool"/>
     <field name="Texture Descriptor Is 64b" size="1" start="0:2" type="bool"/>
diff --git a/src/panfrost/lib/pan_blit.c b/src/panfrost/lib/pan_blit.c
index eac5061..dd77698 100644
--- a/src/panfrost/lib/pan_blit.c
+++ b/src/panfrost/lib/pan_blit.c
@@ -362,7 +362,7 @@
         pan_section_pack(t.cpu, MIDGARD_TILER_JOB, PRIMITIVE, cfg) {
                 cfg.draw_mode = MALI_DRAW_MODE_TRIANGLES;
                 cfg.index_count = vertex_count;
-                cfg.unknown_3 = 6;
+                cfg.job_task_split = 6;
         }
 
         panfrost_pack_work_groups_compute(pan_section_ptr(t.cpu, MIDGARD_TILER_JOB, INVOCATION),