[PATCH v9 00/12] AuxCCS handling and render compression modifiers
Tvrtko Ursulin
tvrtko.ursulin at igalia.com
Fri Jul 25 20:03:34 UTC 2025
A series to fix and add xe support for AuxCSS framebuffers via DPT.
Currently the auxiliary buffer data isn't mapped into the page tables at all so
cf48bddd31de ("drm/i915/display: Disable AuxCCS framebuffers if built for Xe")
had to disable the support.
On top of that there are missing flushes, invalidations and similar.
Tested with KDE Wayland, on Lenovo Carbon X1 ADL-P:
[PLANE:32:plane 1A]: type=PRI
uapi: [FB:242] AR30 little-endian (0x30335241),0x100000000000008,2880x1800, visible=visible, src=2880.000000x1800.000000+0.000000+0.000000, dst=2880x1800+0+0, rotation=0 (0x00000001)
hw: [FB:242] AR30 little-endian (0x30335241),0x100000000000008,2880x1800, visible=yes, src=2880.000000x1800.000000+0.000000+0.000000, dst=2880x1800+0+0, rotation=0 (0x00000001)
Display working fine - no artefacts, no DMAR/PIPE faults.
All IGTs pass for me locally. But note that for the ones which "blit" using the
VEBOX engine, so where media compression is the target surface, this fix for IGT
not setting MOCS is also needed: https://patchwork.freedesktop.org/series/151928/
I have included the Test-with: tag below although I am not sure that works with
the xe CI.
Test-with: 20250722073906.99759-1-tvrtko.ursulin at igalia.com
v2:
* More patches added to fix kms_flip_tiling.
v3:
* Rebased after some cleanup patches from v2 were merged.
* Added people to Cc as suggested by Rodrigo.
* Adjusted last patch title. (Rodrigo)
* Apply GGTT flushing only to iomapped system memory buffers.
v4:
* Added patch for potentially misplaced Wa_14016712196.
* Fixed (hopefully) MAX_JOB_SIZE_DW on Meteorlake.
v5:
* Split out ring emission changes to smaller patches.
* Fixed MAX_JOB_SIZE_DW even more.
* Don't emit MI_FLUSH_DW_CCS on !BCS. This should fix Meteorlake.
v6:
* Added AuxCCS invalidation to indirect context workarounds.
* Also added the indirect context handling and some other workarounds. They are
unrelated but the series depends on it.
* Dropped DPT pin alignment reduction since BMG appears not to be liking it for
some reason.
v7:
* Rebased on top of recent xe_fb_pin.c refactoring and also the indirect
context workarounds series.
v8:
* Rebased for bo->size removal.
* Corrected PIPE_CONTROL_FLUSH_L3 to bit 30. (Jose)
v9:
* Fixed fb remapping changes.
* Dropped two not required patches from the series.
* Fixed criteria for GGTT flushing.
* Limit clflush to the compression metadata area.
* Rebased for indirect context workarounds landing upstream.
Tvrtko Ursulin (12):
drm/xe/xelpg: Flush CCS when flushing caches
drm/xe/xelp: Quiesce memory traffic before invalidating auxccs
drm/xe/xelp: Support auxccs invalidation on blitter
drm/xe/xelp: Use MI_FLUSH_DW_CCS on auxccs platforms
drm/xe/xelp: Wait for AuxCCS invalidation to complete
drm/xe: Export xe_emit_aux_table_inv
drm/xe/xelp: Add AuxCCS invalidation to the indirect context
workarounds
drm/xe: Flush GGTT writes after populating DPT
drm/xe: Handle DPT in system memory
drm/xe/display: Add support for AuxCCS
drm/xe: Force flush system memory AuxCCS data before scan out
drm/i915/display: Expose AuxCCS frame buffer modifiers for Xe
.../drm/i915/display/skl_universal_plane.c | 6 -
drivers/gpu/drm/xe/display/xe_fb_pin.c | 210 +++++++++++++++---
.../gpu/drm/xe/instructions/xe_gpu_commands.h | 1 +
.../gpu/drm/xe/instructions/xe_mi_commands.h | 6 +
drivers/gpu/drm/xe/regs/xe_gt_regs.h | 1 +
drivers/gpu/drm/xe/xe_bo_types.h | 14 +-
drivers/gpu/drm/xe/xe_lrc.c | 47 ++++
drivers/gpu/drm/xe/xe_ring_ops.c | 161 +++++++-------
drivers/gpu/drm/xe/xe_ring_ops.h | 3 +
drivers/gpu/drm/xe/xe_ring_ops_types.h | 2 +-
10 files changed, 334 insertions(+), 117 deletions(-)
--
2.48.0
More information about the Intel-xe
mailing list