From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Drew Davenport <ddavenport@chromium.org>,
intel-gfx@lists.freedesktop.org,
Sean Paul <seanpaul@chromium.org>
Subject: Re: [Intel-gfx] [PATCH v4] drm/i915/display: Dual refresh rate fastset fixes with VRR fastset
Date: Thu, 24 Aug 2023 14:41:05 +0300 [thread overview]
Message-ID: <ZOdB0VXC_knLUmFI@intel.com> (raw)
In-Reply-To: <87fs484r4a.fsf@intel.com>
On Thu, Aug 24, 2023 at 02:27:49PM +0300, Jani Nikula wrote:
> On Fri, 18 Aug 2023, Manasi Navare <navaremanasi@chromium.org> wrote:
> > Dual refresh rate (DRR) fastset seamlessly lets refresh rate
> > throttle without needing a full modeset.
> > However with the recent VRR fastset patches that got merged this
> > logic was broken. This is broken because now with VRR fastset
> > VRR parameters are calculated by default at the nominal refresh rate say 120Hz.
> > Now when DRR throttle happens to switch refresh rate to 60Hz, crtc clock
> > changes and this throws a mismatch in VRR parameters and fastset logic
> > for DRR gets thrown off and full modeset is indicated.
> >
> > This patch fixes this by ignoring the pipe mismatch for VRR parameters
> > in the case of DRR and when VRR is not enabled. With this fix, DRR
> > will still throttle seamlessly as long as VRR is not enabled.
> >
> > This will still need a full modeset for both DRR and VRR operating together
> > during the refresh rate throttle and then enabling VRR since now VRR
> > parameters need to be recomputed with new crtc clock and written to HW.
> >
> > This DRR + VRR fastset in conjunction needs more work in the driver and
> > will be fixed in later patches.
> >
> > v3:
> > Compute new VRR params whenever there is fastset and its non DRRS.
> > This will ensure it computes while switching to a fixed RR (Mitul)
> >
> > v2:
> > Check for pipe config mismatch in crtc clock whenever VRR is enabled
> >
> > Fixes: 1af1d18825d3 ("drm/i915/vrr: Allow VRR to be toggled during fastsets")
>
> How could this have broken fastsets, when this made it possible to do
> vrr enable/disable fastsets to begin with? I was hoping to get a
> regressing commit to make this easier to reason.
>
> > Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/9154
> > Cc: Drew Davenport <ddavenport@chromium.org>
> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > Cc: Sean Paul <seanpaul@chromium.org>
> > Cc: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
> > Signed-off-by: Manasi Navare <navaremanasi@chromium.org>
> > ---
> > drivers/gpu/drm/i915/display/intel_display.c | 14 ++++++++------
> > 1 file changed, 8 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> > index 763ab569d8f3..2cf3b22adaf7 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > @@ -5352,7 +5352,7 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
> > if (IS_G4X(dev_priv) || DISPLAY_VER(dev_priv) >= 5)
> > PIPE_CONF_CHECK_I(pipe_bpp);
> >
> > - if (!fastset || !pipe_config->seamless_m_n) {
> > + if (!fastset || !pipe_config->seamless_m_n || pipe_config->vrr.enable) {
> > PIPE_CONF_CHECK_I(hw.pipe_mode.crtc_clock);
> > PIPE_CONF_CHECK_I(hw.adjusted_mode.crtc_clock);
> > }
> > @@ -5387,11 +5387,13 @@ intel_pipe_config_compare(const struct intel_crtc_state *current_config,
> >
> > if (!fastset)
> > PIPE_CONF_CHECK_BOOL(vrr.enable);
> > - PIPE_CONF_CHECK_I(vrr.vmin);
> > - PIPE_CONF_CHECK_I(vrr.vmax);
> > - PIPE_CONF_CHECK_I(vrr.flipline);
> > - PIPE_CONF_CHECK_I(vrr.pipeline_full);
> > - PIPE_CONF_CHECK_I(vrr.guardband);
> > + if ((fastset && !pipe_config->seamless_m_n) || pipe_config->vrr.enable) {
>
> I just don't get the conditions here and above. For example, why
> wouldn't we check the parameters e.g. on full modeset that disables vrr?
>
> I think we'll need a matrix of the features, which of them can be
> combined together, which are mutually exclusive, and which are expected
> to be fastsets.
I wouldn't expect a panel to support both DRRS and VRR. Pick one and
stick to it.
I haven't thought through all the implications of changing all the VRR
parameters live, so fastsets doing that are currently not possible. I
have a branch for LRR (which is essentially manual VRR) but that was
writtent before the VRR fastset support, so needs a full redesign now.
Until then I don't think we can do anything.
--
Ville Syrjälä
Intel
next prev parent reply other threads:[~2023-08-24 11:41 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-18 19:05 [Intel-gfx] [PATCH v4] drm/i915/display: Dual refresh rate fastset fixes with VRR fastset Manasi Navare
2023-08-18 19:51 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: Dual refresh rate fastset fixes with VRR fastset (rev4) Patchwork
2023-08-18 19:51 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2023-08-18 20:05 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2023-08-19 22:37 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2023-08-21 18:14 ` [Intel-gfx] [PATCH v4] drm/i915/display: Dual refresh rate fastset fixes with VRR fastset Manasi Navare
2023-08-24 11:27 ` Jani Nikula
2023-08-24 11:41 ` Ville Syrjälä [this message]
2023-08-24 15:57 ` Manasi Navare
2023-08-24 16:03 ` Manasi Navare
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=ZOdB0VXC_knLUmFI@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=ddavenport@chromium.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=seanpaul@chromium.org \
/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 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.