On Sun, Sep 21, 2025 at 10:05:32AM +0530, Ankit Nautiyal wrote:
> Currently we use difference between vactive and vblank delay to
> implicitly wait for SCL lines.
>
> Remove the function intel_mode_vblank_delay as we can simply use
> the set context latency instead.
>
> Signed-off-by: Ankit Nautiyal <[email protected]>
> ---
> drivers/gpu/drm/i915/display/intel_dsb.c | 4 ++--
> drivers/gpu/drm/i915/display/intel_vblank.c | 7 +------
> drivers/gpu/drm/i915/display/intel_vblank.h | 1 -
> 3 files changed, 3 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dsb.c
> b/drivers/gpu/drm/i915/display/intel_dsb.c
> index ca31e928ecb0..dfe928aefdcd 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsb.c
> +++ b/drivers/gpu/drm/i915/display/intel_dsb.c
> @@ -130,7 +130,7 @@ static int dsb_vblank_delay(struct intel_atomic_state
> *state,
> */
> return intel_vrr_scl_delay(crtc_state) + 1;
> else
> - return intel_mode_vblank_delay(&crtc_state->hw.adjusted_mode);
> + return crtc_state->set_context_latency;
I think we want to leave all the non-VRR cases to use
intel_mode_vblank_delay(). Otherwise when running with fixed
refresh rate we won't account for a reduced guardband.
And for the cases where the fixed refresh rate is handle by the legacy
timing generator we actually need a slightly different delay for the
legacy and VRR timing generators on TGL (due to
intel_vrr_extra_vblank_delay() only affecting the VRR timing generator).
> }
>
> static int dsb_vtotal(struct intel_atomic_state *state,
> @@ -733,7 +733,7 @@ void intel_dsb_vblank_evade(struct intel_atomic_state
> *state,
> start = end - vblank_delay - latency;
> intel_dsb_wait_scanline_out(state, dsb, start, end);
> } else {
> - int vblank_delay =
> intel_mode_vblank_delay(&crtc_state->hw.adjusted_mode);
> + int vblank_delay = crtc_state->set_context_latency;
>
> end = intel_mode_vblank_start(&crtc_state->hw.adjusted_mode);
> 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 9441b7bacd27..8c4cb6913ef9 100644
> --- a/drivers/gpu/drm/i915/display/intel_vblank.c
> +++ b/drivers/gpu/drm/i915/display/intel_vblank.c
> @@ -619,11 +619,6 @@ int intel_mode_vtotal(const struct drm_display_mode
> *mode)
> return vtotal;
> }
>
> -int intel_mode_vblank_delay(const struct drm_display_mode *mode)
> -{
> - return intel_mode_vblank_start(mode) - intel_mode_vdisplay(mode);
> -}
> -
> static const struct intel_crtc_state *
> pre_commit_crtc_state(const struct intel_crtc_state *old_crtc_state,
> const struct intel_crtc_state *new_crtc_state)
> @@ -685,7 +680,7 @@ void intel_vblank_evade_init(const struct
> intel_crtc_state *old_crtc_state,
> } else {
> evade->vblank_start = intel_mode_vblank_start(adjusted_mode);
>
> - vblank_delay = intel_mode_vblank_delay(adjusted_mode);
> + vblank_delay = crtc_state->set_context_latency;
> }
>
> /* FIXME needs to be calibrated sensibly */
> diff --git a/drivers/gpu/drm/i915/display/intel_vblank.h
> b/drivers/gpu/drm/i915/display/intel_vblank.h
> index 21fbb08d61d5..0fd6f7aeffd4 100644
> --- a/drivers/gpu/drm/i915/display/intel_vblank.h
> +++ b/drivers/gpu/drm/i915/display/intel_vblank.h
> @@ -25,7 +25,6 @@ int intel_mode_vdisplay(const struct drm_display_mode
> *mode);
> int intel_mode_vblank_start(const struct drm_display_mode *mode);
> int intel_mode_vblank_end(const struct drm_display_mode *mode);
> int intel_mode_vtotal(const struct drm_display_mode *mode);
> -int intel_mode_vblank_delay(const struct drm_display_mode *mode);
>
> void intel_vblank_evade_init(const struct intel_crtc_state *old_crtc_state,
> const struct intel_crtc_state *new_crtc_state,
> --
> 2.45.2
--
Ville Syrjälä
Intel