On Wed, 2007-11-28 at 06:19 +0100, Soeren Sandmann wrote:

> - When a client wishes to copy something to the frontbuffer (for
>   whatever reason - glXSwapBuffers(), glCopyPixels(), etc), it uses
>   plain old XCopyArea() with the generated pixmap. The X server is
>   then responsible for any clipping necessary.

Using a plain old XCopyArea will make scheduling this in the kernel
quite a bit harder; if the kernel knows it's doing a swap buffer, then
it can interrupt ongoing rendering and do the copy at higher priority,
precisely when the vblank interrupt lands. Plus, you've just added the
latency of a pair of context switches to the frame update interval.

Also, placing any user-mode code in the middle of the interrupt->blt
logic will occasionally cause tearing on the screen; having the kernel
push the blt just-in-time means we'd have reliable swaps (well, down to
the context switch time in the graphics hardware).

I like the simplicity, and we'll certainly be wanting the
pixmap-from-object API for lots of other fun stuff, but buffer swaps may
still need more magic than we can manage at this point.

I also wonder what the effects of a compositing manager are in this
environment -- ideally, your 'buffer swap' would be just a renaming of
two buffers, and not involve any data copying at all. Keeping all of
that hidden behind an abstract API will let us move from copying the
data to swizzling pointers without breaking existing apps.

-- 
[EMAIL PROTECTED]

Attachment: signature.asc
Description: This is a digitally signed message part

-------------------------------------------------------------------------
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell.  From the desktop to the data center, Linux is going
mainstream.  Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to