On Sun, Sep 21, 2025 at 10:05:30AM +0530, Ankit Nautiyal wrote:
> The helper intel_vrr_real_vblank_delay() was added to account for the
> SCL lines for TGL where we do not have the TRANS_SET_CONTEXT_LATENCY.
> 
> Now, since we already are tracking the SCL with new member
> `set_context_latency` use it directly instead of the helper.
> 
> Signed-off-by: Ankit Nautiyal <[email protected]>

Reviewed-by: Ville Syrjälä <[email protected]>

I think right after this patch you could also do a patch to 
change the guardband calculation to something like:

guardband = vmin - crtc_vdisplay -
        intel_vrr_extra_vblank_delay() -
        crtc_state->set_context_latency;

That better reflects how the hardware opearates.

> ---
>  drivers/gpu/drm/i915/display/intel_vrr.c | 16 +++++-----------
>  1 file changed, 5 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c 
> b/drivers/gpu/drm/i915/display/intel_vrr.c
> index 9e007aab1452..698b33b5b326 100644
> --- a/drivers/gpu/drm/i915/display/intel_vrr.c
> +++ b/drivers/gpu/drm/i915/display/intel_vrr.c
> @@ -79,12 +79,6 @@ intel_vrr_check_modeset(struct intel_atomic_state *state)
>       }
>  }
>  
> -static int intel_vrr_real_vblank_delay(const struct intel_crtc_state 
> *crtc_state)
> -{
> -     return crtc_state->hw.adjusted_mode.crtc_vblank_start -
> -             crtc_state->hw.adjusted_mode.crtc_vdisplay;
> -}
> -
>  static int intel_vrr_extra_vblank_delay(struct intel_display *display)
>  {
>       /*
> @@ -102,7 +96,7 @@ int intel_vrr_vblank_delay(const struct intel_crtc_state 
> *crtc_state)
>  {
>       struct intel_display *display = to_intel_display(crtc_state);
>  
> -     return intel_vrr_real_vblank_delay(crtc_state) +
> +     return crtc_state->set_context_latency +
>               intel_vrr_extra_vblank_delay(display);
>  }
>  
> @@ -263,7 +257,7 @@ static int intel_vrr_hw_value(const struct 
> intel_crtc_state *crtc_state,
>       if (DISPLAY_VER(display) >= 13)
>               return value;
>       else
> -             return value - intel_vrr_real_vblank_delay(crtc_state);
> +             return value - crtc_state->set_context_latency;
>  }
>  
>  /*
> @@ -761,9 +755,9 @@ void intel_vrr_get_config(struct intel_crtc_state 
> *crtc_state)
>  
>               if (DISPLAY_VER(display) < 13) {
>                       /* undo what intel_vrr_hw_value() does when writing the 
> values */
> -                     crtc_state->vrr.flipline += 
> intel_vrr_real_vblank_delay(crtc_state);
> -                     crtc_state->vrr.vmax += 
> intel_vrr_real_vblank_delay(crtc_state);
> -                     crtc_state->vrr.vmin += 
> intel_vrr_real_vblank_delay(crtc_state);
> +                     crtc_state->vrr.flipline += 
> crtc_state->set_context_latency;
> +                     crtc_state->vrr.vmax += crtc_state->set_context_latency;
> +                     crtc_state->vrr.vmin += crtc_state->set_context_latency;
>  
>                       crtc_state->vrr.vmin += 
> intel_vrr_vmin_flipline_offset(display);
>               }
> -- 
> 2.45.2

-- 
Ville Syrjälä
Intel

Reply via email to