RFC for a render API to support adaptive sync and VRR

Cyr, Aric Aric.Cyr at amd.com
Tue Apr 24 14:20:57 UTC 2018


> From: Daniel Vetter [mailto:daniel.vetter at ffwll.ch] On Behalf Of Daniel Vetter
> Sent: Tuesday, April 24, 2018 08:10
> On Mon, Apr 23, 2018 at 02:19:44PM -0700, Manasi Navare wrote:
> > On Mon, Apr 23, 2018 at 10:40:06AM -0400, Harry Wentland wrote:
> > > On 2018-04-20 04:32 PM, Manasi Navare wrote:
> > > > On Wed, Apr 18, 2018 at 09:39:02AM +0200, Daniel Vetter wrote:
> > > >> On Wed, Apr 18, 2018 at 5:58 AM, Keith Packard <keithp at keithp.com> wrote:
> > > >>> Michel Dänzer <michel at daenzer.net> writes:
> > > >>>> Time-based presentation seems to be the right approach for preventing
> > > >>>> micro-stutter in games as well, Croteam developers have been researching
> > > >>>> this.
> > > >>>
> > > >>> Both the Vulkan GOOGLE_display_timing extension and X11 Present
> > > >>> extension offer the ability to specify the desired display time in
> > > >>> seconds.
> > > >>>
> > > >>> Similarly, I'd suggest that the min/max display refresh rate values be
> > > >>> advertised as time between frames rather than frames per second.
> > > >
> > > > So there is a global min and max refresh rate as advertised by the monitor
> > > > range descriptor. That I guess can be exposed as a global range in terms of
> > > > min and max time between frames as a global property of the connector.
> > > >
> > > > We dont need the per mode min and max refresh rate to be exposed right?
> > >
> > > If I understand VRR right, with CinemaVRR acceptable refresh rates might fall outside the range advertised by the monitor. Would
> we
> > >  1) advertise 24/1.001 as a lower bound,
> > >  2) expect media apps to use the lower bound simply for informational purposes,
> > >  3) or simply not support CinemaVRR?
> > >
> > > (1) has the added caveat that not all reported rates would be supported.
> > >
> > > Alternatively a bit could indicate that CinemaVRR is support, but I'm not sure if user mode would need all these details.
> > >
> > > Harry
> >
> > Are there special CinemaVRR suported monitors? In that case we need to understand how those monitors
> > advertise the monitor range and if they have a bit in EDID that indicate they are CinemaVRR capable
> > as opposed to just the Adaptive Sync/VRR.
> > Harry, if you have one of those monitors, could you send the EDID dump for that?
> 
> As long as the any multiple of the 24/1.001 refresh rate is within the
> officially supported refresh range rate this should work out. Maybe we'll
> end up uploading 2x (to run at ~48Hz), maybe the kernel only uploads at
> 24Hz. But should all be fine.

Ya, I think this makes most sense.  An app can really only know when it ideally wants to present the next frame.
We should let drivers figure out how best to accommodate that time, whether Adaptive Sync or not, frame doubling, etc.
Various hardware will may have different capabilities whose complexity we really don't want to expose to app level.

All an app needs to know is when they want to present a frame (input to kernel), and at what time it was actually presented (feedback from kernel).
Anything else is superfluous and likely overcomplicating things.

Regards,

--
ARIC CYR 
PMTS Software Engineer | SW - Display Technologies




More information about the dri-devel mailing list