From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
jani.nikula@linux.intel.com, navaremanasi@google.com
Subject: Re: [PATCH 0/6] drm/i915/intel_panel: Fix seamless VRR mode switching for DRRS panels
Date: Wed, 3 Jun 2026 17:38:36 +0300 [thread overview]
Message-ID: <aiA8bL4E1SCZQVsw@intel.com> (raw)
In-Reply-To: <20260522132511.321540-1-ankit.k.nautiyal@intel.com>
On Fri, May 22, 2026 at 06:55:05PM +0530, Ankit Nautiyal wrote:
> 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
I didn't really go through the rest of the stuff in fine detail,
but my initial reaction was that it all feels complicated.
Here's a quick attempt at a simpler thing:
https://github.com/vsyrjala/linux.git vrr_no_allow_modeset
Ie. just try to make sure the fixed mode selected by a
!allow_modeset commit is "VRR compatible" with the old
adjusted_mode. This is completely untested though, so not
sure it actually works.
The guardband does still pose a bit of a problem in that
the optimized guardband might exceed the available vblank
for either the old or new mode, in case we can end up with
a change in guardband. If that turns out to be a serious issue
then I suppose we might also need to preserve the current
guardband value instead of recalculating it...
>
> 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
--
Ville Syrjälä
Intel
next prev parent reply other threads:[~2026-06-03 14:38 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
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 21:37 ` ✗ Xe.CI.FULL: " Patchwork
2026-06-03 14:38 ` Ville Syrjälä [this message]
-- strict thread matches above, loose matches on Subject: below --
2026-05-12 13:32 [PATCH 0/6] drm/i915/intel_panel: Fix seamless VRR mode switching for DRRS panels Ankit Nautiyal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aiA8bL4E1SCZQVsw@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=ankit.k.nautiyal@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=navaremanasi@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox