Module: Mesa
Branch: main
Commit: 7a9e82e82f52454f61e2f6c8432e652026b7d344
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7a9e82e82f52454f61e2f6c8432e652026b7d344

Author: Rohan Garg <rohan.g...@intel.com>
Date:   Fri Jun 24 13:45:30 2022 +0200

genxml/12.5: Add the EXECUTE_INDIRECT_DISPATCH instruction

Signed-off-by: Rohan Garg <rohan.g...@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwer...@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26421>

---

 src/intel/genxml/gen125.xml | 172 +++++++++++++++++++++++++++++++-------------
 1 file changed, 124 insertions(+), 48 deletions(-)

diff --git a/src/intel/genxml/gen125.xml b/src/intel/genxml/gen125.xml
index f6c9e2f62b3..2de12601565 100644
--- a/src/intel/genxml/gen125.xml
+++ b/src/intel/genxml/gen125.xml
@@ -23,42 +23,6 @@
     <value name="SLM_ENCODES_192K" value="14" />
     <value name="SLM_ENCODES_256K" value="15" />
   </enum>
-  <struct name="CPS_STATE" length="8">
-    <field name="MinCPSizeX" start="0" end="10" type="s3.7" />
-    <field name="Statistics Enable" start="11" end="11" type="bool" />
-    <field name="Coarse Pixel Shading Mode" start="12" end="13" type="uint">
-      <value name="CPS_MODE_NONE" value="0" />
-      <value name="CPS_MODE_CONSTANT" value="1" />
-      <value name="CPS_MODE_RADIAL" value="2" />
-    </field>
-    <field name="ScaleAxis" start="14" end="14" type="uint">
-      <value name="X axis" value="0" />
-      <value name="Y axis" value="1" />
-    </field>
-    <field name="MinCPSizeY" start="15" end="25" type="s3.7" />
-    <field name="Combiner1 Opcode for CPsize" start="26" end="28" type="uint">
-      <value name="PASSTHROUGH" value="0" />
-      <value name="OVERRIDE" value="1" />
-      <value name="HIGH_QUALITY" value="2" />
-      <value name="LOW_QUALITY" value="3" />
-      <value name="RELATIVE" value="4" />
-    </field>
-    <field name="Combiner0 Opcode for CPsize" start="29" end="31" type="uint">
-      <value name="PASSTHROUGH" value="0" />
-      <value name="OVERRIDE" value="1" />
-      <value name="HIGH_QUALITY" value="2" />
-      <value name="LOW_QUALITY" value="3" />
-      <value name="RELATIVE" value="4" />
-    </field>
-    <field name="MaxCPSizeX" start="32" end="42" type="s3.7" />
-    <field name="MaxCPSizeY" start="48" end="58" type="s3.7" />
-    <field name="Y_Focal" start="64" end="79" type="int" />
-    <field name="X_Focal" start="96" end="111" type="int" />
-    <field name="My" start="128" end="159" type="uint" />
-    <field name="Mx" start="160" end="191" type="uint" />
-    <field name="Rmin" start="192" end="223" type="uint" />
-    <field name="Aspect" start="224" end="255" type="uint" />
-  </struct>
   <struct name="INTERFACE_DESCRIPTOR_DATA" length="8">
     <field name="Kernel Start Pointer" start="6" end="31" type="offset" />
     <field name="Software Exception Enable" start="71" end="71" type="bool" />
@@ -119,6 +83,116 @@
     <field name="BTD Mode" start="191" end="191" type="uint" />
     <field name="Preferred SLM Allocation Size" start="192" end="195" 
type="uint" />
   </struct>
