intel/genxml: Add 3DPRIMITIVE_EXTENDED opcodes on Gen11+
authorJason Ekstrand <jason@jlekstrand.net>
Sun, 15 Dec 2019 01:24:58 +0000 (19:24 -0600)
committerMarge Bot <emma+marge@anholt.net>
Tue, 13 Dec 2022 19:22:02 +0000 (19:22 +0000)
On Gen11 and above, the 3DPRIMITIVE command takes an optional additional
three DWORDs of data as "extended parameters".  These extended
parameters only exist in the packet if "Extended Parameters Present" is
set.  Because our packing code doesn't handle variable-length commands
well, this commit adds a second version of the command which isn't real
but is just a copy of 3DPRIMITIVE with the additional dwords where the
"Extended Parameters Present" defaults to true and "DWord Length" is
adjusted by 3 as needed.  The 3DPRIMITIVE command is then the gen4-9
version which still works fine but doesn't have the new parameters.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20295>

src/intel/genxml/gen11.xml
src/intel/genxml/gen12.xml
src/intel/genxml/gen125.xml

index 6879afb..97f6649 100644 (file)
     <field name="Instance Count" start="128" end="159" type="uint" />
     <field name="Start Instance Location" start="160" end="191" type="uint" />
     <field name="Base Vertex Location" start="192" end="223" type="int" />
+  </instruction>
+  <instruction name="3DPRIMITIVE_EXTENDED" bias="2" length="10" engine="render">
+    <field name="DWord Length" start="0" end="7" type="uint" default="8" />
+    <field name="Predicate Enable" start="8" end="8" type="bool" />
+    <field name="UAV Coherency Required" start="9" end="9" type="bool" />
+    <field name="Indirect Parameter Enable" start="10" end="10" type="bool" />
+    <field name="Extended Parameters Present" start="11" end="11" type="bool" default="1" />
+    <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="0" />
+    <field name="3D Command Opcode" start="24" end="26" type="uint" default="3" />
+    <field name="Command SubType" start="27" end="28" type="uint" default="3" />
+    <field name="Command Type" start="29" end="31" type="uint" default="3" />
+    <field name="Primitive Topology Type" start="32" end="37" type="3D_Prim_Topo_Type" />
+    <field name="Vertex Access Type" start="40" end="40" type="uint">
+      <value name="SEQUENTIAL" value="0" />
+      <value name="RANDOM" value="1" />
+    </field>
+    <field name="End Offset Enable" start="41" end="41" type="bool" />
+    <field name="Vertex Count Per Instance" start="64" end="95" type="uint" />
+    <field name="Start Vertex Location" start="96" end="127" type="uint" />
+    <field name="Instance Count" start="128" end="159" type="uint" />
+    <field name="Start Instance Location" start="160" end="191" type="uint" />
+    <field name="Base Vertex Location" start="192" end="223" type="int" />
     <field name="Extended Parameter 0" start="224" end="255" type="uint" />
     <field name="Extended Parameter 1" start="256" end="287" type="uint" />
     <field name="Extended Parameter 2" start="288" end="319" type="uint" />
index c7cc3fe..a25e4a5 100644 (file)
     <field name="Extended Parameter 1" start="256" end="287" type="uint" />
     <field name="Extended Parameter 2" start="288" end="319" type="uint" />
   </instruction>
+  <instruction name="3DPRIMITIVE_EXTENDED" bias="2" length="10" engine="render">
+    <field name="DWord Length" start="0" end="7" type="uint" default="8" />
+    <field name="Predicate Enable" start="8" end="8" type="bool" />
+    <field name="UAV Coherency Required" start="9" end="9" type="bool" />
+    <field name="Indirect Parameter Enable" start="10" end="10" type="bool" />
+    <field name="Extended Parameters Present" start="11" end="11" type="bool" default="1" />
+    <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="0" />
+    <field name="3D Command Opcode" start="24" end="26" type="uint" default="3" />
+    <field name="Command SubType" start="27" end="28" type="uint" default="3" />
+    <field name="Command Type" start="29" end="31" type="uint" default="3" />
+    <field name="Primitive Topology Type" start="32" end="37" type="3D_Prim_Topo_Type" />
+    <field name="Vertex Access Type" start="40" end="40" type="uint">
+      <value name="SEQUENTIAL" value="0" />
+      <value name="RANDOM" value="1" />
+    </field>
+    <field name="End Offset Enable" start="41" end="41" type="bool" />
+    <field name="Vertex Count Per Instance" start="64" end="95" type="uint" />
+    <field name="Start Vertex Location" start="96" end="127" type="uint" />
+    <field name="Instance Count" start="128" end="159" type="uint" />
+    <field name="Start Instance Location" start="160" end="191" type="uint" />
+    <field name="Base Vertex Location" start="192" end="223" type="int" />
+    <field name="Extended Parameter 0" start="224" end="255" type="uint" />
+    <field name="Extended Parameter 1" start="256" end="287" type="uint" />
+    <field name="Extended Parameter 2" start="288" end="319" type="uint" />
+  </instruction>
   <instruction name="3DSTATE_3D_MODE" bias="2" length="2" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="0" />
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="30" />
index 1c6631f..cc8671e 100644 (file)
     <field name="Extended Parameter 1" start="256" end="287" type="uint" />
     <field name="Extended Parameter 2" start="288" end="319" type="uint" />
   </instruction>
+  <instruction name="3DPRIMITIVE_EXTENDED" bias="2" length="10" engine="render">
+    <field name="DWord Length" start="0" end="7" type="uint" default="8" />
+    <field name="Predicate Enable" start="8" end="8" type="bool" />
+    <field name="UAV Coherency Required" start="9" end="9" type="bool" />
+    <field name="Indirect Parameter Enable" start="10" end="10" type="bool" />
+    <field name="Extended Parameters Present" start="11" end="11" type="bool" default="1" />
+    <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="0" />
+    <field name="3D Command Opcode" start="24" end="26" type="uint" default="3" />
+    <field name="Command SubType" start="27" end="28" type="uint" default="3" />
+    <field name="Command Type" start="29" end="31" type="uint" default="3" />
+    <field name="Primitive Topology Type" start="32" end="37" type="3D_Prim_Topo_Type" />
+    <field name="Vertex Access Type" start="40" end="40" type="uint">
+      <value name="SEQUENTIAL" value="0" />
+      <value name="RANDOM" value="1" />
+    </field>
+    <field name="End Offset Enable" start="41" end="41" type="bool" />
+    <field name="Vertex Count Per Instance" start="64" end="95" type="uint" />
+    <field name="Start Vertex Location" start="96" end="127" type="uint" />
+    <field name="Instance Count" start="128" end="159" type="uint" />
+    <field name="Start Instance Location" start="160" end="191" type="uint" />
+    <field name="Base Vertex Location" start="192" end="223" type="int" />
+    <field name="Extended Parameter 0" start="224" end="255" type="uint" />
+    <field name="Extended Parameter 1" start="256" end="287" type="uint" />
+    <field name="Extended Parameter 2" start="288" end="319" type="uint" />
+  </instruction>
   <instruction name="3DSTATE_3D_MODE" bias="2" length="2" engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="0" />
     <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="30" />