From: "Jouni Högander" <jouni.hogander@intel.com>
To: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: "Jouni Högander" <jouni.hogander@intel.com>
Subject: [PATCH v10 06/10] drm/i915/display: Wait for vblank in case of PSR is using trans push
Date: Mon, 26 Jan 2026 09:59:55 +0200 [thread overview]
Message-ID: <20260126075959.925413-7-jouni.hogander@intel.com> (raw)
In-Reply-To: <20260126075959.925413-1-jouni.hogander@intel.com>
In case PSR uses trans push as a "frame change" event and we need to wait
vblank after triggering PSR "frame change" event. Otherwise we may miss
selective updates.
DSB skips all waits while PSR is active. Check push send is skipped as well
because trans push send bit is not clearn by the HW if VRR is not enabled
-> we may start configuring new selective update while previous is not
complete. Avoid this by waiting for vblank after sending trans push.
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 7491e00e3858..b47c9d3d0d85 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -7390,9 +7390,27 @@ static void intel_atomic_dsb_finish(struct intel_atomic_state *state,
new_crtc_state->dsb_color);
if (new_crtc_state->use_dsb && !intel_color_uses_chained_dsb(new_crtc_state)) {
- intel_dsb_wait_vblanks(new_crtc_state->dsb_commit, 1);
+ /*
+ * Dsb wait vblank may or may not skip. Let's remove it for PSR
+ * trans push case to ensure we are not waiting two vblanks
+ */
+ if (!intel_psr_use_trans_push(new_crtc_state))
+ intel_dsb_wait_vblanks(new_crtc_state->dsb_commit, 1);
intel_vrr_send_push(new_crtc_state->dsb_commit, new_crtc_state);
+
+ /*
+ * In case PSR uses trans push as a "frame change" event and
+ * VRR is not in use we need to wait vblank. Othervise we may
+ * miss selective updates. DSB skips all waits while PSR is
+ * active. Check push send is skipped as well because trans push
+ * send bit is not clearn by the HW if VRR is not enabled -> we
+ * may start configuring new selective update while previous is
+ * not complete.
+ */
+ if (intel_psr_use_trans_push(new_crtc_state))
+ intel_dsb_wait_vblanks(new_crtc_state->dsb_commit, 1);
+
intel_dsb_wait_for_delayed_vblank(state, new_crtc_state->dsb_commit);
intel_vrr_check_push_sent(new_crtc_state->dsb_commit,
new_crtc_state);
--
2.43.0
next prev parent reply other threads:[~2026-01-26 8:00 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-26 7:59 [PATCH v10 00/10] Use trans push mechanism to generate frame change event Jouni Högander
2026-01-26 7:59 ` [PATCH v10 01/10] drm/i915/psr: Add TRANS_PUSH register bit definition for PSR Jouni Högander
2026-01-26 7:59 ` [PATCH v10 02/10] drm/i915/psr: Add intel_psr_use_trans_push to query if TRANS_PUSH is used Jouni Högander
2026-01-27 5:20 ` Nautiyal, Ankit K
2026-01-26 7:59 ` [PATCH v10 03/10] drm/i915/vrr: Add helper for parsing value to be written into TRANS_PUSH Jouni Högander
2026-01-27 5:25 ` Nautiyal, Ankit K
2026-01-26 7:59 ` [PATCH v10 04/10] drm/i915/vrr: Prepare to Use TRANS_PUSH mechanism for PSR frame change Jouni Högander
2026-01-27 5:18 ` Nautiyal, Ankit K
2026-01-26 7:59 ` [PATCH v10 05/10] drm/i915/dsb: Set DSB_SKIP_WAITS_EN chicken bit for LunarLake and onwards Jouni Högander
2026-01-27 5:32 ` Nautiyal, Ankit K
2026-01-26 7:59 ` Jouni Högander [this message]
2026-01-27 5:41 ` [PATCH v10 06/10] drm/i915/display: Wait for vblank in case of PSR is using trans push Nautiyal, Ankit K
2026-01-26 7:59 ` [PATCH v10 07/10] drm/i915/psr: Wait for idle only after possible send push Jouni Högander
2026-01-26 7:59 ` [PATCH v10 08/10] drm/i915/psr: Do PSR exit on frontbuffer flush on LunarLake and onwards Jouni Högander
2026-01-26 7:59 ` [PATCH v10 09/10] drm/i915/display: Add HAS_PSR_TRANS_PUSH_FRAME_CHANGE macro Jouni Högander
2026-01-27 7:48 ` Nautiyal, Ankit K
2026-01-26 7:59 ` [PATCH v10 10/10] drm/i915/psr: Use TRANS_PUSH to trigger frame change event Jouni Högander
2026-01-27 8:35 ` Nautiyal, Ankit K
2026-01-26 8:44 ` ✓ i915.CI.BAT: success for Use trans push mechanism to generate " Patchwork
2026-01-26 10:32 ` ✗ i915.CI.Full: failure " Patchwork
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=20260126075959.925413-7-jouni.hogander@intel.com \
--to=jouni.hogander@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox