mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Leo Li <sunpeng.li@amd.com>
To: "Nicolas Frattaroli" <nicolas.frattaroli@collabora.com>,
	"Borah, Chaitanya Kumar" <chaitanya.kumar.borah@intel.com>,
	"Daniel Stone" <daniels@collabora.com>,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"David Airlie" <airlied@gmail.com>,
	"Simona Vetter" <simona@ffwll.ch>, "Helge Deller" <deller@gmx.de>,
	"Andrzej Hajda" <andrzej.hajda@intel.com>,
	"Neil Armstrong" <neil.armstrong@linaro.org>,
	"Robert Foss" <rfoss@kernel.org>,
	"Laurent Pinchart" <Laurent.pinchart@ideasonboard.com>,
	"Jonas Karlman" <jonas@kwiboo.se>,
	"Jernej Skrabec" <jernej.skrabec@gmail.com>,
	"Luca Ceresoli" <luca.ceresoli@bootlin.com>,
	"Sandy Huang" <hjc@rock-chips.com>,
	"Heiko Stübner" <heiko@sntech.de>,
	"Andy Yan" <andy.yan@rock-chips.com>
Cc: <dri-devel@lists.freedesktop.org>, <linux-kernel@vger.kernel.org>,
	<linux-fbdev@vger.kernel.org>,
	<linux-rockchip@lists.infradead.org>,
	<linux-arm-kernel@lists.infradead.org>, <kernel@collabora.com>,
	Derek Foreman <derek.foreman@collabora.com>,
	<wayland-devel@lists.freedesktop.org>
Subject: Re: [PATCH RFC 13/25] drm: Add VRR target frame rate properties
Date: Fri, 25 Sep 2026 14:42:05 -0400	[thread overview]
Message-ID: <8a3b2902-3255-4dd9-82f0-75a7747b710e@amd.com> (raw)
In-Reply-To: <VERVf-aJRRKsBOI_3dpScg@collabora.com>



On 2026-09-22 11:26, Nicolas Frattaroli wrote:
>>> + * VRR Limiter/Target Properties
>>> + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> + *
>>> + * The ``VRR_{MIN,MAX}_{NUMERATOR,DENOMINATOR}`` properties expose a mechanism
>>> + * through which userspace can control the desired range of refresh rates in
>>> + * which VRR is allowed to operate. Each rate is expressed as a
>>> + * numerator/denominator fraction of refresh rates in Hz, allowing for rational
>>> + * target rates like 24/1.001 Hz with no loss of precision or ambiguity.
>>> + *
>>> + * If the minimum and maximum rate are set to the same value (and not 0), they
>>> + * are understood as a fixed target rate. This is especially useful for media
>>> + * playback, where the content's frame rate is both constant and known in
>>> + * advance. In such cases, a refresh rate that is not an integer multiple of the
>>> + * content's frame rate will introduce judder, since not every frame is
>>> + * displayed for the same amount of time. A modeset of the display with a
>>> + * compatible rate may in those cases be either undesirable or impossible, but
>>> + * the rate can still effectively be reached through VRR.
>>> + *
>>> + * .. _VRR-MIN-NUMERATOR:
>>> + *
>>> + * "VRR_MIN_NUMERATOR":
>>> + *	Default &drm_crtc integer property forming the numerator of a
>>> + *	numerator/denominator pair of a frame rate to set as the minimum VRR
>>> + *	target rate. Set to 0 to disable.
>>> + *
>>> + * "VRR_MIN_DENOMINATOR":
>>> + *	Default &drm_crtc integer property forming the denominator of a
>>> + *	numerator/denominator pair of a frame rate to set as the minimum VRR
>>> + *	target rate. If :ref:`VRR_MIN_NUMERATOR <VRR-MIN-NUMERATOR>` is not
>>> + *	zero, it must be non-zero.
>>> + *	Otherwise, must also be zero.
>>> + *
>>> + * .. _VRR-MAX-NUMERATOR:
>>> + *
>>> + * "VRR_MAX_NUMERATOR":
>>> + *	Default &drm_crtc integer property forming the numerator of a
>>> + *	numerator/denominator pair of a frame rate to set as the maximum VRR
>>> + *	target rate. Set to 0 to disable.
>>> + *
>>> + * "VRR_MAX_DENOMINATOR":
>>> + *	Default &drm_crtc integer property forming the denominator of a
>>> + *	numerator/denominator pair of a frame rate to set as the maximum VRR
>>> + *	target rate. If :ref:`VRR_MAX_NUMERATOR <VRR-MAX-NUMERATOR>` is not
>>> + *	zero, it must be non-zero. Otherwise, must also be zero.
>>>   */
>> If VRR_MIN_NUMERATOR == 0 && VRR_MAX_NUMERATOR > 0, do we interpret that as
>> vrr limiting is disabled?
> You can picture VRR limiting as always being active, but with a limit rational
> of 0 it uses the display's limit as per the EDID, which is what unlimited game
> mode is. So with how it's implemented right now in hdmi_validate_vrr(), your
> example would set a maximum target, but leave the minimum at whatever the
> display defaults to.
> 
> Now that I'm thinking through this, a possible problem is that
> drm_crtc_helper_vrr_is_fixed_rate() operates on the user supplied limits, but
> if the display supplied lower limit is equal to the user supplied upper limit,
> then we have a fixed rate scenario without recognising it as such. I think I
> need to have a ponder on what the least surprising behaviour for userspace
> is in that instance. The display limit stuff gets a bit complex due to
> CinemaVRR and QMS TFRmin/TFRmax.
> 
> I'll improve the documentation on the next revision to make the meanings more
> explicit.

