[PATCH] drm/i915/display: Ensure enough lines between delayed VBlank and VBlank
Hogander, Jouni
jouni.hogander at intel.com
Tue Apr 22 04:45:52 UTC 2025
On Sun, 2025-04-20 at 15:50 +0000, Murthy, Arun R wrote:
> > -----Original Message-----
> > From: Intel-gfx <intel-gfx-bounces at lists.freedesktop.org> On Behalf
> > Of Jouni
> > Högander
> > Sent: Thursday, April 17, 2025 11:54 PM
> > To: intel-gfx at lists.freedesktop.org; intel-xe at lists.freedesktop.org
> > Cc: Hogander, Jouni <jouni.hogander at intel.com>
> > Subject: [PATCH] drm/i915/display: Ensure enough lines between
> > delayed
> > VBlank and VBlank
> >
> > To deterministically capture the transition of the state machine
> > going from
> > SRDOFFACK to IDLE, the delayed V. Blank should be at least one line
> > after the
> > non-delayed V. Blank.
> >
> > Ensure this by following instructions from Bspec.
> >
> > Bspec: 69897
> > Signed-off-by: Jouni Högander <jouni.hogander at intel.com>
> > ---
> > drivers/gpu/drm/i915/display/intel_display.c | 11 ++++++++++-
> > drivers/gpu/drm/i915/display/intel_vrr.c | 18
> > ++++++++++++++++--
> > 2 files changed, 26 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> > b/drivers/gpu/drm/i915/display/intel_display.c
> > index db524d01e574d..94156efa5aa93 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > @@ -2747,9 +2747,18 @@ static void
> > intel_set_transcoder_timings_lrr(const
> > struct intel_crtc_state *crtc
> > }
> >
> > if (DISPLAY_VER(display) >= 13) {
> Changes looks good. But per Bspec 69985 looks like this change is not
> applicable for Xe3+
How about if I change it like this:
int min_lat = intel_vrr_always_use_vrr_tg(display) || crtc_state-
>vrr.enable ? 1 : 0;
also guardband could be:
if (intel_vrr_always_use_vrr_tg(display) || crtc_state->vrr.enable)
guardband = max(crtc_state->vrr.vmin - adjusted_mode-
>crtc_vblank_start, crtc_state->vrr.vmax - adjusted_mode->crtc_vdisplay
- 1);
else
guardband = crtc_state->vrr.vmin - adjusted_mode-
>crtc_vblank_start;
What do you think?
BR,
Jouni Högander
>
> Thanks and Regards,
> Arun R Murthy
> -------------------
> > + /*
> > + * Comment on SRD_STATUS register in Bspec:
> > + *
> > + * To deterministically capture the transition of
> > the state
> > + * machine going from SRDOFFACK to IDLE, the
> > delayed V. Blank
> > + * should be at least one line after the non-
> > delayed V. Blank.
> > + *
> > + * Legacy TG: TRANS_SET_CONTEXT_LATENCY > 0
> > + */
> > intel_de_write(display,
> > TRANS_SET_CONTEXT_LATENCY(display,
> > cpu_transcoder),
> > - crtc_vblank_start - crtc_vdisplay);
> > + max(crtc_vblank_start -
> > crtc_vdisplay, 1));
> >
> > /*
> > * VBLANK_START not used by hw, just clear it diff
> > --git
> > a/drivers/gpu/drm/i915/display/intel_vrr.c
> > b/drivers/gpu/drm/i915/display/intel_vrr.c
> > index c6565baf815a1..3a27ded45ee04 100644
> > --- a/drivers/gpu/drm/i915/display/intel_vrr.c
> > +++ b/drivers/gpu/drm/i915/display/intel_vrr.c
> > @@ -422,8 +422,22 @@ void intel_vrr_compute_config_late(struct
> > intel_crtc_state *crtc_state)
> > return;
> >
> > if (DISPLAY_VER(display) >= 13) {
> > - crtc_state->vrr.guardband =
> > - crtc_state->vrr.vmin - adjusted_mode-
> > > crtc_vblank_start;
> > + /*
> > + * Comment on SRD_STATUS register in Bspec:
> > + *
> > + * To deterministically capture the transition of
> > the state
> > + * machine going from SRDOFFACK to IDLE, the
> > delayed V. Blank
> > + * should be at least one line after the non-
> > delayed V. Blank.
> > + * This can be done by ensuring the VRR Guardband
> > programming is
> > + * less than the non-delayed V. Blank.
> > + *
> > + * TRANS_VRR_CTL[ VRR Guardband ] <
> > (TRANS_VRR_VMAX[
> > VRR Vmax ]
> > + * - TRANS_VTOTAL[ Vertical Active ])
> > + */
> > + crtc_state->vrr.guardband = min(crtc_state-
> > >vrr.vmin -
> > + adjusted_mode-
> > > crtc_vblank_start,
> > + crtc_state-
> > >vrr.vmax -
> > + adjusted_mode-
> > >crtc_vdisplay
> > - 1);
> > } else {
> > /* hardware imposes one extra scanline somewhere
> > */
> > crtc_state->vrr.pipeline_full =
> > --
> > 2.43.0
>
More information about the Intel-xe
mailing list