iris,anv/xe2+: Use pipelined variant of 3DSTATE_DRAWING_RECTANGLE.

Reviewed-by: Rohan Garg <rohan.garg@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29562>
This commit is contained in:
Francisco Jerez 2024-06-17 14:07:48 -07:00
parent 576c9e3af2
commit 8e61d32db8
3 changed files with 32 additions and 2 deletions

View file

@ -1232,6 +1232,12 @@ toggle_protected(struct iris_batch *batch)
#endif
}
#if GFX_VER >= 20
#define _3DSTATE_DRAWING_RECTANGLE GENX(3DSTATE_DRAWING_RECTANGLE_FAST)
#else
#define _3DSTATE_DRAWING_RECTANGLE GENX(3DSTATE_DRAWING_RECTANGLE)
#endif
/**
* Upload the initial GPU state for a render context.
*
@ -1383,7 +1389,7 @@ iris_init_render_context(struct iris_batch *batch)
* instead include the render target dimensions in the viewport, so
* viewport extents clipping takes care of pruning stray geometry.
*/
iris_emit_cmd(batch, GENX(3DSTATE_DRAWING_RECTANGLE), rect) {
iris_emit_cmd(batch, _3DSTATE_DRAWING_RECTANGLE, rect) {
rect.ClippedDrawingRectangleXMax = UINT16_MAX;
rect.ClippedDrawingRectangleYMax = UINT16_MAX;
}

View file

@ -439,6 +439,24 @@
<field name="LOD" start="240" end="243" type="uint" />
<field name="Render Target View Extent" start="245" end="255" type="uint" />
</instruction>
<instruction name="3DSTATE_DRAWING_RECTANGLE_FAST" bias="2" length="4" engine="render">
<field name="DWord Length" start="0" end="7" type="uint" default="2" />
<field name="Core Mode Select" start="14" end="15" type="uint">
<value name="Legacy" value="0" />
<value name="Core 0 Enabled" value="1" />
<value name="Core 1 Enabled" value="2" />
</field>
<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="0" />
<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="Clipped Drawing Rectangle X Min" start="32" end="47" type="uint" />
<field name="Clipped Drawing Rectangle Y Min" start="48" end="63" type="uint" />
<field name="Clipped Drawing Rectangle X Max" start="64" end="79" type="uint" />
<field name="Clipped Drawing Rectangle Y Max" start="80" end="95" type="uint" />
<field name="Drawing Rectangle Origin X" start="96" end="111" type="int" />
<field name="Drawing Rectangle Origin Y" start="112" end="127" type="int" />
</instruction>
<instruction name="3DSTATE_GS" bias="2" length="10" engine="render">
<field name="DWord Length" start="0" end="7" type="uint" default="8" />
<field name="3D Command Sub Opcode" start="16" end="23" type="uint" default="17" />

View file

@ -338,6 +338,12 @@ init_common_queue_state(struct anv_queue *queue, struct anv_batch *batch)
#endif
}
#if GFX_VER >= 20
#define _3DSTATE_DRAWING_RECTANGLE GENX(3DSTATE_DRAWING_RECTANGLE_FAST)
#else
#define _3DSTATE_DRAWING_RECTANGLE GENX(3DSTATE_DRAWING_RECTANGLE)
#endif
static VkResult
init_render_queue_state(struct anv_queue *queue, bool is_companion_rcs_batch)
{
@ -369,7 +375,7 @@ init_render_queue_state(struct anv_queue *queue, bool is_companion_rcs_batch)
anv_batch_emit(batch, GENX(3DSTATE_AA_LINE_PARAMETERS), aa);
anv_batch_emit(batch, GENX(3DSTATE_DRAWING_RECTANGLE), rect) {
anv_batch_emit(batch, _3DSTATE_DRAWING_RECTANGLE, rect) {
rect.ClippedDrawingRectangleYMin = 0;
rect.ClippedDrawingRectangleXMin = 0;
rect.ClippedDrawingRectangleYMax = UINT16_MAX;