Instead of setting vrr.guardband to vblank, use optimal guardband that works for most of the cases. This will help in avoiding need of change in guardband and fix the LRR feature that needs seamless switching to a lower refresh rate. Also, for seamless_mn where vtotal is same but mode clock is changed to seamlessly switch to lower rate, re-compute the vrr timings.
Few things that still need work: -The timestamps corresponding with next start of vactive still need to be fixed with the new scheme. -Re-enabling CMRR Ankit Nautiyal (4): drm/i915/vrr: Use vrr.sync_start for getting vtotal drm/i915/vrr: Use static guardband to support seamless LRR switching drm/i915/vrr: Set vrr.vmin to min Vtotal drm/i915/vrr: Fix seamless_mn drrs for PTL drivers/gpu/drm/i915/display/intel_display.c | 5 +- drivers/gpu/drm/i915/display/intel_psr.c | 41 +++++ drivers/gpu/drm/i915/display/intel_psr.h | 2 + drivers/gpu/drm/i915/display/intel_vrr.c | 174 ++++++++++++++++--- drivers/gpu/drm/i915/display/intel_vrr.h | 5 +- 5 files changed, 200 insertions(+), 27 deletions(-) -- 2.45.2