[PATCH 1/4] drm/i915/vrr: Use vrr.sync_start for getting vtotal
Golani, Mitulkumar Ajitkumar
mitulkumar.ajitkumar.golani at intel.com
Wed Jul 16 06:59:58 UTC 2025
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces at lists.freedesktop.org> On Behalf Of Ankit
> Nautiyal
> Sent: 07 July 2025 11:33
> To: intel-gfx at lists.freedesktop.org; intel-xe at lists.freedesktop.org
> Cc: ville.syrjala at linux.intel.com; Nautiyal, Ankit K <ankit.k.nautiyal at intel.com>
> Subject: [PATCH 1/4] drm/i915/vrr: Use vrr.sync_start for getting vtotal
>
> Currently, in intel_vrr_get_config() crtc_vtotal is computed from vrr.vmin
> vtotal, since the VTOTAL.Vtotal bits are deprecated.
> Since vmin is currently set to crtc_vtotal, this gives us the vtotal.
> However, as we move to optimized guardband, vmin will be modified to set to
> the minimum Vtotal for highest refresh rate supported.
>
> Instead of depending on vmin, compute vtotal from crtc_vsync_start and
> vrr.vsync_start. This works since vrr.vsync_start is measured from the end of
> vblank, and crtc_vsync_start is measured from start of the scanline. Together
> their sum is equal to the crtc_vtotal.
>
> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal at intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_vrr.c | 21 ++++++++++-----------
> 1 file changed, 10 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c
> b/drivers/gpu/drm/i915/display/intel_vrr.c
> index 3eed37f271b0..46a85720411f 100644
> --- a/drivers/gpu/drm/i915/display/intel_vrr.c
> +++ b/drivers/gpu/drm/i915/display/intel_vrr.c
> @@ -735,17 +735,6 @@ void intel_vrr_get_config(struct intel_crtc_state
> *crtc_state)
> TRANS_VRR_VMAX(display,
> cpu_transcoder)) + 1;
> crtc_state->vrr.vmin = intel_de_read(display,
> TRANS_VRR_VMIN(display,
> cpu_transcoder)) + 1;
> -
> - /*
> - * For platforms that always use VRR Timing Generator, the
> VTOTAL.Vtotal
> - * bits are not filled. Since for these platforms TRAN_VMIN is
> always
> - * filled with crtc_vtotal, use TRAN_VRR_VMIN to get the vtotal
> for
> - * adjusted_mode.
> - */
> - if (intel_vrr_always_use_vrr_tg(display))
> - crtc_state->hw.adjusted_mode.crtc_vtotal =
> - intel_vrr_vmin_vtotal(crtc_state);
> -
> if (HAS_AS_SDP(display)) {
> trans_vrr_vsync =
> intel_de_read(display,
> @@ -755,6 +744,16 @@ void intel_vrr_get_config(struct intel_crtc_state
> *crtc_state)
> crtc_state->vrr.vsync_end =
> REG_FIELD_GET(VRR_VSYNC_END_MASK,
> trans_vrr_vsync);
> }
> + /*
> + * For platforms that always use VRR Timing Generator, the
> VTOTAL.Vtotal
> + * bits are not filled. Since vrr.vsync_start is computed as:
> + * crtc_vtotal - crtc_vsync_start, we can derive vtotal from
> + * vrr.vsync_start and crtc_vsync_start.
> + */
> + if (intel_vrr_always_use_vrr_tg(display))
> + crtc_state->hw.adjusted_mode.crtc_vtotal =
> + crtc_state-
> >hw.adjusted_mode.crtc_vsync_start +
> + crtc_state->vrr.vsync_start;
On the perspective where we don't want to rely on vmin_vtotal and to find alternate way to calculate the crtc_vtotal, Change LGTM.
Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani at intel.com>
> }
>
> vrr_enable = trans_vrr_ctl & VRR_CTL_VRR_ENABLE;
> --
> 2.45.2
More information about the Intel-xe
mailing list