On Wed, Jul 28, 2021 at 6:57 AM Pekka Paalanen <ppaala...@gmail.com> wrote:
>
> On Wed, 28 Jul 2021 15:31:41 +0200
> Christian König <christian.koe...@amd.com> wrote:
>
> > Am 28.07.21 um 15:24 schrieb Michel Dänzer:
> > > On 2021-07-28 3:13 p.m., Christian König wrote:
> > >> Am 28.07.21 um 15:08 schrieb Michel Dänzer:
> > >>> On 2021-07-28 1:36 p.m., Christian König wrote:
>
> > >>>> At least AMD hardware is already capable of flipping frames on GPU 
> > >>>> events like finishing rendering (or uploading etc).
> > >>>>
> > >>>> By waiting in userspace on the CPU before send the frame to the 
> > >>>> hardware you are completely killing of such features.
> > >>>>
> > >>>> For composing use cases that makes sense, but certainly not for full 
> > >>>> screen applications as far as I can see.
> > >>> Even for fullscreen, the current KMS API only allows queuing a single 
> > >>> page flip per CRTC, with no way to cancel or otherwise modify it. 
> > >>> Therefore, a Wayland compositor has to set a deadline for the next 
> > >>> refresh cycle, and when the deadline passes, it has to select the best 
> > >>> buffer available for the fullscreen surface. To make sure the flip will 
> > >>> not miss the next refresh cycle, the compositor has to pick an idle 
> > >>> buffer. If it picks a non-idle buffer, and the pending rendering does 
> > >>> not finish in time for vertical blank, the flip will be delayed by at 
> > >>> least one refresh cycle, which results in visible stuttering.
> > >>>
> > >>> (Until the deadline passes, the Wayland compositor can't even know if a 
> > >>> previously fullscreen surface will still be fullscreen for the next 
> > >>> refresh cycle)
> > >> Well then let's extend the KMS API instead of hacking together 
> > >> workarounds in userspace.
> > > That's indeed a possible solution for the fullscreen / direct scanout 
> > > case.
> > >
> > > Not for the general compositing case though, since a compositor does not 
> > > want to composite multiple output frames per display refresh cycle, so it 
> > > has to make sure the one frame hits the target.
> >
> > Yeah, that's true as well.
> >
> > At least as long as nobody invents a mechanism to do this decision on
> > the GPU instead.
>
> That would mean putting the whole window manager into the GPU.
>

Hmm, seems like we could come up with a way for a shader to figure out
if a fence has signaled or not on the GPU, and then either sample from
the current or previous window surface?

BR,
-R

Reply via email to