All of lore.kernel.org
 help / color / mirror / Atom feed
* RFC for a render API to support adaptive sync and VRR
@ 2018-04-09 19:56 Harry Wentland
       [not found] ` <c79421ce-9408-5cd6-5de3-0fa521146e4b-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 43+ messages in thread
From: Harry Wentland @ 2018-04-09 19:56 UTC (permalink / raw)
  To: amd-gfx mailing list, Manasi Navare, Daniel Vetter,
	Nicolai Hähnle, Michel Dänzer, Deucher, Alexander,
	Christian König

=== What is adaptive sync and VRR? ===

Adaptive sync has been part of the DisplayPort spec for a while now and allows graphics adapters to drive displays with varying frame timings. VRR (variable refresh rate) is essentially the same, but defined for HDMI.



=== Why allow variable frame timings? ===

Variable render times don't align with fixed refresh rates, leading to
stuttering, tearing, and/or input lag.

e.g. (rc = render completion, dr = display refresh)

rc       B          C            D            E      F
dr	A	B	C	C	D	E	F

                    ^             ^        
		  frame         missed     
		 repeated	display    
		  twice	        refresh   



=== Other use cases of adaptive sync ====

Beside the variable render case, adaptive sync also allows adjustment of refresh rates without a mode change. One such use case would be 24 Hz video.



=== A DRM render API to support variable refresh rates ===

In order to benefit from adaptive sync and VRR userland needs a way to let us know whether to vary frame timings or to target a different frame time. These can be provided as atomic properties on a CRTC:
 * bool	variable_refresh_compatible
 * int	target_frame_duration_ns (nanosecond frame duration)

This gives us the following cases:

variable_refresh_compatible = 0, target_frame_duration_ns = 0
 * drive monitor at timing's normal refresh rate

variable_refresh_compatible = 1, target_frame_duration_ns = 0
 * send new frame to monitor as soon as it's available, if within min/max of monitor's reported capabilities

variable_refresh_compatible = 0/1, target_frame_duration_ns = > 0
 * send new frame to monitor with the specified target_frame_duration_ns

When a target_frame_duration_ns or variable_refresh_compatible cannot be supported the atomic check will reject the commit.



=== Previous discussions ===

https://lists.freedesktop.org/archives/dri-devel/2017-October/155207.html



=== Feedback and moving forward ===

I'm hoping to get some feedback on this or continue the discussion on how adaptive sync / VRR might look like in the DRM ecosystem. Once there are no major concerns or objections left we'll probably start creating some patches to sketch this out a bit better and see how it looks in practice.



Cheers,
Harry
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

end of thread, other threads:[~2018-08-17 10:20 UTC | newest]

Thread overview: 43+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-09 19:56 RFC for a render API to support adaptive sync and VRR Harry Wentland
     [not found] ` <c79421ce-9408-5cd6-5de3-0fa521146e4b-5C7GfCeVMHo@public.gmane.org>
2018-04-09 20:00   ` Harry Wentland
     [not found]     ` <435ebd04-0435-5a6a-9f1e-e4c4fc629aa9-5C7GfCeVMHo@public.gmane.org>
2018-04-09 21:45       ` Manasi Navare
     [not found]         ` <20180409214554.GB13967-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2018-04-10  6:45           ` Christian König
2018-04-10  7:37             ` Michel Dänzer
     [not found]               ` <b75e31f7-ce59-de97-5445-cb4c03ff7336-otUistvHUpPR7s880joybQ@public.gmane.org>
2018-04-10 15:08                 ` Harry Wentland
     [not found]                   ` <ae9992e5-43ab-9636-13e1-8a5c692480b5-5C7GfCeVMHo@public.gmane.org>
2018-04-10 15:28                     ` Christian König
2018-04-10 15:35                     ` Cyr, Aric
2018-04-10 15:43                       ` Christian König
     [not found]                         ` <fc53ce53-f02c-891d-4aa5-e9a11cbe3007-5C7GfCeVMHo@public.gmane.org>
2018-04-10 16:26                           ` Cyr, Aric
     [not found]                             ` <MWHPR12MB1837488A047C03E955282A4182BE0-Gy0DoCVfaSXe1Hf+mWOIywdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2018-04-10 16:37                               ` Nicolai Hähnle
     [not found]                                 ` <54baa87e-33a9-bd69-a309-d61176eb4e8d-5C7GfCeVMHo@public.gmane.org>
2018-04-10 17:52                                   ` Harry Wentland
     [not found]                             ` <063d6dff-2b97-ef01-12bb-8a24125a58ec@daenzer.net>
2018-04-10 17:13                               ` Cyr, Aric
     [not found]                                 ` <65006f34-39b9-5aca-e0c0-77a591b69c3a@daenzer.net>
     [not found]                                   ` <65006f34-39b9-5aca-e0c0-77a591b69c3a-otUistvHUpPR7s880joybQ@public.gmane.org>
