This patch series refactors VRR and DSB timing logic by introducing
explicit handling of Set Context Latency (SCL) the number of lines required
before double buffering to safely program display registers, aka W2 Window.
Previously, SCL was handled implicitly via vblank delay calculations. This
was a hinderance for later work to optimize guardband length. This series
formalizes SCL as `set_context_latency` in `intel_crtc_state`, enabling
consistent tracking and timing/delay computation across platforms.
- Introduces `set_context_latency` to track SCL explicitly.
- Refactors VRR evasion and DSB wait logic to use SCL directly.
- Clamps guardband values based on hardware limits and timing constraints.
- Renames helpers for clarity and removes legacy delay logic.
Rev2: Address comments from Ville:
- Handle SCL for TGL better and meld patch with previous patch.
- Drop patch to use set context latency in evasion logic.
- Add patch to introduce REG_FIELD_MAX based on FIELD_MAX.
- Added new helper to wait for SCL start and end lines.
- Other minor refactoring suggested in comments.
Rev3:
- Drop patch to rename vrr_vblank_delay and instead add a patch to
replace it directly with crtc_state->set_context_latency. (Ville)
- Fix few places where adjusted_mode->crtc_vdisplay was missed. (Ville)
- Minor refactoring to make the helpers consistent with other parts.
Rev4:
- Add new Patch#10 to drop the single-use dsb_vblank_delay(). (Ville)
- Minor changes as suggested in comments in Patch#8.
Ankit Nautiyal (10):
drm/i915/psr:
s/intel_psr_min_vblank_delay/intel_psr_min_set_context_latency
drm/i915/display: Add set_context_latency to crtc_state
drm/i915/vrr: Use set_context_latency instead of
intel_vrr_real_vblank_delay()
drm/i915/vrr: Use SCL for computing guardband
drm/i915/dsb:
s/intel_dsb_wait_vblank_delay/intel_dsb_wait_for_delayed_vblank
drm/i915/display: Wait for scl start instead of dsb_wait_vblanks
drm/i915/reg_defs: Add REG_FIELD_MAX wrapper for FIELD_MAX()
drm/i915/vrr: Clamp guardband as per hardware and timing constraints
drm/i915/display: Drop intel_vrr_vblank_delay and use
set_context_latency
drm/i915/dsb: Inline dsb_vblank_delay() into
intel_dsb_wait_for_delayed_vblank()
drivers/gpu/drm/i915/display/intel_color.c | 2 +-
.../drm/i915/display/intel_crtc_state_dump.c | 5 +-
drivers/gpu/drm/i915/display/intel_display.c | 58 ++++++++-----
.../drm/i915/display/intel_display_types.h | 3 +
drivers/gpu/drm/i915/display/intel_dsb.c | 54 +++++++-----
drivers/gpu/drm/i915/display/intel_dsb.h | 4 +-
drivers/gpu/drm/i915/display/intel_psr.c | 6 +-
drivers/gpu/drm/i915/display/intel_psr.h | 2 +-
drivers/gpu/drm/i915/display/intel_vblank.c | 2 +-
drivers/gpu/drm/i915/display/intel_vrr.c | 84 ++++++++++++-------
drivers/gpu/drm/i915/display/intel_vrr.h | 3 +-
drivers/gpu/drm/i915/i915_reg_defs.h | 10 +++
12 files changed, 152 insertions(+), 81 deletions(-)
--
2.45.2