From: Daniel Vetter <daniel@ffwll.ch>
To: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
Cc: "dri-devel@lists.freedesktop.org" <dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH 14/17] drm/msm: add atomic support
Date: Wed, 28 May 2014 16:50:28 +0200 [thread overview]
Message-ID: <20140528145028.GW14841@phenom.ffwll.local> (raw)
In-Reply-To: <20140528141421.GT27580@intel.com>
On Wed, May 28, 2014 at 05:14:21PM +0300, Ville Syrjälä wrote:
> On Wed, May 28, 2014 at 03:21:41PM +0200, Daniel Vetter wrote:
> > On Tue, May 27, 2014 at 07:32:46PM -0400, Rob Clark wrote:
> > > On Tue, May 27, 2014 at 6:09 PM, Daniel Vetter <daniel@ffwll.ch> wrote:
> > > > On Tue, May 27, 2014 at 04:06:28PM -0400, Rob Clark wrote:
> > > >> On Tue, May 27, 2014 at 3:26 PM, Daniel Vetter <daniel@ffwll.ch> wrote:
> > > >
> > > > [snip]
> > > >
> > > >> Well, there was the NONBLOCK atomic flag.. I'm not entirely sure if we
> > > >> should hang so much off of that one flag.
> > > >
> > > > Yeah, a separate VBLANK_SYNCED might be useful. Apparently people also
> > > > want non-blocking modesets.
> > >
> > > random-diverging-from-original-topic-thought.. seems like userspace
> > > just wants a deadline/timeout (hopefully in units of vblanks).. at
> > > least to the level of "I want this to happen on the next vblank (after
> > > rendering completes), or give me an error" vs "I want this to complete
> > > atomically even if it takes a few extra vblanks for things to sort
> > > out"..
> > >
> > > I guess that amounts to what you mean by VBLANK_SYNCED flag, but
> > > VBLANKED_SYNCED might not be a good name.. at least for some hw all
> > > you can do is vblank sync'd..
> >
> > Hm, we might as well go full monty and allow userspace to request a
> > specific vblank counter. Would be useful for e.g. queuing up a bunch of
> > video frames, which some hw can do. But that would then require cancelling
> > of existing flips,
>
> The hard part there would be rolling back the user visible state. But
> if we were to disallow it for anything but simple page flips, we could
> rather easily keep the fb pointers around in the structure that tracks
> the progress of the operation.
>
> Otherwise cancelling should be trivial when using mmio instead of the
> cs.
>
> But we could certainly do the target vblank thing without allowing
> multiple queued flips initially, and without a cancel capability.
>
> However using vblank counter is a bit problematic with multiple crtcs.
> But I guess userspace can try to do the something_else->vbl conversion
> itself if it wants to use some other units.
>
> There's also the question whether we should allow a target vbl count for
> each crtc, or just one of them.
>
> We could make it so that you can specify the target vblank count only
> for a single crtc, and the rest of the crtcs will flip soon before or
> soon after. The reason for allowing the "soon before" case is because
> it'll make the implementation much simpler. We just have to perform
> all the register writes somewhere between 'target_vbl-1 - target_vbl'
> of the specified crtc. The order in which the flips actually happen
> then depends on the vblank period and phase of each crtc.
>
> If user space wants target counts for all crtcs, it could issue separate
> nuclear flips for each crtc, although that does raise the issue that we
> can't check the entire target state, so we can't guarantee that all of
> the nuclear flips will succeed. So that's a bit bad.
>
> So I guess we could allow a target vbl count for all the crtcs, just
> need to convey that information inside another array in the ioctl to
> avoid imposing a limit in the number of crtcs. But then there's the
> question what happens if only a subset of the involved crtcs have a
> target count. Return an error? Or just pick one of the crtcs that
> did get a target vblank and flip the rest at the same time? I guess
> the latter option is better to allow one crtc to act as the master
> clock for the whole thing, and the rest just hop along as best they
> can.
I guess if userspace asks for a target count on more than one crtc we'd
reject the request. That leaves a bit a window unfortunately where
userspace partially submitted a request and then the kernel starts to tell
it that it's too late. But then I don't think we can really avoid this
situation without going completely nuts on the implementation side.
So a best effort (maybe with the guarantee that if we're too late it wont
happen so that userspace could try to render the next frame and display
that for smoothness) approach should be good enough here.
Anyway, let's not get too distracted with fancy ideas before we have the
basics ;-)
Cheers, Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
next prev parent reply other threads:[~2014-05-28 14:50 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-24 18:30 [PATCH 00/17] prepare for atomic/nuclear modeset/pageflip Rob Clark
2014-05-24 18:30 ` [PATCH 01/17] drm: fix typo Rob Clark
2014-05-24 18:30 ` [PATCH 02/17] drm: add atomic fxns Rob Clark
2014-05-24 18:30 ` [PATCH 03/17] drm: convert crtc and mode_config to ww_mutex Rob Clark
2014-05-25 22:10 ` Daniel Vetter
2014-05-25 23:16 ` Rob Clark
2014-05-26 8:23 ` Daniel Vetter
2014-05-26 11:56 ` Rob Clark
2014-05-26 14:35 ` Daniel Vetter
2014-05-26 14:36 ` Daniel Vetter
2014-05-26 15:04 ` Rob Clark
2014-05-26 15:07 ` Daniel Vetter
2014-05-26 15:20 ` Rob Clark
2014-05-26 15:35 ` Daniel Vetter
2014-05-26 15:49 ` Rob Clark
2014-05-26 16:09 ` Daniel Vetter
2014-05-24 18:30 ` [PATCH 04/17] drm: add object property type Rob Clark
2014-05-26 8:29 ` Daniel Vetter
2014-05-26 8:33 ` Daniel Vetter
2014-05-26 11:06 ` Rob Clark
2014-05-24 18:30 ` [PATCH 05/17] drm: add signed-range " Rob Clark
2014-05-24 18:30 ` [PATCH 06/17] drm: helpers to find mode objects Rob Clark
2014-05-26 8:37 ` Daniel Vetter
2014-05-26 8:55 ` Daniel Vetter
2014-05-26 11:12 ` Rob Clark
2014-05-24 18:30 ` [PATCH 07/17] drm: split propvals out and blob property support Rob Clark
2014-05-24 18:30 ` [PATCH 08/17] drm: Allow drm_mode_object_find() to look up an object of any type Rob Clark
2014-05-24 18:30 ` [PATCH 09/17] drm: Refactor object property check code Rob Clark
2014-05-24 18:30 ` [PATCH 10/17] drm: allow FB's in drm_mode_object_find Rob Clark
2014-05-26 8:39 ` Daniel Vetter
2014-05-24 18:30 ` [PATCH 11/17] drm: convert plane to properties/state Rob Clark
2014-05-26 9:12 ` Daniel Vetter
2014-05-26 11:32 ` Rob Clark
2014-05-26 14:52 ` Daniel Vetter
2014-05-24 18:30 ` [PATCH 12/17] drm: convert crtc " Rob Clark
2014-05-26 9:31 ` Daniel Vetter
2014-05-26 11:35 ` Rob Clark
2014-05-26 14:56 ` Daniel Vetter
2014-05-26 15:15 ` Rob Clark
2014-05-26 15:23 ` Ville Syrjälä
2014-05-26 15:37 ` Daniel Vetter
2014-05-26 15:42 ` Rob Clark
2014-05-26 15:46 ` Ville Syrjälä
2014-05-26 16:12 ` Daniel Vetter
2014-05-24 18:30 ` [PATCH 13/17] drm: push locking down into restore_fbdev_mode Rob Clark
2014-05-26 9:34 ` Daniel Vetter
2014-05-24 18:30 ` [PATCH 14/17] drm/msm: add atomic support Rob Clark
2014-05-26 17:54 ` Daniel Vetter
2014-05-27 15:58 ` Rob Clark
2014-05-27 17:50 ` Daniel Vetter
2014-05-27 18:48 ` Rob Clark
2014-05-27 19:26 ` Daniel Vetter
2014-05-27 20:06 ` Rob Clark
2014-05-27 22:09 ` Daniel Vetter
2014-05-27 23:32 ` Rob Clark
2014-05-28 13:21 ` Daniel Vetter
2014-05-28 14:14 ` Ville Syrjälä
2014-05-28 14:50 ` Daniel Vetter [this message]
2014-05-28 15:19 ` Rob Clark
2014-05-27 23:47 ` Rob Clark
2014-05-28 13:32 ` Daniel Vetter
2014-05-24 18:30 ` [PATCH 15/17] drm: spiff out FB refcnting traces Rob Clark
2014-05-24 18:30 ` [PATCH 16/17] drm: more conservative locking Rob Clark
2014-05-24 18:30 ` [PATCH 17/17] drm: Fix up the atomic legacy paths so they work Rob Clark
2014-05-26 10:40 ` [PATCH 00/17] prepare for atomic/nuclear modeset/pageflip Daniel Vetter
2014-05-26 12:48 ` Rob Clark
2014-05-26 15:24 ` Daniel Vetter
2014-05-26 16:12 ` Rob Clark
2014-05-26 17:36 ` Daniel Vetter
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=20140528145028.GW14841@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=ville.syrjala@linux.intel.com \
/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