[Intel-gfx] [RFC] DRI2 swapbuffers

Jesse Barnes jbarnes at virtuousgeek.org
Wed Apr 15 00:16:33 CEST 2009

Here's an updated patchset for the DRI2 swapbuffers code.  There are
still some outstanding issues, but I made some changes to the
interfaces and refreshed the patches against more recent X server and
Mesa bits.

The main open issue at this point is how to handle getting the new
buffers.  The current code has the DRI2SwapBuffers request return the
new set, and uses a new setBuffers callback internally to Mesa to
update the render buffers.  Kristian thought we might be able to use
getBuffers instead, after invalidating the current drawables, but I
still haven't figured out a good way to do that.

There are also some bugs left unfixed here:
  - X server should fall back internally to CopyRegion if the swap
    fails to avoid extra round trips
  - 2D driver loses track of the front buffer in some cases (e.g.
    starting glsync -sb -w 1024 -h 600 on my 1024x600 screen under
    compiz leads to corruption)
  - 2D driver rotation handling isn't correct (though I hope we can
    replace the rotation stuff with a flip in the KMS case, since that
    will prevent tearing)
  - kernel driver still races between updating the front buffer and
    adding the object to the completion list, should be easy to fix
That's all I'm aware of however.  It works really nicely in the simple
case now, and I've changed the ioctl to be KMS-only.  It now just
takes a CRTC id and an FB id, and does all the lookup & pin handling
in the kernel. 

Jesse Barnes, Intel Open Source Technology Center

More information about the Intel-gfx mailing list