2018-04-10 17:25                                     ` Cyr, Aric
     [not found]                                       ` <f85e3590-b283-843b-12d0-5f6f0c4c0952@amd.com>
2018-04-10 21:45                                         ` Cyr, Aric
2018-04-11  6:57                                           ` Nicolai Hähnle
     [not found]                                             ` <72c1d357-db72-b181-9421-04f99b3bbf2f-5C7GfCeVMHo@public.gmane.org>
2018-04-11  9:50                                               ` Michel Dänzer
     [not found]                                                 ` <2005817c-09c0-aebe-bb96-9e22d6f16df5-otUistvHUpPR7s880joybQ@public.gmane.org>
2018-04-11 23:30                                                   ` Cyr, Aric
     [not found]                                                     ` <MWHPR12MB1837F8120B126FA3A4CE899982BD0-Gy0DoCVfaSXe1Hf+mWOIywdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2018-04-12  8:48                                                       ` Michel Dänzer
2018-04-12 11:39                                                     ` Nicolai Hähnle
     [not found]                                                       ` <a5b5c31f-e7c5-8ae0-1239-06bfa86b939b-5C7GfCeVMHo@public.gmane.org>
2018-04-12 14:57                                                         ` Michel Dänzer
2018-04-12 17:39                                                         ` Harry Wentland
2018-04-11 10:28                                       ` Michel Dänzer
2018-04-11 15:45                             ` Michel Dänzer
     [not found]                       ` <MWHPR12MB1837C57016A470A5199E855282BE0-Gy0DoCVfaSXe1Hf+mWOIywdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2018-04-10 17:13                         ` Michel Dänzer
2018-04-12 21:38                 ` Stéphane Marchesin
2018-04-13 19:24                   ` Harry Wentland
2018-04-18  3:58                 ` Keith Packard
2018-04-18  7:39                   ` Daniel Vetter
2018-04-20 20:32                     ` Manasi Navare
     [not found]                       ` <20180420203240.GA9472-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2018-04-21 10:30                         ` Daniel Stone
2018-04-23 14:40                         ` Harry Wentland
2018-04-23 21:19                           ` Manasi Navare
     [not found]                             ` <20180423211944.GC9472-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2018-04-24 12:09                               ` Daniel Vetter
2018-04-24 14:20                                 ` Cyr, Aric
     [not found]                                 ` <20180424120946.GW31310-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2018-04-24 14:28                                   ` Harry Wentland
     [not found]                                     ` <b9c33eeb-1db8-f782-cfbe-411d94fecb67-5C7GfCeVMHo@public.gmane.org>
2018-04-24 21:57                                       ` Daniel Vetter
     [not found]                                         ` <CAKMK7uHzLRUwZSFbMb4qDzXBODVSQVTTw6BxgmvJdES4gJmBDg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-08-17 10:20                                           ` Ernst Sjöstrand
2018-04-10 15:03           ` Harry Wentland
2018-04-10 21:36             ` Manasi Navare
2018-04-10 22:00               ` Cyr, Aric
2018-04-13 16:04       ` Daniel Vetter
     [not found]         ` <20180413160453.GC31310-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org>
2018-04-13 19:20           ` Harry Wentland

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.