Mesa (master): intel/genxml: Define 3DSTATE_SUBSLICE_HASH_TABLE command for Gen12 and Gen12.5.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Feb 24 06:33:22 UTC 2021


Module: Mesa
Branch: master
Commit: ab076e19ed93b1240f21dcfaf48e0dbe70322966
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ab076e19ed93b1240f21dcfaf48e0dbe70322966

Author: Francisco Jerez <currojerez at riseup.net>
Date:   Wed Jan 13 19:57:35 2021 -0800

intel/genxml: Define 3DSTATE_SUBSLICE_HASH_TABLE command for Gen12 and Gen12.5.

This command allows programming custom pixel hashing tables
controlling the balancing of load across pixel pipes.  Rather
confusingly 3DSTATE_SLICE_TABLE_STATE_POINTERS was serving the same
purpose on Gen11: A pixel is mapped to the pixel pipe with index
specified by the entry in the table corresponding to the LSBs of the
pixel coordinates [Yes you read right the entries are neither subslice
nor slice indices!].  Either a 2-way or a 3-way table can be
programmed based on whether the platform has two or three pixel pipes
per slice.  In addition the 16x8 tables defined below can hold two
separate 8x8 tables when in DUAL_TABLE mode (which AFAIA is only
useful for platforms with multiple asymmetric slices -- I.e. no
production platforms as of today to my knowledge).

Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8749>

---

 src/intel/genxml/gen12.xml  | 30 ++++++++++++++++++++++++++++++
 src/intel/genxml/gen125.xml | 30 ++++++++++++++++++++++++++++++
 2 files changed, 60 insertions(+)

diff --git a/src/intel/genxml/gen12.xml b/src/intel/genxml/gen12.xml
index 83af084854f..903d6e2a4b6 100644
--- a/src/intel/genxml/gen12.xml
+++ b/src/intel/genxml/gen12.xml
@@ -2566,6 +2566,36 @@
     <field name="Last Pixel Enable" start="127" end="127" type="bool"/>
   </instruction>
 
+  <instruction name="3DSTATE_SUBSLICE_HASH_TABLE" bias="2" length="14">
+    <field name="DWord Length" start="0" end="7" type="uint" default="12"/>
+    <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="31"/>
+    <field name="3D Command Opcode" start="24" end="26" type="uint" default="1"/>
+    <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
+    <field name="Command Type" start="29" end="31" type="uint" default="3"/>
+    <group count="8" start="32" size="2">
+      <field name="Slice Hash Control" start="0" end="1" type="uint">
+        <value name="COMPUTED" value="0"/>
+        <value name="UNBALANCED_TABLE_0" value="1"/>
+        <value name="TABLE_0" value="2"/>
+        <value name="TABLE_1" value="3"/>
+      </field>
+    </group>
+    <field name="Slice Table Mode" start="62" end="63" type="uint">
+      <value name="SINGLE_TABLE" value="0"/>
+      <value name="DUAL_TABLE" value="1"/>
+    </field>
+    <group count="8" start="64" size="16">
+      <group count="16" start="0" size="1">
+        <field name="Two Way Table Entry" start="0" end="0" type="uint"/>
+      </group>
+    </group>
+    <group count="8" start="192" size="32">
+      <group count="16" start="0" size="2">
+        <field name="Three Way Table Entry" start="0" end="1" type="uint"/>
+      </group>
+    </group>
+  </instruction>
+
   <instruction name="3DSTATE_SLICE_TABLE_STATE_POINTERS" bias="2" length="2">
     <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="32"/>
diff --git a/src/intel/genxml/gen125.xml b/src/intel/genxml/gen125.xml
index 6ec73cd4b90..8c2b0600181 100644
--- a/src/intel/genxml/gen125.xml
+++ b/src/intel/genxml/gen125.xml
@@ -2574,6 +2574,36 @@
     <field name="Last Pixel Enable" start="127" end="127" type="bool"/>
   </instruction>
 
+  <instruction name="3DSTATE_SUBSLICE_HASH_TABLE" bias="2" length="14">
+    <field name="DWord Length" start="0" end="7" type="uint" default="12"/>
+    <field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="31"/>
+    <field name="3D Command Opcode" start="24" end="26" type="uint" default="1"/>
+    <field name="Command SubType" start="27" end="28" type="uint" default="3"/>
+    <field name="Command Type" start="29" end="31" type="uint" default="3"/>
+    <group count="8" start="32" size="2">
+      <field name="Slice Hash Control" start="0" end="1" type="uint">
+        <value name="COMPUTED" value="0"/>
+        <value name="UNBALANCED_TABLE_0" value="1"/>
+        <value name="TABLE_0" value="2"/>
+        <value name="TABLE_1" value="3"/>
+      </field>
+    </group>
+    <field name="Slice Table Mode" start="62" end="63" type="uint">
+      <value name="SINGLE_TABLE" value="0"/>
+      <value name="DUAL_TABLE" value="1"/>
+    </field>
+    <group count="8" start="64" size="16">
+      <group count="16" start="0" size="1">
+        <field name="Two Way Table Entry" start="0" end="0" type="uint"/>
+      </group>
+    </group>
+    <group count="8" start="192" size="32">
+      <group count="16" start="0" size="2">
+        <field name="Three Way Table Entry" start="0" end="1" type="uint"/>
+      </group>
+    </group>
+  </instruction>
+
   <instruction name="3DSTATE_SLICE_TABLE_STATE_POINTERS" bias="2" length="2">
     <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="32"/>



More information about the mesa-commit mailing list