On 9/24/2025 7:45 PM, Ankit Nautiyal wrote:
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()


Thanks for the reviews, pushed to drm-intel-next.

Regards,

Ankit


  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(-)

Reply via email to