[PATCH 0/4] drm/xe: Reduce GGTT display pinning latency.
Maarten Lankhorst
maarten.lankhorst at linux.intel.com
Tue Mar 5 13:12:46 UTC 2024
Testing page flips I noticed 3 pain points in the GGTT code:
- Unnecessary taking force wakes (Brosts fix).
- display doesn't use GuC, so GuC invalidation can (hopefully) be
skipped, saving 1 ms of latency.
- GuC invalidation should not be done with GGTT lock held, as it
can be done at any time before the function returns.
This patch series solve those issues.
There are 3 potential optimizations untouched, but those don't touch
GGTT invalidation:
- In the case of pinning same FB, re-use xe_vma instead with
refcounting, instead of allocating a new one.
- Preallocate the DPT bo when creating the framebuffer, to remove
allocation latency in the pinning path.
- Attempt if write-combined GGTT PTE updates work again on newer
platforms, and change writeq to writeq_relaxed, add flush at end.
Maarten Lankhorst (4):
fix "drm/xe: Cleanup some layering in GGTT"
drm/xe: Do not grab forcewakes when issuing GGTT TLB invalidation via
GuC
drm/xe: Do not perform GuC TLB invalidation for display GGTT
drm/xe: Move xe_ggtt_invalidate out from ggtt->lock
drivers/gpu/drm/xe/display/xe_fb_pin.c | 10 ++++--
drivers/gpu/drm/xe/display/xe_plane_initial.c | 3 +-
drivers/gpu/drm/xe/xe_bo.h | 2 ++
drivers/gpu/drm/xe/xe_bo_evict.c | 5 +++
drivers/gpu/drm/xe/xe_ggtt.c | 31 ++++++++-----------
drivers/gpu/drm/xe/xe_ggtt.h | 4 +--
drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c | 2 ++
7 files changed, 33 insertions(+), 24 deletions(-)
--
2.43.0
More information about the Intel-xe
mailing list