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.

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.

FAQ

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 /etc/X11/xorg.conf like this: