[compiz] AIGLX Support with nVidia 9625 Drivers

David Reveman davidr at novell.com
Tue Sep 26 07:56:58 PDT 2006


On Mon, 2006-09-25 at 18:18 -0700, Soup Laddy wrote:
> Something I've been worried about: I have an nVidia GeForce FX 5500
> card, and I'd been noticing some extreme tearing in XGL when
> rotating/manipulating the cube and moving around windows... a somewhat
> of a fix to that was to start XGL with __GL_SYNC_TO_VBLANK=1 ... but
> that then reduced performance. Is the tearing problem at all resolved
> with Compiz + AIGLX?

Both xgl and aiglx implement indirect GL rendering. Hence all blits and
buffer swaps are done on the server side. If you force the driver to
sync to vblank (e.g. __GL_SYNC_TO_VBLANK), you usually force the server
to block and wait for the vblank. You get horrible performance this way
as this leaves the server very little time to process other X requests.
I have a patch that makes it possible for xgl to do buffer swaps in a
separate thread, hence making sure the main thread that is processing X
requests isn't blocked. However, last time I checked, there were no
drivers that could handle GL drawing from multiple threads to one
drawable properly.

nvidia's new driver with GLX_EXT_tfp, support direct rendering. When
using this driver with direct rendering all blits and buffer swaps are
done on the client side by compiz itself. Blocking and waiting for
vblank in compiz will not stop the server from continuing to process X
requests so there's no performance impact on the server. The compiz code
for doing this is already in head and if you use the new nvidia driver
with direct rendering it should be turned on by default. There's a
sync_to_vblank option which allow you turn it off. Don't use
__GL_SYNC_TO_VBLANK, compiz is using GLX_SGI_video_sync to sync even
partial screen updates to vblank.

-David



More information about the compiz mailing list