On Thu, Sep 11, 2025 at 08:15:39AM +0530, Ankit Nautiyal wrote: > 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.
I think the _only_ thing we need for that is intel_crtc_vblank_delay() to return a different number. But this series is doing all kinds of stuff to other VRR logic that I don't understand at all. > > First few patches fix/refactor and extract common functions required for > dsc/scaler prefill time computation. Later patches use these helpers to > compute an optimized guardband. > > Also, for seamless_mn where vtotal is same but mode clock is changed to > seamlessly switch to lower rate, re-compute the vrr timings. As Art pointed out that stuff is defeatured on LNL+ (just sent a patch for that) so we don't need to worry about it too much. > > 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 > > Rev2: > -Address comments from Mitul. > -Extract helpers for dsc/scaler prefill latencies. > -Fix downscaling factor for chroma subsampling. > -Use missing pkg C max latency. > -Fix guardband computation for seamless mn, always use vblank for > higher resolution. > > Rev3: > -Drop patches for computing and storing PSR/Panel Replay wake times > latencies and use existing helpers to compute these in intel_alpm.c. > -Drop patch to change the Vmin as it was not required. > > Rev4: > -Rebase > -Drop patch for checking bounds for scaler array access. > -Use a new flag for setting vrr timings for seamless drrs. > > Rev5: > -Address comments from Mitul, Jani: > -Refactor few helpers for computing latencies. > -Rename the helper to check the guardband to > intel_crtc_guardband_atomic_check() > -Refactor the helper intel_panel_highest_mode(). > > Rev6: > -Rebase > -Address review comments from Mitul. > -Improve documentation for and other minor fixes in Patch#12 > > Rev7: > -Address comments from Jani. > -Move the latency helpers from intel_display.c to intel_vrr.c and rename > the helpers appropriately. > -Drop redundant check for HAS_VRR with intel_vrr_possible(). > > Rev8: > -Fix CI issues. > -For fixed RR wait for delayed vblank before dsb interrupt. > > Rev9: > -Fix vrr.vsync_start/end timings for 3D modes (patch#1) > -Rewrite the patch to wait for delayed vblank before dsb interrupt > (patch #11) > -Fix the flipline and vmin timings with optimized guardband (patch#12) > > Rev10: > -Address comments from Ville: Use min guardband computation for setting > the vblank delay and set the crtc_vblank_start to delayed vblank. > (Patch#13) > -Modify the TRANS_SET_CONTEXT_LATENCY as per new guardband and use > vrr.guardband to readback vblank_start. (Patch#11) > > -From previous revision: > ->Drop patch#11 "drm/i915/dsb: Align flipdone with delayed vblank using > guardband wait", as this is no longer required. > ->Modify Patch#12 "drm/i915/vrr: Use static guardband to support seamless > LRR switching" to only introduce a helper to compute the fix guardband. > Modify the commit message and the subject. > > Ankit Nautiyal (15): > drm/i915/vrr: Use crtc_vsync_start/end for computing > vrr.vsync_start/end > drm/i915/skl_watermark: Fix the scaling factor for chroma subsampling > drm/i915/skl_watermark: Pass linetime as argument to latency helpers > drm/i915/skl_scaler: Introduce helper for chroma downscale factor > drm/i915/display: Extract helpers to set dsc/scaler prefill latencies > drm/i915/dp: Add SDP latency computation helper > drm/i915/alpm: Add function to compute max link-wake latency > drm/i915/vrr: Use vrr.sync_start for getting vtotal > drm/i915/display: Add guardband check for feature latencies > drm/i915/skl_watermark: Remove redundant latency checks from vblank > validation > drm/i915/display: Use vrr.guardband to derive vblank_start > drm/i915/vrr: Introduce helper to compute min static guardband > drm/i915/display: Use optimized guardband to set vblank start > drm/i915/panel: Refactor helper to get highest fixed mode > drm/i915/vrr: Fix seamless_mn drrs for PTL > > drivers/gpu/drm/i915/display/intel_alpm.c | 15 + > drivers/gpu/drm/i915/display/intel_alpm.h | 2 + > drivers/gpu/drm/i915/display/intel_display.c | 236 ++++++++++++++- > .../drm/i915/display/intel_display_types.h | 2 + > drivers/gpu/drm/i915/display/intel_dp.c | 63 +++- > drivers/gpu/drm/i915/display/intel_dp.h | 3 + > drivers/gpu/drm/i915/display/intel_panel.c | 11 +- > drivers/gpu/drm/i915/display/intel_panel.h | 3 +- > drivers/gpu/drm/i915/display/intel_vrr.c | 272 ++++++++++++++++-- > drivers/gpu/drm/i915/display/intel_vrr.h | 10 + > drivers/gpu/drm/i915/display/skl_scaler.c | 5 + > drivers/gpu/drm/i915/display/skl_scaler.h | 3 + > drivers/gpu/drm/i915/display/skl_watermark.c | 89 +----- > drivers/gpu/drm/i915/display/skl_watermark.h | 1 + > 14 files changed, 586 insertions(+), 129 deletions(-) > > -- > 2.45.2 -- Ville Syrjälä Intel