mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 06:01:57 +00:00
drm/xe/xe2: Update SVG state handling
As with DG2/MTL, Xe2 also fails to emit instruction headers for SVG state instructions if no explicit state has been set. The SVG part of the LRC is nearly identical to DG2/MTL; the only change is that 3DSTATE_DRAWING_RECTANGLE has been replaced by 3DSTATE_DRAWING_RECTANGLE_FAST, so we can just re-use the same state table and handle that single instruction when we encounter it. Bspec: 65182 Reviewed-by: Balasubramani Vivekanandan <balasubramani.vivekanandan@intel.com> Link: https://lore.kernel.org/r/20231025151732.3461842-8-matthew.d.roper@intel.com Signed-off-by: Matt Roper <matthew.d.roper@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
parent
72ac304769
commit
fb24b858a2
@ -52,6 +52,7 @@
|
||||
|
||||
#define PIPELINE_SELECT GFXPIPE_SINGLE_DW_CMD(0x1, 0x4)
|
||||
|
||||
#define CMD_3DSTATE_DRAWING_RECTANGLE_FAST GFXPIPE_3D_CMD(0x0, 0x0)
|
||||
#define CMD_3DSTATE_CLEAR_PARAMS GFXPIPE_3D_CMD(0x0, 0x4)
|
||||
#define CMD_3DSTATE_DEPTH_BUFFER GFXPIPE_3D_CMD(0x0, 0x5)
|
||||
#define CMD_3DSTATE_STENCIL_BUFFER GFXPIPE_3D_CMD(0x0, 0x6)
|
||||
|
@ -1015,6 +1015,7 @@ static int dump_gfxpipe_command(struct drm_printer *p,
|
||||
|
||||
MATCH(PIPELINE_SELECT);
|
||||
|
||||
MATCH3D(3DSTATE_DRAWING_RECTANGLE_FAST);
|
||||
MATCH3D(3DSTATE_CLEAR_PARAMS);
|
||||
MATCH3D(3DSTATE_DEPTH_BUFFER);
|
||||
MATCH3D(3DSTATE_STENCIL_BUFFER);
|
||||
@ -1235,8 +1236,7 @@ void xe_lrc_emit_hwe_state_instructions(struct xe_exec_queue *q, struct xe_bb *b
|
||||
|
||||
switch (GRAPHICS_VERx100(xe)) {
|
||||
case 1255:
|
||||
case 1270:
|
||||
case 1271:
|
||||
case 1270 ... 2004:
|
||||
state_table = xe_hpg_svg_state;
|
||||
state_table_size = ARRAY_SIZE(xe_hpg_svg_state);
|
||||
break;
|
||||
@ -1255,6 +1255,17 @@ void xe_lrc_emit_hwe_state_instructions(struct xe_exec_queue *q, struct xe_bb *b
|
||||
xe_gt_assert(gt, num_dw != 0);
|
||||
xe_gt_assert(gt, is_single_dw ^ (num_dw > 1));
|
||||
|
||||
/*
|
||||
* Xe2's SVG context is the same as the one on DG2 / MTL
|
||||
* except that 3DSTATE_DRAWING_RECTANGLE (non-pipelined) has
|
||||
* been replaced by 3DSTATE_DRAWING_RECTANGLE_FAST (pipelined).
|
||||
* Just make the replacement here rather than defining a
|
||||
* whole separate table for the single trivial change.
|
||||
*/
|
||||
if (GRAPHICS_VER(xe) >= 20 &&
|
||||
instr == CMD_3DSTATE_DRAWING_RECTANGLE)
|
||||
instr = CMD_3DSTATE_DRAWING_RECTANGLE_FAST;
|
||||
|
||||
bb->cs[bb->len] = instr;
|
||||
if (!is_single_dw)
|
||||
bb->cs[bb->len] |= (num_dw - 2);
|
||||
|
Loading…
Reference in New Issue
Block a user