[Intel-gfx] [RFC] DRI2 swapbuffers (yes yet again)

Jesse Barnes jbarnes at virtuousgeek.org
Thu Apr 30 18:01:50 CEST 2009


On Thu, 30 Apr 2009 17:48:08 +0200
Michel Dänzer <michel at daenzer.net> wrote:

> On Thu, 2009-04-30 at 08:39 -0700, Jesse Barnes wrote:
> > On Thu, 30 Apr 2009 08:08:36 +0200
> > Michel Dänzer <michel at daenzer.net> wrote:
> > 
> > > On Wed, 2009-04-29 at 18:02 -0700, Jesse Barnes wrote:
> > > > On Wed, 29 Apr 2009 15:09:33 -0700
> > > > Jesse Barnes <jbarnes at virtuousgeek.org> wrote:
> > > > > I'm still working through mutlihead issues on the kernel
> > > > > side; the flip waits should wait for *both* vblank events
> > > > > before completing the flip.  But other than that, I'm pretty
> > > > > happy with things.
> > > > 
> > > > This incremental set fixes up the multihead handling and adds
> > > > swap interval support as a bonus.  It's nice to see flipping &
> > > > no tearing on two heads at once!
> > > 
> > > Is there a mechanism for choosing the CRTC to sync to in ambiguous
> > > cases? E.g. either a driconf option (allowing per application
> > > configuration) or a RandR property (allowing global configuration)
> > > would be nice I think.
> > 
> > The kernel is supposed to handle it and reject flips on disabled
> > CRTCs so I was hoping it wouldn't be necessary.
> 
> That's not an ambiguous case. Ambiguous cases are when parts of the
> window are visible on both CRTCs.

Ah ok, yeah I'd expect that to be up to the 2D driver as well.  The
display manager will get a swapbuffers request for a given drawable,
and it's up to the 2D driver to figure out what to do with it.  If the
buffer spans the whole X screen, this code queues a flip in the kernel
on every CRTC that has that buffer.

If the request is just for a window, the driver could queue blits on
each CRTC separately, or do scanline waits on one or each CRTC during
the copy operation.  But in this code we just punt on anything
non-fullscreen and let CopyRegion handle it (which currently doesn't
sync).  The best solution would probably be to add code to CopyRegion
that looks like what we have in intelWindowMoved, picking the "best"
CRTC to sync on (though maybe with an override option like you suggest).

-- 
Jesse Barnes, Intel Open Source Technology Center



More information about the Intel-gfx mailing list