All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/6] drm/i915/intel_panel: Fix seamless VRR mode switching for DRRS panels
@ 2026-05-22 13:25 Ankit Nautiyal
  2026-05-22 13:25 ` [PATCH 1/6] drm/i915/display: Handle VSYNC timing in LRR path Ankit Nautiyal
                   ` (11 more replies)
  0 siblings, 12 replies; 17+ messages in thread
From: Ankit Nautiyal @ 2026-05-22 13:25 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: ville.syrjala, jani.nikula, navaremanasi, Ankit Nautiyal

Currently intel_panel_fixed_mode() can return a lower refresh rate mode
for VRR panels if the lower refresh rate mode is first in the list.
This creates problems for seamless switch features like LRR and
Seamless-DRRS, as it results in changes to vsync_start/end causing a
full modeset instead of a seamless switch.

This is particularly problematic for DRRS panels on platforms without
double buffered M/N support for LNL+ (display version 20+), where
seamless clock changes are not possible.

This series attempts to fix this by:
1. Adding a helper to get the highest refresh rate mode from the list of
   fixed modes for a connector.
2. When a seamless switch to a lower mode is desired, making
   intel_panel_fixed_mode() return the highest refresh rate mode,
   provided the requested rate is in VRR range. The vblank is then
   extended to provide the desired refresh rate.

To determine whether a full modeset or seamless switch is intended, the
connector state is checked for the allow_modeset flag. A nullable
conn_state parameter is added to intel_panel_fixed_mode() and
intel_panel_compute_config() for this purpose.

Rev2:
 - Address Ville's comments to preserve Vtotal-Vsync distance while
   adjusting VTOTAL.
 - Address Manasi's comments to always go with highest RR mode
   irrespective of allow_modeset flag for modes that have same clock but
   different votal.

Rev3:
 - Drop patch to deprecate TRANS_VSYNC, instead add Vsync start/end in
   lrr codepaths. (Ville).
 - Fix the condition to avoid picking higher RR mode for DRRS panels
   when allow modeset flag is set.

Ankit Nautiyal (6):
  drm/i915/display: Handle VSYNC timing in LRR path
  drm/i915/panel: Preserve Vtotal-Vsync distance while adjusting vtotal
  drm/i915/intel_panel: Add a helper to get the highest refresh rate
    mode
  drm/i915/intel_panel: Pass crtc_state to intel_panel_compute_config
  drm/i915/intel_panel: Use highest refresh rate mode for VRR panels
  drm/i915/intel_panel: Refine VRR fixed mode selection for DRRS panels

 drivers/gpu/drm/i915/display/icl_dsi.c       |   2 +-
 drivers/gpu/drm/i915/display/intel_display.c |   9 +-
 drivers/gpu/drm/i915/display/intel_dp.c      |   2 +-
 drivers/gpu/drm/i915/display/intel_dvo.c     |   2 +-
 drivers/gpu/drm/i915/display/intel_lvds.c    |   2 +-
 drivers/gpu/drm/i915/display/intel_panel.c   | 102 +++++++++++++++----
 drivers/gpu/drm/i915/display/intel_panel.h   |   9 +-
 drivers/gpu/drm/i915/display/intel_sdvo.c    |   8 +-
 drivers/gpu/drm/i915/display/vlv_dsi.c       |   2 +-
 9 files changed, 108 insertions(+), 30 deletions(-)

-- 
2.45.2


