[PATCH weston v5 00/36] Head-based output configuration API a.k.a clone mode infrastructure

Daniel Vetter daniel at ffwll.ch
Wed Jan 10 14:35:36 UTC 2018


On Wed, Dec 20, 2017 at 02:58:14PM -0500, Alex Deucher wrote:
> On Mon, Dec 18, 2017 at 2:38 AM, Pekka Paalanen <ppaalanen at gmail.com> wrote:
> > On Fri, 15 Dec 2017 15:35:53 -0500
> > Alex Deucher <alexdeucher at gmail.com> wrote:
> >
> >> On Fri, Dec 15, 2017 at 2:27 AM, Pekka Paalanen <ppaalanen at gmail.com> wrote:
> >> > On Thu, 14 Dec 2017 10:11:32 -0500
> >> > Alex Deucher <alexdeucher at gmail.com> wrote:
> >> >
> >> >> On Thu, Dec 14, 2017 at 6:40 AM, Pekka Paalanen <ppaalanen at gmail.com> wrote:
> >> >> > From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
> >> >> >
> >> >> > Hi all,
> >> >> >
> >> >> > this is v5 (to match the numbering of my public branches) of the libweston user
> >> >> > facing API and infrastructure for supporting shared-CRTC clone mode.
> >> >> >
> >> >> > Previous submission with rationale:
> >> >> > https://lists.freedesktop.org/archives/wayland-devel/2017-October/035604.html
> >> >> >
> >> >> > Design document:
> >> >> > https://phabricator.freedesktop.org/w/wayland/weston/atomic-output-config/
> >> >> >
> >> >> > The goal:
> >> >> > https://phabricator.freedesktop.org/T7727
> >> >>
> >> >> FWIW, at least with the DC modesetting code in amdgpu, we can
> >> >> synchronize multiple crtcs to the same timing when the monitors all
> >> >> support the same mode timing or with monitors that have different
> >> >> timings using variable length blanking periods on freesync capable
> >> >> monitors.
> >> >
> >> > Hi Alex,
> >> >
> >> > that's cool. How does userspace take advantage of that, how do you
> >> > configure KMS/atomic to make use of that? Is it supported through
> >> > legacy KMS (non-atomic) as well?
> >>
> >> the driver automatically syncs all heads that it can at modeset time I think.
> >
> > Ok, but we need strong timing guarantees to be able to use it, just
> > like we have when we have a single CRTC routed to several connectors.
> > Is there such a guarantee that continues not only on initial modeset
> > but through all following flips as well?
> 
> The timing is synchronized so in theory the flips should happen during
> the same blanking period.  I think atomic may be able to guarantee
> that, but while likely I don't think non-atomic can guarantee it.

We've discussed this a bit internally at intel, and we'll probably have to
export a property where userspace can request that 1 crtc is ganged to
another one. atomic_check in the kernel can then make sure that's either
the case and reject the modeset, and if the modeset passes, userspace
knows that the driver will make sure the flips will stay in sync forever.

Without that generic userspace can indeed not make any assumptions, since
different CRTC might have different clock sources and slowly drift.

> >> > Does it involve things like the driver stealing an unused CRTC for each
> >> > additional clone?
> >>
> >> No, there is logic in the gpu to sync the timing of multiple crtcs.
> >> You just need 1 crtc per display.
> >
> > That is a bit awkward for Weston if userspace needs to assign a CRTC
> > per connector and then quess whether all the CRTCs will be gen-locked
> > for good so it needs only a single repaint loop, or not and it needs a
> > repaint loop per CRTC.
> >
> > Is there a way to know for sure whether a set of CRTCs will be
> > gen-locked? Preferably with ATOMIC_TEST_ONLY.
> 
> I don't think so.

yup, doesn't exist yet.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the wayland-devel mailing list