Perhaps a simple way is to require simultaneous setting MIN and MAX pairs?
IOW, require userspace to set MIN and MAX simultaneously to >0, or =0. For example:

if ((vrr_min_n == 0 || vrr_min_d == 0 ||
     vrr_max_n == 0 || vrr_max_d == 0) &&
    (vrr_min_n > 0 || vrr_max_n > 0))
	return -EINVAL;

That way, it's never ambiguous what userspace has requested for the range. They can copy the EDID supported range if they don't care about limiting one side, rather than leaving it at 0. It's then also clear if they requested a static Hz.

Thanks,
Leo
 



  reply	other threads:[~2026-09-25 18:42 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-21 15:51 [PATCH RFC 00/25] VRR Target Rate Limiter KMS uAPI and Implementation Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 01/25] drm/edid: Add a query for vrr range Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 02/25] drm: Add VRR state Nicolas Frattaroli
2026-09-24  6:55   ` Vidith Madhu
2026-09-21 15:51 ` [PATCH RFC 03/25] drm/atomic-helper: Set mode_changed on vrr_enabled change Nicolas Frattaroli
2026-09-21 21:59   ` Leo Li
2026-09-22 12:53     ` Nicolas Frattaroli
2026-09-22 13:22       ` Maxime Ripard
2026-09-24  6:45     ` Vidith Madhu
2026-09-21 22:01   ` Leo Li
2026-09-21 15:51 ` [PATCH RFC 04/25] video/hdmi: Add VTEM EMP packing Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 05/25] drm/bridge: Add VTEM EMP support Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 06/25] drm/connector: hdmi: Add VTEM EMP generation Nicolas Frattaroli
2026-09-25  3:48   ` Vidith Madhu
2026-09-25 10:42     ` Daniel Stone
2026-09-25 11:11       ` Jani Nikula
2026-09-21 15:51 ` [PATCH RFC 07/25] drm/crtc-helper: Add VRR helper functions Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 08/25] drm/bridge: synopsys: Add VTEM EMP support Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 09/25] drm/connector: Add drm_display_info_is_vrr_capable Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 10/25] drm/rockchip: dw_hdmi_qp: Add VRR support Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 11/25] drm/rockchip: vop2: Enable VRR Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 12/25] drm/edid: Parse CinemaVRR flag from HDMI SCDS Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 13/25] drm: Add VRR target frame rate properties Nicolas Frattaroli
2026-09-21 22:23   ` Leo Li
2026-09-22 15:26     ` Nicolas Frattaroli
2026-09-25 18:42       ` Leo Li [this message]
2026-09-23  9:51   ` Michel Dänzer
2026-09-23  9:54     ` Michel Dänzer
2026-09-23 14:39     ` Nicolas Frattaroli
2026-09-24  7:01       ` Vidith Madhu
2026-09-24 12:10         ` Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 14/25] drm: Implement VRR rate limiting Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 15/25] drm/edid: Parse QMS flag from HDMI SCDS Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 16/25] drm/edid: Parse QMS TFR min/max flags " Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 17/25] drm/connector: Add "qms_enabled" drm property Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 18/25] video/hdmi: Add support for QMS in VTEM EMP packing Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 19/25] drm/connector: hdmi: Add QMS to VTEM EMP generation Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 20/25] drm/connector: hdmi: Add QMS state validation and computation Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 21/25] drm/rockchip: dw_hdmi_qp: Add QMS support Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 22/25] drm/tests: hdmi: Add "Game Mode" VRR tests Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 23/25] drm/tests: hdmi: Add Fixed/Constrained rate " Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 24/25] drm/tests: hdmi: Add Quick Media Switching tests Nicolas Frattaroli
2026-09-21 15:51 ` [PATCH RFC 25/25] drm/atomic: Disable VRR in helper_set_config Nicolas Frattaroli

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=8a3b2902-3255-4dd9-82f0-75a7747b710e@amd.com \
    --to=sunpeng.li@amd.com \
    --cc=Laurent.pinchart@ideasonboard.com \
    --cc=airlied@gmail.com \
    --cc=andrzej.hajda@intel.com \
    --cc=andy.yan@rock-chips.com \
    --cc=chaitanya.kumar.borah@intel.com \
    --cc=daniels@collabora.com \
    --cc=deller@gmx.de \
    --cc=derek.foreman@collabora.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=heiko@sntech.de \
    --cc=hjc@rock-chips.com \
    --cc=jernej.skrabec@gmail.com \
    --cc=jonas@kwiboo.se \
    --cc=kernel@collabora.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=luca.ceresoli@bootlin.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=neil.armstrong@linaro.org \
    --cc=nicolas.frattaroli@collabora.com \
    --cc=rfoss@kernel.org \
    --cc=simona@ffwll.ch \
    --cc=tzimmermann@suse.de \
    --cc=wayland-devel@lists.freedesktop.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®