+  <struct name="POSTSYNC_DATA" length="5">
+    <field name="Operation" start="0" end="1" type="uint" default="0">
+      <value name="No Write" value="0" />
+      <value name="Write Immediate Data" value="1" />
+      <value name="Write Timestamp" value="3" />
+    </field>
+    <field name="HDC Pipeline Flush" start="2" end="2" type="bool" />
+    <field name="L3 flush" start="3" end="3" type="bool" />
+    <field name="MOCS" start="4" end="10" type="uint" nonzero="true" />
+    <field name="Destination Address" start="32" end="95" type="address" />
+    <field name="Immediate Data" start="96" end="159" type="uint" />
+  </struct>
+  <struct name="COMPUTE_WALKER_BODY" length="38">
+    <field name="Indirect Data Length" start="32" end="48" type="uint" />
+    <field name="L3 prefetch disable" start="49" end="49" type="bool" />
+    <field name="Partition Type" start="62" end="63" type="uint">
+      <value name="PartitionX" value="1" />
+      <value name="PartitionY" value="2" />
+      <value name="PartitionZ" value="3" />
+    </field>
+    <field name="Indirect Data Start Address" start="70" end="95" 
type="offset" />
+    <field name="Message SIMD" start="113" end="114" type="uint">
+      <value name="SIMD8" value="0" />
+      <value name="SIMD16" value="1" />
+      <value name="SIMD32" value="2" />
+    </field>
+    <field name="Tile Layout" start="115" end="117" type="uint">
+      <value name="Linear" value="0" />
+      <value name="TileY 32bpe" value="1" />
+      <value name="TileY 64bpe" value="2" />
+      <value name="TileY 128bpe" value="3" />
+    </field>
+    <field name="Walk Order" start="118" end="120" type="uint">
+      <value name="Walk 012" value="0" />
+      <value name="Walk 021" value="1" />
+      <value name="Walk 102" value="2" />
+      <value name="Walk 120" value="3" />
+      <value name="Walk 201" value="4" />
+      <value name="Walk 210" value="5" />
+    </field>
+    <field name="Emit Inline Parameter" start="121" end="121" type="bool" />
+    <field name="Emit Local" start="122" end="124" type="uint">
+      <value name="Emit None" value="0" />
+      <value name="Emit X" value="1" />
+      <value name="Emit XY" value="3" />
+      <value name="Emit XYZ" value="7" />
+    </field>
+    <field name="Generate Local ID" start="125" end="125" type="bool" />
+    <field name="SIMD Size" start="126" end="127" type="uint">
+      <value name="SIMD8" value="0" />
+      <value name="SIMD16" value="1" />
+      <value name="SIMD32" value="2" />
+    </field>
+    <field name="Execution Mask" start="128" end="159" type="uint" />
+    <field name="Local X Maximum" start="160" end="169" type="uint" />
+    <field name="Local Y Maximum" start="170" end="179" type="uint" />
+    <field name="Local Z Maximum" start="180" end="189" type="uint" />
+    <field name="Thread Group ID X Dimension" start="192" end="223" 
type="uint" />
+    <field name="Thread Group ID Y Dimension" start="224" end="255" 
type="uint" />
+    <field name="Thread Group ID Z Dimension" start="256" end="287" 
type="uint" />
+    <field name="Thread Group ID Starting X" start="288" end="319" type="uint" 
/>
+    <field name="Thread Group ID Starting Y" start="320" end="351" type="uint" 
/>
+    <field name="Thread Group ID Starting Z" start="352" end="383" type="uint" 
/>
+    <field name="Partition ID" start="384" end="415" type="uint" />
+    <field name="Partition Size" start="416" end="447" type="uint" />
+    <field name="Preempt X" start="448" end="479" type="uint" />
+    <field name="Preempt Y" start="480" end="511" type="uint" />
+    <field name="Preempt Z" start="512" end="543" type="uint" />
+    <field name="Interface Descriptor" start="544" end="799" 
type="INTERFACE_DESCRIPTOR_DATA" />
+    <field name="Post Sync" start="800" end="959" type="POSTSYNC_DATA" />
+    <group count="8" start="960" size="32">
+      <field name="Inline Data" start="0" end="31" type="uint" />
+    </group>
+  </struct>
+  <struct name="CPS_STATE" length="8">
+    <field name="MinCPSizeX" start="0" end="10" type="s3.7" />
+    <field name="Statistics Enable" start="11" end="11" type="bool" />
+    <field name="Coarse Pixel Shading Mode" start="12" end="13" type="uint">
+      <value name="CPS_MODE_NONE" value="0" />
+      <value name="CPS_MODE_CONSTANT" value="1" />
+      <value name="CPS_MODE_RADIAL" value="2" />
+    </field>
+    <field name="ScaleAxis" start="14" end="14" type="uint">
+      <value name="X axis" value="0" />
+      <value name="Y axis" value="1" />
+    </field>
+    <field name="MinCPSizeY" start="15" end="25" type="s3.7" />
+    <field name="Combiner1 Opcode for CPsize" start="26" end="28" type="uint">
+      <value name="PASSTHROUGH" value="0" />
+      <value name="OVERRIDE" value="1" />
+      <value name="HIGH_QUALITY" value="2" />
+      <value name="LOW_QUALITY" value="3" />
+      <value name="RELATIVE" value="4" />
+    </field>
+    <field name="Combiner0 Opcode for CPsize" start="29" end="31" type="uint">
+      <value name="PASSTHROUGH" value="0" />
+      <value name="OVERRIDE" value="1" />
+      <value name="HIGH_QUALITY" value="2" />
+      <value name="LOW_QUALITY" value="3" />
+      <value name="RELATIVE" value="4" />
+    </field>
+    <field name="MaxCPSizeX" start="32" end="42" type="s3.7" />
+    <field name="MaxCPSizeY" start="48" end="58" type="s3.7" />
+    <field name="Y_Focal" start="64" end="79" type="int" />
+    <field name="X_Focal" start="96" end="111" type="int" />
+    <field name="My" start="128" end="159" type="uint" />
+    <field name="Mx" start="160" end="191" type="uint" />
+    <field name="Rmin" start="192" end="223" type="uint" />
+    <field name="Aspect" start="224" end="255" type="uint" />
+  </struct>
   <struct name="MI_MATH_ALU_INSTRUCTION" length="1">
     <field name="Operand 2" start="0" end="9" type="uint" prefix="MI_ALU">
       <value name="REG0" value="0x00" />
