intel/genxml: Add XY_BLOCK_COPY_BLT on Tigerlake and later.

This is a new blitter command introduced on Tigerlake and expanded
substantially on XeHP.  XY_BLOCK_COPY_BLT is actually fast, unlike
the legacy blitter commands.  iris will use this in the future, and
anv hopefully could use it for a transfer queue someday as well.

Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13520>
This commit is contained in:
Kenneth Graunke 2020-08-28 16:12:17 -07:00
parent 9163500aa1
commit 2f58a63b2f
2 changed files with 131 additions and 0 deletions

View File

@ -7061,6 +7061,37 @@
<field name="MFX Pipeline Command Flush" start="51" end="51" type="bool"/>
</instruction>
<instruction name="XY_BLOCK_COPY_BLT" bias="2" length="12" engine="blitter">
<field name="DWord Length" start="0" end="7" type="uint" default="10"/>
<field name="Color Depth" start="19" end="21" type="uint"/>
<field name="Opcode" start="22" end="28" type="uint" default="0x41"/>
<field name="Client" start="29" end="31" type="uint" default="2"/>
<field name="Destination Pitch" start="32" end="49" type="uint"/>
<field name="Destination MOCS" start="53" end="59" type="uint" nonzero="true"/>
<field name="Destination Tiling" start="62" end="63" type="int" prefix="XY_TILE">
<value name="LINEAR" value="0"/>
<value name="Y" value="1"/>
</field>
<field name="Destination X1" start="64" end="79" type="int"/>
<field name="Destination Y1" start="80" end="95" type="int"/>
<field name="Destination X2" start="96" end="111" type="int"/>
<field name="Destination Y2" start="112" end="127" type="int"/>
<field name="Destination Base Address" start="128" end="191" type="address"/>
<field name="Destination X Offset" start="192" end="205" type="uint"/>
<field name="Destination Y Offset" start="208" end="221" type="uint"/>
<field name="Source X1" start="224" end="239" type="int"/>
<field name="Source Y1" start="240" end="255" type="int"/>
<field name="Source Pitch" start="256" end="273" type="uint"/>
<field name="Source MOCS" start="277" end="283" type="uint" nonzero="true"/>
<field name="Source Tiling" start="286" end="287" type="uint" prefix="XY_TILE">
<value name="LINEAR" value="0"/>
<value name="Y" value="1"/>
</field>
<field name="Source Base Address" start="288" end="351" type="address"/>
<field name="Source X Offset" start="352" end="365" type="uint"/>
<field name="Source Y Offset" start="368" end="381" type="uint"/>
</instruction>
<register name="3D_CHICKEN3" length="1" num="0x2090">
<field name="AA Line Quality Fix" start="5" end="5" type="bool"/>
<field name="AA Line Quality Fix Mask" start="21" end="21" type="bool"/>

View File

