From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Cc: <intel-xe@lists.freedesktop.org>, <kernel-dev@igalia.com>
Subject: Re: [PATCH v11 01/13] drm/xe/xelpg: Flush CCS when flushing caches
Date: Wed, 27 Aug 2025 10:10:14 -0400 [thread overview]
Message-ID: <aK8Rxk5yxunqXz0G@intel.com> (raw)
In-Reply-To: <20250821141458.72876-2-tvrtko.ursulin@igalia.com>
On Thu, Aug 21, 2025 at 03:14:43PM +0100, Tvrtko Ursulin wrote:
> According to i915 PIPE_CONTROL0_CCS_FLUSH needs to be set when flushing
> render caches on gfx ip 12.70+.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/xe/instructions/xe_gpu_commands.h | 1 +
> drivers/gpu/drm/xe/xe_ring_ops.c | 7 ++++++-
> 2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/xe/instructions/xe_gpu_commands.h b/drivers/gpu/drm/xe/instructions/xe_gpu_commands.h
> index 8cfcd3360896..78c0e87dbd37 100644
> --- a/drivers/gpu/drm/xe/instructions/xe_gpu_commands.h
> +++ b/drivers/gpu/drm/xe/instructions/xe_gpu_commands.h
> @@ -43,6 +43,7 @@
>
> #define PIPE_CONTROL0_L3_READ_ONLY_CACHE_INVALIDATE BIT(10) /* gen12 */
> #define PIPE_CONTROL0_HDC_PIPELINE_FLUSH BIT(9) /* gen12 */
> +#define PIPE_CONTROL0_CCS_FLUSH BIT(13) /* MTL+ */
>
> #define PIPE_CONTROL_COMMAND_CACHE_INVALIDATE (1<<29)
> #define PIPE_CONTROL_TILE_CACHE_FLUSH (1<<28)
> diff --git a/drivers/gpu/drm/xe/xe_ring_ops.c b/drivers/gpu/drm/xe/xe_ring_ops.c
> index 5f15360d14bf..761740d7769f 100644
> --- a/drivers/gpu/drm/xe/xe_ring_ops.c
> +++ b/drivers/gpu/drm/xe/xe_ring_ops.c
> @@ -176,13 +176,18 @@ static int emit_store_imm_ppgtt_posted(u64 addr, u64 value,
> static int emit_render_cache_flush(struct xe_sched_job *job, u32 *dw, int i)
> {
> struct xe_gt *gt = job->q->gt;
> + struct xe_device *xe = gt_to_xe(gt);
> bool lacks_render = !(gt->info.engine_mask & XE_HW_ENGINE_RCS_MASK);
> + u32 bit_group_0 = PIPE_CONTROL0_HDC_PIPELINE_FLUSH;
> u32 flags;
>
> if (XE_GT_WA(gt, 14016712196))
> i = emit_pipe_control(dw, i, 0, PIPE_CONTROL_DEPTH_CACHE_FLUSH,
> LRC_PPHWSP_FLUSH_INVAL_SCRATCH_ADDR, 0);
>
> + if (GRAPHICS_VERx100(xe) >= 1270)
> + bit_group_0 |= PIPE_CONTROL0_CCS_FLUSH;
> +
> flags = (PIPE_CONTROL_CS_STALL |
> PIPE_CONTROL_TILE_CACHE_FLUSH |
> PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH |
> @@ -198,7 +203,7 @@ static int emit_render_cache_flush(struct xe_sched_job *job, u32 *dw, int i)
> else if (job->q->class == XE_ENGINE_CLASS_COMPUTE)
> flags &= ~PIPE_CONTROL_3D_ENGINE_FLAGS;
>
> - return emit_pipe_control(dw, i, PIPE_CONTROL0_HDC_PIPELINE_FLUSH, flags, 0, 0);
> + return emit_pipe_control(dw, i, bit_group_0, flags, 0, 0);
> }
>
> static int emit_pipe_control_to_ring_end(struct xe_hw_engine *hwe, u32 *dw, int i)
> --
> 2.48.0
>
next prev parent reply other threads:[~2025-08-27 14:10 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-21 14:14 [PATCH v11 00/13] AuxCCS handling and render compression modifiers Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 01/13] drm/xe/xelpg: Flush CCS when flushing caches Tvrtko Ursulin
2025-08-27 14:10 ` Rodrigo Vivi [this message]
2025-08-21 14:14 ` [PATCH v11 02/13] drm/xe/xelp: Quiesce memory traffic before invalidating auxccs Tvrtko Ursulin
2025-08-27 14:39 ` Rodrigo Vivi
2025-09-01 10:37 ` Tvrtko Ursulin
2025-09-02 17:33 ` Rodrigo Vivi
2025-09-03 7:50 ` Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 03/13] drm/xe/xelp: Support auxccs invalidation on blitter Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 04/13] drm/xe/xelp: Use MI_FLUSH_DW_CCS on auxccs platforms Tvrtko Ursulin
2025-09-12 14:25 ` Rodrigo Vivi
2025-08-21 14:14 ` [PATCH v11 05/13] drm/xe/xelp: Wait for AuxCCS invalidation to complete Tvrtko Ursulin
2025-09-12 14:23 ` Rodrigo Vivi
2025-08-21 14:14 ` [PATCH v11 06/13] drm/xe: Export xe_emit_aux_table_inv Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 07/13] drm/xe/xelp: Add AuxCCS invalidation to the indirect context workarounds Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 08/13] drm/xe: Flush GGTT writes after populating DPT Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 09/13] drm/xe: Handle DPT in system memory Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 10/13] drm/xe/display: Add support for AuxCCS Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 11/13] drm/xe: Force flush system memory AuxCCS framebuffers before scan out Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 12/13] drm/xe: Do not use stolen memory for DPT on IGFX and AuxCCS Tvrtko Ursulin
2025-08-21 14:14 ` [PATCH v11 13/13] drm/i915/display: Expose AuxCCS frame buffer modifiers for Xe Tvrtko Ursulin
2025-08-21 14:55 ` ✗ CI.checkpatch: warning for AuxCCS handling and render compression modifiers (rev13) Patchwork
2025-08-21 14:57 ` ✓ CI.KUnit: success " Patchwork
2025-08-21 16:08 ` ✓ Xe.CI.BAT: " Patchwork
2025-08-22 14:30 ` ✗ Xe.CI.Full: failure " Patchwork
2025-08-23 9:16 ` Tvrtko Ursulin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aK8Rxk5yxunqXz0G@intel.com \
--to=rodrigo.vivi@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=kernel-dev@igalia.com \
--cc=tvrtko.ursulin@igalia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.