RenderingProject/aiglx

= Aiglx =

Overview
AIGLX is a project that aims to enable GL-accelerated effects on a standard desktop. We have a lightly modified X server (that includes a couple of extensions), an updated Mesa package that adds some new protocol support and a version of metacity with a composite manager. The end result is that you can use GL effects on your desktop with very few changes, the ability to turn it on and off at will, and you don't have to replace your X server in the process.

This is code that was done entirely upstream in concert with the rest of the X community. Fedora Core 5 was the first distribution that allowed people to try it out as we were the first to include the modular X packages and the right protocol bits in the right places. We have been working hard on the underlying X bits and not too much on the actual rendering effects, but we hope that the rest of the community will help creating interesting and appropriate effects. The point is not to create a finished product at this point, but instead enable a community around it to develop and test it.

We have tested this code on a number of card and driver combinations and we do work on a large number of them. There's a table below that includes a list of what we know works, what we think works and what we know does not work. So look at this list before you try out the code.

Technical Details
AIGLX is 'Accelerated Indirect GL X'.

There are three interesting pieces of technology here:

1. An updated Mesa that includes accelerated indirect rendering. This allows the compositing manager to do GL operations through the server instead of having to push window pixmaps from the COMPOSITE extension down to the client and then back up to the card. 1. A compositing window manager, compiz. It has a few effects implemented, including window minimization, wobbly windows, and drop shadows. During development, this functionality was included in metacity. 1. An updated X server (Xorg 7.1) that contains support for a new extension to improve performance.

All of the above is included in Fedora Core 6.

Demos
Here are a few videos of some of the effects metacity currently does using aiglx.


 * Minimization
 * Another minimization effect
 * Menu Fades

Video card status
Here is the current status as far as we know. We also intend to release driver updates in the yum repository as we get those cards to work. If your card isn't supported, come back later to see if we've added support.

Note that this support status only affects new functionality; everything should work as well as it did before with the compositing manager disabled.

Success and failure updates to this page are welcome.

Refer to http://www.freesoftwaremagazine.com/node/1797 for a article that has hardware compatibility information.

Known Working

 * ATI: Radeon 7000 through X850 (r100 through r400 generations).
 * Intel: i830 through i945. i810 works, but DRI requires 16 bit depth.
 * nVidia: all cards supported by the driver 1.0-9625 or higher.
 * Matrox: MGA G550 works with current proprietary matrox driver for Xorg 7.0 or unofficial driver from http://matrox.tuxx-home.at for Xorg 7.1.

Occasionally / Possibly working

 * 3dfx: voodoo3 through voodoo5. Might need NV_texture_rectangle emulation.

Known to not work

 * ATI: Rage 128. Looks like driver locking issue.
 * ATI: Mach64. No DRM support in Fedora, still insecure.
 * Matrox: MGA G200 to G550. Needs at least a driver update to fix DRI locking (unofficial mga driver v4.4.2 from http://matrox.tuxx-home.at fixes it).  PCI cards probably have other issues as well.
 * nVidia: No open DRI driver. Closed driver support available with the current drivers 1.0-9625.
 * 3dfx: Voodoo 1 and 2. No DRI driver.
 * ATI: Radeon 8500 through X850 with the closed fglrx driver. Uses an ancient version of the DRI driver API that can't work with the new driver loader.  No ETA on closed driver support.

Most probably everything not mentioned on this page.

Reported not working - Unconfirmed

 * via/s3G. Reported not working by a user known as riyasvk in the #fedora IRC channel more info or confirmation needed.

Unknown status

 * via, s3 savage, sis. No intrinsic reason why these wouldn't work, as far as we know, but no one has tested them yet.

Installing aiglx in Fedora and from source
Fedora Core 6 contains all the bits necessary to use AIGLX. Simply ensure that  is installed and click on System > Preferences > Desktop Effects. Click the Enable Desktop Effects button.

Installing from source is a lot more complicated. There are some instructions to try to help at http://fedoraproject.org/wiki/RenderingProject/AiglxFromCVS.

How does this affect application developers?
In theory, it doesn't. If you use Gtk2 or Qt or cairo or whatever, you still program to the same API and your applications shouldn't be affected. The only people really affected should be people who are writing compositing managers and window managers.

Can I use Xair/Metacity with compositing turned off normally?
That's the idea! These packages just enable some optional functionality. With the gconf key turned off, you're running it in the normal mode.

Do you have other effects coming?
Yes. There's definitely more to come in the pipeline. The first thing we wanted to do was to show that aiglx could be used to accelerate the desktop.

I have a cool screen that's all white with drop shadows? What's up with that?
Chances are that you're running the Xorg server instead of the Xair server. You may also see this if you are trying to run this on a 64-bit architecture. There is currently a bug that prevents things from forking correctly on 64-bit arches.

Will my NVidia card work?
Yes. The Free software 'nv' driver doesn't support 3d acceleration but the Nvidia 1.0-9XXX series proprietary drivers have added support for GLX_EXT_texture_from_pixmap extension in the current beta release 1.0-9625.

How is this different than XGL?
XGL is a different X server. This is a more incremental change that is part of the Xorg 7.1 release. We don't believe that replacing the entire X server is the right path, and that improving it incrementally is a better way to modernize it. After talking to people at xdevconf, it felt like much of the upstream Xorg community shares this view. You can search Adam Jackson's notes for "large work for Xgl" to get the blow-by-blow or nVidia's presentation from XDevConf 2006  on using the existing model.

We've been working on the AIGLX code for a some time with the community, which is in direct contrast with the way that XGL was developed. Although early work on XGL was done in the open, XGL spent the last few months of its development behind closed doors and was dropped on the community as a finished solution. Unfortunately, it wasn't peer reviewed during its development process, and its architecture doesn't sit well with a lot of people. Dave has a thoughtful rebuttal to this here that is worth reading as well.

The other question is Wait, can I use compiz? Yes, Compiz works well with AIGLX. We love compiz and we think it's great stuff and is well polished, but it's often confused with the underlying architecture of XGL. Much like the code that we've added to metacity, compiz is a composite manager. There's an excellent post from Soren on the topic of compiz vs. metacity.

Can I use Compiz with AIGLX ?
Compiz is included with Fedora Core 6 and is the compositing window manager.

What else doesn't work with the composite manager?
Shaped windows and Xvideo are known to not work. Also, running other GL applications may cause flickering or other weird effects.

Luminocity was cool. What happened to luminocity?
Luminocity was a test compositing manager and window manager written using OpenGL. Rather than displaying on the X server that it is managing, it opens an OpenGL window on a separate server. No future work is being done on Luminocity.

What happened to the wobbly windows that you had with luminocity?
They were disabled temporarily. Support for wobbly windows has been re-included in Fedora Core 6.

How can I disable AIGLX and the compositing extension?
You can disable AIGLX and the compositing extension by amending your  like this:

Section "ServerFlags" Option "AIGLX" "off" EndSection

Section "Extensions" Option "Composite" "Disable" EndSection

This can be useful if you do not need or want AIGLX or if X11 behaves strangely (e.g. disabled DRI and thus missing 3D acceleration).