Monday, November 19, 2007

The problems with ATI graphics and Ubuntu 7.10

I've had a Sapphire ATI X1950 Pro video card for over 30 days now, and it's crossed my mind more than once to send it back to Newegg and get an nVidia replacement. The greatest annoyance with ATI are the drivers, and considering that this graphics chip (R570) and the card itself have been on the market for over a year, there is essentially no excuse for the continuing problems trying to get the card to do its best either under Windows XP or Linux. That's not to say the card is particularly bad. When it works it works beautifully. But getting it to work is a royal PITA. Trying to get it to work under Linux, either openSUSE 10.3 or Ubuntu 7.10, only adds insult to injury.

I finally got the latest Linux ATI driver (8.42.3) installed, built and running by following (for the most part) specific Gutsy instructions on the Unofficial ATI Linux Driver Wiki. I'd like to make one thing perfectly clear. Do not, I repeat, do not install the default ATI drivers via the restricted repository. In fact, using Synaptic, uninstall linux-restricted-modules-2.6.22.14-generic if they're on the system at all. Completely. Then follow the second half of the instructions linked to above. That was the only way that I could get the latest ATI drivers to work. The problem with this striction is if you have a system that depends upon another 'restricted' driver (such as for wireless networking). I have no helpful suggestion for you there.

One more warning. Steer clear of Envy. It may work for older versions of Ubuntu, but it's nothing but trouble for 7.10. It knows nothing about the latest version of the ATI driver. In the process of foolishly using Envy it corrupted my driver installation. In order to recover I had to re-install the ATI DEB files and re-run the driver build process from the command line before I could get back to a graphical desktop.

After finishing installation and after properly configuring the system I was able to enjoy all the pretty eye Compiz Fusion candy you see on YouTube and other locations. I then started to do some basic OpenGL testing and ran into immediate problems. The example below compares glxgears running without and with Compiz effects.


As you can see there's definitely a problem with OpenGL. Not only with glxgears, but fgl_glxgears, Google Earth, JOGL-based apps (WorldWind Java, for example), even OpenGL-based Ubuntu screen savers such as Skyrocket. Incredible corruption and application instability hits when effects are enabled, and when the screen saver fires up, the whole desktop becomes unstable and literally unusable, requiring [Ctrl][Alt][Backspace] and a re-login to get things back to near-normal.

As you've guessed by now I have effects disabled. I can live without Compiz. The few features I'd really like from Compiz, such as the nice shadowing around the windows, I can really live without if I have to. I've gone to the trouble to install Nodoka from Fedora 8, and that gives me a nice UI, much nicer than what comes stock on Ubuntu. Nodoka 'compensates' for the lack of enabled Compiz effects. Maybe, between now and the release of Ubuntu 8.04, the ATI drivers and the upstream windowing manager will mature further, especially when using advanced ATI graphics boards.

A Proposal

If the Debian/Ubuntu developers are going to continue to insist that the restricted modules system be used, then they should extend it to make it easier to know about alternative drivers, especially latest-and-greatest. A good place to start IMHO would be to add a new keyword to the linux-restricted-modules-common file in /etc/default. For example, consider a new keyword, ALTERNATE_drivername, and how it might be used:
ALTERNATE_FGLRX="/lib/modules/2.6.22-14-generic/misc/fglrx.ko"
In this hypothetical example I've told the restricted module manager where to find my specific driver, and to use it instead of the default in volatile. Yes, it breaks on updates, but it's a start and far simpler than all the fruitless gyrations I've read about in forums and via Google trying to get an alternative driver shoe-horned into the system.

Now before you comment, right now, under Ubuntu 7.10, there is no way to just drop the latest fglrx driver into the volatile folder (/lib/modules/2.6.22-14-generic/volatile) because the volatile folder gets wiped and rebuilt on every reboot. Oh, if it were only that simple. That's why I propose the ALTERNATE_ keyword. Who knows. Maybe somebody will think it's a good idea, too, and act on it.

Update

An older story by Steven J. Vaughan-Nichols, "ATI releases Catalyst 7.10 drivers for Linux desktops", talks about the current driver release and in particular states the the following:
The AIGLX support isn't quite ready for prime time. "We've still have to do a bit more testing before we officially support AIGLX in Catalyst, but in the meantime we wanted to provide the Linux community with a preview, to let everyone know that it is coming soon," said a developer for ATI, headquartered in Markham, Ontario.
They're right about one thing. I don't have the xgl server running, and I'm quite happy for that. And I can attest to the drivers not being "quite ready for prime time." So I guess I'll wait until the next release, which I sincerely hope is before the end of the year. And I can vouch for the performance of the latest drivers. I'm getting the fastest graphic performance under OpenGL I've ever gotten on old europa.