refine gate states for PSR and Panel Replay in Linux 7.0.3-arch1 (#89)

This commit is contained in:
Spencer Bull
2026-05-06 16:41:49 +02:00
committed by GitHub
parent eddcc1bf79
commit 1c5e868973
2 changed files with 9 additions and 9 deletions
@@ -1,17 +1,17 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Gaggery Tsai <gaggery.tsai@intel.com>
Date: Tue, 28 Apr 2026 16:10:00 -0500
Subject: [PATCH] drm/i915: use TRANS_PUSH frame changes for PSR/Panel Replay
Subject: [PATCH] drm/i915: use TRANS_PUSH frame changes for Panel Replay
Panel Replay Selective Update requires a software-triggered Frame Change
event via TRANS_PUSH to send dirty regions to the panel. Cursor updates
can skip the normal VRR push path, so the panel may not receive cursor
position changes under Panel Replay SU.
Backport the upstream TRANS_PUSH frame-change flow for display 20+:
program the PSR/PR frame-change bit when PSR is enabled, skip the old
CURSURFLIVE frame-change path on platforms using TRANS_PUSH, and send a
push for legacy cursor updates when PSR/Panel Replay uses TRANS_PUSH.
Backport the upstream TRANS_PUSH frame-change flow for display 20+,
but keep it limited to Panel Replay for linux-ptl. Plain PSR2 must keep
using the old CURSURFLIVE frame-change path so systems still boot when
Panel Replay is disabled with xe.enable_panel_replay=0.
Signed-off-by: Gaggery Tsai <gaggery.tsai@intel.com>
---
@@ -57,7 +57,7 @@ diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/dis
intel_alpm_configure(intel_dp, crtc_state);
+
+ if (HAS_PSR_TRANS_PUSH_FRAME_CHANGE(display))
+ if (intel_psr_use_trans_push(crtc_state))
+ intel_vrr_psr_frame_change_enable(crtc_state);
}
@@ -87,7 +87,7 @@ diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/dis
+{
+ struct intel_display *display = to_intel_display(crtc_state);
+
+ return HAS_PSR_TRANS_PUSH_FRAME_CHANGE(display) && crtc_state->has_psr;
+ return HAS_PSR_TRANS_PUSH_FRAME_CHANGE(display) && crtc_state->has_panel_replay;
+}
diff --git a/drivers/gpu/drm/i915/display/intel_psr.h b/drivers/gpu/drm/i915/display/intel_psr.h
--- a/drivers/gpu/drm/i915/display/intel_psr.h
@@ -119,7 +119,7 @@ diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/dis
+ if (send_push)
+ trans_vrr_push |= TRANS_PUSH_SEND;
+
+ if (HAS_PSR_TRANS_PUSH_FRAME_CHANGE(display))
+ if (intel_psr_use_trans_push(crtc_state))
+ trans_vrr_push |= LNL_TRANS_PUSH_PSR_PR_EN;
+
+ return trans_vrr_push;
+1 -1
View File
@@ -3,7 +3,7 @@
pkgbase=linux-ptl
pkgver=7.0.3.arch1
pkgrel=1
pkgrel=2
pkgdesc='Linux with Panther Lake hardware backports (SDCA audio, PSR2, Panel Replay SU)'
url='https://github.com/archlinux/linux'
arch=(