Currently crtc_vblank_start is read out either from VBLANK_START (pre ADL) or from set context latency and vactive, in intel_get_transcoder_timings().
As we move the delayed vblank to reduce the guardband, we need to use the guardband to readout the new vblank start. Recompute and overwrite the new vblank start when optimized guardband is used in intel_vrr_get_config(). Signed-off-by: Ankit Nautiyal <[email protected]> --- drivers/gpu/drm/i915/display/intel_vrr.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c index 0b4694a1e2b5..dfd4f7456db0 100644 --- a/drivers/gpu/drm/i915/display/intel_vrr.c +++ b/drivers/gpu/drm/i915/display/intel_vrr.c @@ -832,6 +832,15 @@ void intel_vrr_get_config(struct intel_crtc_state *crtc_state) */ if (crtc_state->vrr.enable) crtc_state->mode_flags |= I915_MODE_FLAG_VRR; + + /* + * If guardband is optimized then vblank start is vtotal - vblank_start + */ + if (intel_vrr_use_optimized_guardband(crtc_state)) + crtc_state->hw.adjusted_mode.crtc_vblank_start = + crtc_state->hw.adjusted_mode.crtc_vtotal - + crtc_state->vrr.guardband; + } int intel_vrr_safe_window_start(const struct intel_crtc_state *crtc_state) -- 2.45.2
