From: Gustavo Padovan <gustavo@padovan.org>
To: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
Cc: Gustavo Padovan <gustavo.padovan@collabora.com>,
dri-devel@lists.freedesktop.org
Subject: Re: [RFC v2 0/7] drm: asynchronous atomic plane update
Date: Fri, 28 Apr 2017 11:28:27 -0300 [thread overview]
Message-ID: <20170428142827.GB2507@joana> (raw)
In-Reply-To: <20170428085336.GT30290@intel.com>
2017-04-28 Ville Syrjälä <ville.syrjala@linux.intel.com>:
> On Thu, Apr 27, 2017 at 03:36:50PM -0300, Gustavo Padovan wrote:
> > 2017-04-27 Ville Syrjälä <ville.syrjala@linux.intel.com>:
> >
> > > On Thu, Apr 27, 2017 at 12:15:12PM -0300, Gustavo Padovan wrote:
> > > > From: Gustavo Padovan <gustavo.padovan@collabora.com>
> > > >
> > > > Hi,
> > > >
> > > > Second take of Asynchronous Plane Updates over Atomic. Here I looked
> > > > to msm, vc4 and i915 to identify a common pattern to create atomic helpers
> > > > for async updates. So in patch 1 drm_atomic_async_check() and
> > > > drm_atomic_helper_async_commit() are introduced along with driver's plane hooks:
> > > > ->atomic_async_check() and ->atomic_async_commit().
> > > >
> > > > For now we only support async update for one plane at a time. Also the async
> > > > update can't modify the CRTC so no modesets are allowed.
> > > >
> > > > Then the other patches add support for it in the drivers. I did virtio mostly
> > > > for testing. i915 have been converted and I've been using it without any
> > > > problem. IGT tests seems to be fine, but there are somewhat random failures
> > > > with or without the async update changes. msm and vc4 are only compile-tested.
> > > > So I think this needs more testing
> > > >
> > > > I started IGT changes to test the Atomic IOCTL with the new flag:
> > > >
> > > > https://git.collabora.com/cgit/user/padovan/intel-gpu-tools.git/
> > > >
> > > > v2:
> > > >
> > > > Apart from all comments on v1 one extra change I made was to remove the
> > > > constraint of only updating the plane if the queued state didn't touch
> > > > that plane. I believe it was a too cautious of a change, furthermore this
> > > > constraint was affecting throughput negatively on i915.
> > >
> > > So you're now allowing reordering the updates? As in update A is
> > > scheduled before update B, but update B happens before update A.
> > > That is not a good idea.
> >
> > That is what already happens with legacy cursor updates. They jump ahead
> > the scheduled update and apply the cursor update.
>
> Well, that's clearly a bug then. They are supposed to be able to jump
> ahead of other planes, but not themselves.
Right, maybe I didn't checked this correctly. Removing that was a
mistake, I blame my lack of knowledge of such a big subsystem :)
I'll bring that code back.
>
> I think the real problem is having just one timeline for the entire
> crtc. The proper solution would be to have a timeline for each plane.
>
> > What we propose here
> > is to do this over atomic when DRM_MODE_ATOMIC_ASYNC_UPDATE flag is set.
>
> The cursor thing is a hack. Using it as a guideline for something else
> is not a good idea IMO. Reordering, apart from being totally unexpected
> would also cause all sorts of problems because the hardware state at
> the time of the programming the hardware won't match what you checked
> against in your async check function.
>
> > Async PageFlips should use the same infrastructure in the future.
>
> I don't quite see why you have to build a parallel infrastructure for
> this stuff. If the driver would do things properly then it could just
> as well do this stuff from the normal path as well. So I figured the
> point of all this was just to unify the hacks to one place pretty much.
> Expanding the hacks to some kind of big infrastrucure is not something
> I'd do.
The issue I wanted to solve in the first place was to create a way to
update cursors over the atomic ioctl as fast (or relatively fast) as
the legacy update. Then discussing this with Daniel Vetter he suggested
to solve a bigger problem: add generic async plane update that would
benefit cursors, async PageFlips (vc4 already has it) and VR (but I
don't really know all the needs for VR).
Gustavo
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2017-04-28 14:28 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-27 15:15 [RFC v2 0/7] drm: asynchronous atomic plane update Gustavo Padovan
2017-04-27 15:15 ` [RFC v2 1/7] drm/atomic: initial support for asynchronous " Gustavo Padovan
2017-04-27 15:37 ` Ville Syrjälä
2017-04-27 19:35 ` Gustavo Padovan
2017-04-28 8:57 ` Ville Syrjälä
2017-04-28 14:04 ` Gustavo Padovan
2017-04-27 15:15 ` [RFC v2 2/7] drm/virtio: support async cursor updates Gustavo Padovan
2017-04-27 15:15 ` [RFC v2 3/7] drm/i915: update cursors asynchronously through atomic Gustavo Padovan
2017-04-27 15:41 ` Ville Syrjälä
2017-04-27 19:39 ` Gustavo Padovan
2017-04-28 8:58 ` Ville Syrjälä
2017-04-27 15:15 ` [RFC v2 4/7] drm/i915: remove intel_cursor_plane_funcs Gustavo Padovan
2017-04-27 15:15 ` [RFC v2 5/7] drm/msm: update cursors asynchronously through atomic Gustavo Padovan
2017-04-27 15:15 ` [RFC v2 6/7] drm/msm: remove mdp5_cursor_plane_funcs Gustavo Padovan
2017-04-27 15:15 ` [RFC v2 7/7] drm/vc4: update cursors asynchronously through atomic Gustavo Padovan
2017-04-27 16:10 ` [RFC v2 0/7] drm: asynchronous atomic plane update Ville Syrjälä
2017-04-27 18:36 ` Gustavo Padovan
2017-04-28 8:53 ` Ville Syrjälä
2017-04-28 14:28 ` Gustavo Padovan [this message]
2017-05-09 14:02 ` Ville Syrjälä
2017-05-11 19:29 ` Gustavo Padovan
2017-05-12 9:04 ` Ville Syrjälä
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=20170428142827.GB2507@joana \
--to=gustavo@padovan.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=gustavo.padovan@collabora.com \
--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 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.