From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: "Nautiyal, Ankit K" <ankit.k.nautiyal@intel.com>
Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Subject: Re: [PATCH 5/9] drm/i915/vrr: s/intel_vrr_vblank_delay/intel_vrr_scl_delay
Date: Wed, 24 Sep 2025 12:49:40 +0300 [thread overview]
Message-ID: <aNO-tA8hwlqBbNVb@intel.com> (raw)
In-Reply-To: <42504659-11d1-416e-99fc-2e62bd165e4b@intel.com>
On Wed, Sep 24, 2025 at 03:03:39PM +0530, Nautiyal, Ankit K wrote:
>
> On 9/23/2025 7:43 PM, Ville Syrjälä wrote:
> > On Tue, Sep 23, 2025 at 06:40:39PM +0530, Ankit Nautiyal wrote:
> >> The helper intel_vrr_vblank_delay() is used to account for scl lines
> >> + extra_vblank_delay (for ICL/TGL case) for:
> >> - evasion logic for vrr case
> >> - to wait for SCL+ lines after send push operation.
> >>
> >> Rename the helper to intel_vrr_scl_delay since we are interested in the
> >> SCL+ lines for the VRR cases.
> >>
> >> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> >> ---
> >> drivers/gpu/drm/i915/display/intel_dsb.c | 4 ++--
> >> drivers/gpu/drm/i915/display/intel_vblank.c | 2 +-
> >> drivers/gpu/drm/i915/display/intel_vrr.c | 2 +-
> >> drivers/gpu/drm/i915/display/intel_vrr.h | 2 +-
> >> 4 files changed, 5 insertions(+), 5 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/display/intel_dsb.c b/drivers/gpu/drm/i915/display/intel_dsb.c
> >> index dee44d45b668..ca31e928ecb0 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_dsb.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_dsb.c
> >> @@ -128,7 +128,7 @@ static int dsb_vblank_delay(struct intel_atomic_state *state,
> >> * scanline until the delayed vblank occurs after
> >> * TRANS_PUSH has been written.
> >> */
> >> - return intel_vrr_vblank_delay(crtc_state) + 1;
> >> + return intel_vrr_scl_delay(crtc_state) + 1;
> > I'd skip this renaming for now. I think after you've added the
> > safe window scanline wait you can replace all of these with
> > crtc_state->set_context_latency.
>
> Hmm alright. I will drop this patch.
>
> But the intel_vrr_vblank_delay() is now just
> crtc_state->set_context_latency + intel_vrr_extra_vblank_delay().
>
> Do you mean we don't need intel_vrr_extra_vblank_delay()?
>
> Perhaps you are right, with the wait for vmin safe window to end, will
> leave only SCL lines before delayed vblank.
>
> So the one extra scanline which gets inserted for ICL/TGL will be
> counted in the wait for safe window.
Exactly. That icl/tgl quirk is functionally identical to
just reducing the guardband by one line on ADL+, and thus
both will be covered by the safe window wait.
>
>
> >
> >> else
> >> return intel_mode_vblank_delay(&crtc_state->hw.adjusted_mode);
> >> }
> >> @@ -723,7 +723,7 @@ void intel_dsb_vblank_evade(struct intel_atomic_state *state,
> >> intel_dsb_emit_wait_dsl(dsb, DSB_OPCODE_WAIT_DSL_OUT, 0, 0);
> >>
> >> if (pre_commit_is_vrr_active(state, crtc)) {
> >> - int vblank_delay = intel_vrr_vblank_delay(crtc_state);
> >> + int vblank_delay = intel_vrr_scl_delay(crtc_state);
> >>
> >> end = intel_vrr_vmin_vblank_start(crtc_state);
> >> start = end - vblank_delay - latency;
> >> diff --git a/drivers/gpu/drm/i915/display/intel_vblank.c b/drivers/gpu/drm/i915/display/intel_vblank.c
> >> index c15234c1d96e..9441b7bacd27 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_vblank.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_vblank.c
> >> @@ -681,7 +681,7 @@ void intel_vblank_evade_init(const struct intel_crtc_state *old_crtc_state,
> >> else
> >> evade->vblank_start = intel_vrr_vmax_vblank_start(crtc_state);
> >>
> >> - vblank_delay = intel_vrr_vblank_delay(crtc_state);
> >> + vblank_delay = intel_vrr_scl_delay(crtc_state);
> > I was pondering about this case especially, but I *think* it should
> > also be changed to crtc_state->set_context_latency. We don't want to
> > perform the commit while in the SCL here because then we're not in
> > the safe window and the DSB we use for LUT updates wouldn't start
> > until the next safe window starts (== next frame's vactive), whereas
> > the double buffered registers would latch already in the upcoming
> > delayed vblank.
> >
> > But performing the commit while we're between undelayed vblank
> > and SCL start should be fine since that is part of the safe
> > window. So we don't need to evade the actual undelayed vblank
> > when in VRR mode.
> >
> > The only exception here would be the LRR and M/N cases since those
> > perhaps still need to evade the undlayed vblank proper. But we always
> > drop out of VRR mode for those types of updates so they won't be
> > taking this codepath anyway.
>
> Hmm ok so replacing intel_vrr_vblank_delay with
> crtc_state->set_context_latency will work for both:
>
> -the wait before push clear and
>
> -the evasion case
>
> So will add a last patch to just use crtc_state->set_context wherever we
> are using intel_vrr_vblank_delay then.
ack
--
Ville Syrjälä
Intel
next prev parent reply other threads:[~2025-09-24 9:49 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-23 13:10 [PATCH 0/9] Introduce set_context_latency and refactor VRR/DSB timing logic Ankit Nautiyal
2025-09-23 13:10 ` [PATCH 1/9] drm/i915/psr: s/intel_psr_min_vblank_delay/intel_psr_min_set_context_latency Ankit Nautiyal
2025-09-23 13:10 ` [PATCH 2/9] drm/i915/display: Add set_context_latency to crtc_state Ankit Nautiyal
2025-09-23 14:11 ` Ville Syrjälä
2025-09-23 13:10 ` [PATCH 3/9] drm/i915/vrr: Use set_context_latency instead of intel_vrr_real_vblank_delay() Ankit Nautiyal
2025-09-23 13:10 ` [PATCH 4/9] drm/i915/vrr: Use SCL for computing guardband Ankit Nautiyal
2025-09-23 14:12 ` Ville Syrjälä
2025-09-23 13:10 ` [PATCH 5/9] drm/i915/vrr: s/intel_vrr_vblank_delay/intel_vrr_scl_delay Ankit Nautiyal
2025-09-23 14:13 ` Ville Syrjälä
2025-09-24 9:33 ` Nautiyal, Ankit K
2025-09-24 9:49 ` Ville Syrjälä [this message]
2025-09-23 13:10 ` [PATCH 6/9] drm/i915/dsb: s/intel_dsb_wait_vblank_delay/intel_dsb_wait_for_delayed_vblank Ankit Nautiyal
2025-09-23 17:21 ` Ville Syrjälä
2025-09-23 13:10 ` [PATCH 7/9] drm/i915/display: Wait for scl start instead of dsb_wait_vblanks Ankit Nautiyal
2025-09-23 14:32 ` Ville Syrjälä
2025-09-23 13:10 ` [PATCH 8/9] drm/i915/reg_defs: Add REG_FIELD_MAX wrapper for FIELD_MAX() Ankit Nautiyal
2025-09-23 17:27 ` Ville Syrjälä
2025-09-23 13:10 ` [PATCH 9/9] drm/i915/vrr: Clamp guardband as per hardware and timing constraints Ankit Nautiyal
2025-09-23 17:25 ` Ville Syrjälä
2025-09-23 13:32 ` ✓ CI.KUnit: success for Introduce set_context_latency and refactor VRR/DSB timing logic (rev2) Patchwork
2025-09-23 13:47 ` ✗ CI.checksparse: warning " Patchwork
2025-09-23 14:16 ` ✓ Xe.CI.BAT: success " Patchwork
2025-09-23 15:48 ` ✗ Xe.CI.Full: failure " Patchwork
2025-09-23 19:40 ` ✓ i915.CI.BAT: success " Patchwork
2025-09-24 4:25 ` ✗ i915.CI.Full: failure " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2025-09-21 4:35 [PATCH 0/9] Introduce set_context_latency and refactor VRR/DSB timing logic Ankit Nautiyal
2025-09-21 4:35 ` [PATCH 5/9] drm/i915/vrr: s/intel_vrr_vblank_delay/intel_vrr_scl_delay Ankit Nautiyal
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=aNO-tA8hwlqBbNVb@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=ankit.k.nautiyal@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 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.