@@ -188,18 +262,6 @@
       <value name="STOREIND" value="0x181" />
     </field>
   </struct>
-  <struct name="POSTSYNC_DATA" length="5">
-    <field name="Operation" start="0" end="1" type="uint" default="0">
-      <value name="No Write" value="0" />
-      <value name="Write Immediate Data" value="1" />
-      <value name="Write Timestamp" value="3" />
-    </field>
-    <field name="HDC Pipeline Flush" start="2" end="2" type="bool" />
-    <field name="L3 flush" start="3" end="3" type="bool" />
-    <field name="MOCS" start="4" end="10" type="uint" nonzero="true" />
-    <field name="Destination Address" start="32" end="95" type="address" />
-    <field name="Immediate Data" start="96" end="159" type="uint" />
-  </struct>
   <struct name="RENDER_SURFACE_STATE" length="16">
     <field name="Cube Face Enable - Positive Z" start="0" end="0" type="bool" 
/>
     <field name="Cube Face Enable - Negative Z" start="1" end="1" type="bool" 
/>
@@ -1583,6 +1645,20 @@
       <field name="Inline Data" start="0" end="31" type="uint" />
     </group>
   </instruction>
+  <instruction name="EXECUTE_INDIRECT_DISPATCH" bias="2" length="44">
+    <field name="DWord Length" start="0" end="7" type="uint" default="42" />
+    <field name="Predicate Enable" start="8" end="8" type="bool" />
+    <field name="MOCS" start="12" end="15" type="uint" nonzero="true" />
+    <field name="3D Command Sub Opcode" start="16" end="23" type="uint" 
default="1" />
+    <field name="3D Command Opcode" start="24" end="26" type="uint" 
default="4" />
+    <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="Max Count" start="32" end="63" type="uint" />
+    <field name="Count Buffer Indirect Enable" start="64" end="64" type="bool" 
/>
+    <field name="Count Buffer Address" start="66" end="127" type="address" />
+    <field name="Argument Buffer Start Address" start="130" end="191" 
type="address" />
+    <field name="COMPUTE_WALKER_BODY" start="192" end="1407" 
type="COMPUTE_WALKER_BODY" />
+  </instruction>
   <instruction name="EXECUTE_INDIRECT_DRAW" bias="2" length="6" 
engine="render">
     <field name="DWord Length" start="0" end="7" type="uint" default="4" />
     <field name="Predicate Enable" start="8" end="8" type="bool" />

Reply via email to