^ permalink raw reply	[flat|nested] 17+ messages in thread
* [PATCH 0/6] drm/i915/intel_panel: Fix seamless VRR mode switching for DRRS panels
@ 2026-05-12 13:32 Ankit Nautiyal
  2026-05-12 13:32 ` [PATCH 2/6] drm/i915/panel: Preserve Vtotal-Vsync distance while adjusting vtotal Ankit Nautiyal
  0 siblings, 1 reply; 17+ messages in thread
From: Ankit Nautiyal @ 2026-05-12 13:32 UTC (permalink / raw)
  To: intel-gfx, intel-xe
  Cc: ville.syrjala, jani.nikula, navaremanasi, Ankit Nautiyal

Currently intel_panel_fixed_mode() can return a lower refresh rate mode
for VRR panels if the lower refresh rate mode is first in the list.
This creates problems for seamless switch features like LRR and
Seamless-DRRS, as it results in changes to vsync_start/end causing a
full modeset instead of a seamless switch.

This is particularly problematic for DRRS panels on platforms without
double buffered M/N support for LNL+ (display version 20+), where
seamless clock changes are not possible.

This series attempts to fix this by:
1. Adding a helper to get the highest refresh rate mode from the list of
   fixed modes for a connector.
2. When a seamless switch to a lower mode is desired, making
   intel_panel_fixed_mode() return the highest refresh rate mode,
   provided the requested rate is in VRR range. The vblank is then
   extended to provide the desired refresh rate.

To determine whether a full modeset or seamless switch is intended, the
connector state is checked for the allow_modeset flag. A nullable
conn_state parameter is added to intel_panel_fixed_mode() and
intel_panel_compute_config() for this purpose.

Rev2:
 - Address Ville's comments to preserve Vtotal-Vsync distance while
   adjusting VTOTAL.
 - Address Manasi's comments to always go with highest RR mode
   irrespective of allow_modeset flag for modes that have same clock but
   different votal.

Ankit Nautiyal (6):
  drm/i915/display: Deprecate TRANS_VSYNC where VRR TG is always on
  drm/i915/panel: Preserve Vtotal-Vsync distance while adjusting vtotal
  drm/i915/intel_panel: Add a helper to get the highest refresh rate
    mode
  drm/i915/intel_panel: Pass crtc_state to intel_panel_compute_config
  drm/i915/intel_panel: Use highest refresh rate mode for VRR panels
  drm/i915/intel_panel: Refine VRR fixed mode selection for DRRS panels

 drivers/gpu/drm/i915/display/icl_dsi.c       |  2 +-
 drivers/gpu/drm/i915/display/intel_display.c | 19 +++-
 drivers/gpu/drm/i915/display/intel_dp.c      |  2 +-
 drivers/gpu/drm/i915/display/intel_dvo.c     |  2 +-
 drivers/gpu/drm/i915/display/intel_lvds.c    |  2 +-
 drivers/gpu/drm/i915/display/intel_panel.c   | 94 ++++++++++++++++----
 drivers/gpu/drm/i915/display/intel_panel.h   |  9 +-
 drivers/gpu/drm/i915/display/intel_sdvo.c    |  8 +-
 drivers/gpu/drm/i915/display/intel_vrr.c     | 31 +++++--
 drivers/gpu/drm/i915/display/vlv_dsi.c       |  2 +-
 10 files changed, 130 insertions(+), 41 deletions(-)

-- 
2.45.2


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2026-06-09  3:04 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-22 13:25 [PATCH 0/6] drm/i915/intel_panel: Fix seamless VRR mode switching for DRRS panels Ankit Nautiyal
2026-05-22 13:25 ` [PATCH 1/6] drm/i915/display: Handle VSYNC timing in LRR path Ankit Nautiyal
2026-06-03 12:13   ` Ville Syrjälä
2026-05-22 13:25 ` [PATCH 2/6] drm/i915/panel: Preserve Vtotal-Vsync distance while adjusting vtotal Ankit Nautiyal
2026-06-03 12:14   ` Ville Syrjälä
2026-05-22 13:25 ` [PATCH 3/6] drm/i915/intel_panel: Add a helper to get the highest refresh rate mode Ankit Nautiyal
2026-05-22 13:25 ` [PATCH 4/6] drm/i915/intel_panel: Pass crtc_state to intel_panel_compute_config Ankit Nautiyal
2026-05-22 13:25 ` [PATCH 5/6] drm/i915/intel_panel: Use highest refresh rate mode for VRR panels Ankit Nautiyal
2026-05-22 13:25 ` [PATCH 6/6] drm/i915/intel_panel: Refine VRR fixed mode selection for DRRS panels Ankit Nautiyal
2026-05-22 14:38 ` ✓ CI.KUnit: success for drm/i915/intel_panel: Fix seamless VRR mode switching for DRRS panels (rev3) Patchwork
2026-05-22 15:16 ` ✗ Xe.CI.BAT: failure " Patchwork
2026-05-22 17:48 ` ✓ i915.CI.BAT: success " Patchwork
2026-05-22 21:37 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-05-24  0:07 ` ✗ i915.CI.Full: " Patchwork
2026-06-03 14:38 ` [PATCH 0/6] drm/i915/intel_panel: Fix seamless VRR mode switching for DRRS panels Ville Syrjälä
2026-06-09  3:03   ` Nautiyal, Ankit K
  -- strict thread matches above, loose matches on Subject: below --
2026-05-12 13:32 Ankit Nautiyal
2026-05-12 13:32 ` [PATCH 2/6] drm/i915/panel: Preserve Vtotal-Vsync distance while adjusting vtotal Ankit Nautiyal

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.