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

Reply via email to