@ -7044,6 +7044,106 @@
<field name="MFX Pipeline Command Flush" start="51" end="51" type="bool"/>
</instruction>
<instruction name="XY_BLOCK_COPY_BLT" bias="2" length="22" engine="blitter">
<field name="DWord Length" start="0" end="7" type="uint" default="20"/>
<field name="Special Mode of Operation" start="12" end="13" type="uint">
<value name="NONE" value="0"/>
<value name="FULL_RESOLVE" value="1"/>
<value name="PARTIAL_RESOLVE" value="2"/>
</field>
<field name="Color Depth" start="19" end="21" type="uint"/>
<field name="Opcode" start="22" end="28" type="uint" default="0x41"/>
<field name="Client" start="29" end="31" type="uint" default="2"/>
<field name="Destination Pitch" start="32" end="49" type="uint"/>
<field name="Destination Auxiliary Surface Mode" start="50" end="52" type="uint" prefix="XY_AUX">
<value name="NONE" value="0"/>
<value name="CCS_E" value="5"/>
</field>
<field name="Destination MOCS" start="53" end="59" type="uint" nonzero="true"/>
<field name="Destination Control Surface Type" start="60" end="60" type="uint"/>
<field name="Destination Compression Enable" start="61" end="61" type="bool"/>
<field name="Destination Tiling" start="62" end="63" type="int" prefix="XY_TILE">
<value name="LINEAR" value="0"/>
<value name="X" value="1"/>
<value name="4" value="2"/>
<value name="64" value="3"/>
</field>
<field name="Destination X1" start="64" end="79" type="int"/>
<field name="Destination Y1" start="80" end="95" type="int"/>
<field name="Destination X2" start="96" end="111" type="int"/>
<field name="Destination Y2" start="112" end="127" type="int"/>
<field name="Destination Base Address" start="128" end="191" type="address"/>
<field name="Destination X Offset" start="192" end="205" type="uint"/>
<field name="Destination Y Offset" start="208" end="221" type="uint"/>
<field name="Destination Target Memory" start="223" end="223" type="uint" prefix="XY_MEM">
<value name="LOCAL" value="0"/>
<value name="SYSTEM" value="1"/>
</field>
<field name="Source X1" start="224" end="239" type="int"/>
<field name="Source Y1" start="240" end="255" type="int"/>
<field name="Source Pitch" start="256" end="273" type="uint"/>
<field name="Source Auxiliary Surface Mode" start="274" end="276" type="uint" prefix="XY">
<value name="NONE" value="0"/>
<value name="CCS_E" value="5"/>
</field>
<field name="Source MOCS" start="277" end="283" type="uint" nonzero="true"/>
<field name="Source Control Surface Type" start="284" end="284" type="uint"/>
<field name="Source Compression Enable" start="285" end="285" type="bool"/>
<field name="Source Tiling" start="286" end="287" type="uint" prefix="XY_TILE">
<value name="LINEAR" value="0"/>
<value name="X" value="1"/>
<value name="4" value="2"/>
<value name="64" value="3"/>
</field>
<field name="Source Base Address" start="288" end="351" type="address"/>
<field name="Source X Offset" start="352" end="365" type="uint"/>
<field name="Source Y Offset" start="368" end="381" type="uint"/>
<field name="Source Target Memory" start="383" end="383" type="uint" prefix="XY_MEM">
<value name="LOCAL" value="0"/>
<value name="SYSTEM" value="1"/>
</field>
<field name="Source Compression Format" start="384" end="388" type="uint"/>
<field name="Source Clear Value Enable" start="389" end="389" type="bool"/>
<field name="Source Clear Address" start="390" end="431" type="address"/>
<field name="Destination Compression Format" start="448" end="452" type="uint"/>
<field name="Destination Clear Value Enable" start="453" end="453" type="bool"/>
<field name="Destination Clear Address" start="454" end="495" type="address"/>
<field name="Destination Surface Height" start="512" end="525" type="uint"/>
<field name="Destination Surface Width" start="526" end="539" type="uint"/>
<field name="Destination Surface Type" start="541" end="543" type="uint" prefix="XY_SURFTYPE">
<value name="1D" value="0"/>
<value name="2D" value="1"/>
<value name="3D" value="2"/>
<value name="CUBE" value="3"/>
</field>
<field name="Destination LOD" start="544" end="547" type="uint"/>
<field name="Destination Surface QPitch" start="548" end="562" type="uint"/>
<field name="Destination Surface Depth" start="565" end="575" type="uint"/>
<field name="Destination Horizontal Align" start="576" end="577" type="uint"/>
<field name="Destination Vertical Align" start="579" end="580" type="uint"/>
<field name="Destination Mip Tail Start LOD" start="584" end="587" type="uint"/>
<field name="Destination Depth/Stencil Resource" start="594" end="594" type="bool"/>
<field name="Destination Array Index" start="597" end="607" type="uint"/>
<field name="Source Surface Height" start="608" end="621" type="uint"/>
<field name="Source Surface Width" start="622" end="635" type="uint"/>
<field name="Source Surface Type" start="637" end="639" type="uint" prefix="XY_SURFTYPE">
<value name="1D" value="0"/>
<value name="2D" value="1"/>
<value name="3D" value="2"/>
<value name="CUBE" value="3"/>
</field>
<field name="Source LOD" start="640" end="643" type="uint"/>
<field name="Source Surface QPitch" start="644" end="658" type="uint"/>
<field name="Source Surface Depth" start="661" end="671" type="uint"/>
<field name="Source Horizontal Align" start="672" end="673" type="uint"/>
<field name="Source Vertical Align" start="675" end="676" type="uint"/>
<field name="Source Mip Tail Start LOD" start="680" end="683" type="uint"/>
<field name="Source Depth/Stencil Resource" start="690" end="690" type="bool"/>
<field name="Source Array Index" start="693" end="703" type="uint"/>
</instruction>
<register name="BCS_INSTDONE" length="1" num="0x2206c">
<field name="Ring Enable" start="0" end="0" type="bool"/>
<field name="Blitter IDLE" start="1" end="1" type="bool" default="1"/>