A “what is” guide to 3D desktops - put in a bowl, mix, add chips for topping

A “what is” guide to 3D desktops - put in a bowl, mix, add chips for topping


I’ve been talking about them, complaining about what you CAN’T do, about the troubles with 3D cards... Personally I’m getting a bit lost with all this. So, I’ve decided to compile all the information I could find out about those pesky 3D desktops.

Since last week, comments, accounts from other websites, personal experiments, further readings and general nosiness allowed me to update my article. Still, further comments are welcome.

A “what is” guide to 3D desktops—updated

XGL

Essentially developed by Novell for SuSE and the first “elegant” 3D desktop, it came out with Compiz, a window manager that can replace Gnome’s (and now KDE’s and others) window manager. Allowing desktop rotations, window transparencies and deformations, it is nice-looking, fluid and can run on hardware more than five years old.

In short, if your existing X configuration supports somewhat advanced 3D acceleration and DRI, you can run XGL: it will start your normal X, ask it to draw a single, full-screen OpenGL window in which a simple new X server runs...

The advantage:

It will run (fast) on almost any 4 year-old video hardware, provided it has accelerated 3D (free or otherwise).

It will run on older cards, but don’t expect astonishing performances.

The problems:

Cards that can’t handle outputting video (meaning colour spaces different than xRGB) to a texture will have to use software rendering; it’s slower than video output to a VGA framebuffer, and 3D acceleration for applications require the card to handle several GL contexts.

AIGLX

Championed by Red Hat and NVIDIA (amongst others) this method intends to add 3D acceleration to composite (ie. which can declare any element rendered separately and asks the hardware to assemble it all on screen) X; this was accepted by the Xorg and freedesktop projects, so version 7.1 of Xorg has seen a nice AIGLX extension added. This solves the two main problems XGL encountered: 3D acceleration is still made available to applications, and video output can still make use of existing X extentions like xv.

AIGLX first came with a modified version of Metacity, Gnome’s default window manager. Changes to Metacity are being merged upstream, and its plugins are being homogeneized with Compiz’s.

However, AIGLX requires full compliance with the X ABI version 1.0, the support of GL_EXT_texture_from_pixmap, and DRI support; things that most proprietary drivers don’t support fully as of yet, not even NVIDIA, proponent of the project: DRI doesn’t work with their “legacy” driver (71.84), and GL_EXT_texture_from_pixmap isn’t supported (71.84 and 87.74).

One good comment about both ATI’s and NVIDIA’s drivers though, those were quite quickly updated to support the new X 1.0 ABI.

Meaning that right now, only owners of Intel, some Sis and older ATI hardware (pre-X1xxx) can make use of AIGLX, since those have free, AIGLX-supporting drivers.

The Support

Manu model Xorg 7 Manufacturer’s XGL AIGLX
Intel i810 to i965 2D,3D See Xorg’s Useless Yes
NVIDIA Riva/TnT/Geforce1/2/MX 2D 2D,3D, closed Yes# No
NVIDIA GeForce3/4/FX/6/7 2D 2D,3D, closed Yes## No
ATI Rage128 to Radeon 9200 2D,3D was there one? No No*
ATI Radeon 7000 to Radeon 9200 2D,3D obsolete Useless Yes**
ATI Radeon 9500 to X1850 Experimental 2D,3D Yes Experimental**
Sis 300,540,630,730 2D,3D outdated Useless Yes
Sis 315/550/650/651/740/661/741/760/330 2D none No No

Chips Manufacturers Comparison

(#)These cards require legacy NVIDIA driver (71.84). “MX” relates to both GF2MX and GF4MX, since both are Geforce2-level.

(##)3D applications are accelerated on a Geforce 6 (not tried on others), video is fast from the FX onward.

(*)Card models named Rage (128, Mobility, II, pro etc.) were either Mach64 2D chips with added functionalities (those don’t have a working DRI/DRM and are called with the “ati” driver) or “real” 3D chips (their DRI/DRM module is r128). 3D works with r128, but missing visuals make Compiz unable to load.

(**)Early Radeon (7x00 to 9200) are fully supported by Xorg’s “radeon” driver.

(***)Card models from 9500 to X600 use the R3xx chip family. 3D support is being implemented, and AIGLX is working on R3XX cores (tested 9500, got reports on 9600). R4xx is under heavy development. If the free driver supports 3D, then AIGLX support is practically guaranteed.

“Useless” refers to the fact that there are no working proprietary 3D driver, and that the driver integrated with Xorg is good enough to run AIGLX—which works better than XGL anyway. So while XGL would work, it is of no use except if you use an older version of Xorg or Xfree86.

Cards I could try

NVIDIA

NVIDIA has no worthwhile free driver, so you basically need to use their closed one. Luckily, they have quite nice support.

The NouVeau project has made some progress on a free driver though: right now, they’re adding EXA and DRI/DRM support to the nv driver... They’re doing an extraordinary job with very little data to base themselves on, so if you could help them...

But let’s now see what I discovered:

  • I’ve tried a Riva TNT rev.4 with 16MB of SDRAM. It ran without DRI using legacy NVIDIA driver on a 800x600x32bit driver (16bit didn’t display windows or desktop), at a snail’s pace. More RAM, a higher clocked chip and working NVIDIA DRI support would provide much better results.
  • The Geforce 4 is a ti4200 with 128MB of DDR; it didn’t have accelerated video, but I think 3D acceleration worked for applications. DRI was reported to work.
  • Geforce FX 5200 with 128MB of DDR and Geforce 6600 with 256MB were the more “recent” NVIDIA hardware I tried. Video was stable on both, and 3D worked on the 6600 (Google Earth worked fast).

Conclusion, recent NVIDIA drivers run XGL on basically all cards, but good performance requires recent hardware.

ATI

I don’t have as great a range of ATI hardware as I have NVIDIA; still, here is some information.

  • A Mach64-based Rage Mobility (M1) would load a DRM module (not compiled by default on vanilla kernels), but it would issue a DRI/DRM version mismatch. Courageous folks may get it to work, but...
  • An r128 (Rage128 TVout) card could load AIGLX, but misses visuals 0x23 to 0x32—so compiz won’t load on Rage 128 hardware (maybe once all visuals are implemented in the driver...)
  • No r100 or r200 cards, sorry. However, they are considered fully supported, so my guess is AIGLX works very well on those.
  • A R300 (Radeon 9500) could run AIGLX, and quite well—the driver may need some more licking, but it basically works.

I have nothing more recent at my disposal, so owners of X6xx to X1xxx cards, if you could please give me a status report on those cards, with both the free and closed source driver, on both AIGLX and XGL...

Sis

Only a 750 available to test; there is no 3D support and no DRM module for those cards, so no 3D desktop on it at all. Too bad.

Intel

No hardware to test; a report of AIGLX working slowly on a i810 reached me, and the Fedora website reports good working 830 to 9XX, so it stands to reason to think that AIGLX works well on pretty much all Intel IGPs anyway.

Conclusion

If I get more information, I will update this chart more. I’m currently writing a more complete guide—that I’ll publish in PDF format here—with more in-depth details.

It would be nice to get detailed comments on the hardware you test and report: distribution, proprietary/free driver, chip revision, amount of video RAM, X version, etc.

Personally, I use the latest Mandriva 2007 RC (with Cooker updates) on a spare hard drive that I move from one computer to the other. It uses recent CVS extracts of Mesa, meaning that it supports the widest range available of free 3D drivers. More recent would be Gentoo, but I don’t feel like learning a new distribution for those tests.

Bibliography

Last weeks entry—A glimpse into 3D desktops....

A Gentoo howto.

Release Notes for Xorg 7.1.

ATI driver status.

Fedora notes on AIGLX.

The NouVeau project.

Category: 

Comments

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

I've been using AIGLX on Fedora Core 6 test series now for some time... It performs amazingly well on my laptop's meager 915 shared memory graphics chip.

If you're into the Fedora scene, once FC6 goes final (and right now in the test series), you can enable AIGLX+Compiz from within Gnome via System Menu -> Preferences -> More Preferences -> Desktop Effects. Just click the "Enable Desktop Effects" and enjoy, or file a bug report ;)

Terry Hancock's picture

I'm sorry I don't know the chipset number, but the ATI Radeon 9200 card works pretty well for me. The biggest win with this card is that the free-licensed DRI driver for it works well.

I have an nVidia on one of my machines, but when I went from the 2.4 to the 2.6 Linux kernel, I lost the proprietary binary driver modules, and simply have not had the time or desire to reintegrate closed-source drivers. I'm planning to spend a little money on buying an ATI 9200 that I know will just work out-of-the-box with Debian.

Unfortunately, from what I hear, the later ATI cards are closed and undocumented, which means this will probably be the last ATI model I buy, too. Which leaves something of a vacuum.

I'm hoping that the consumer model of the Open Graphics Project video card will be coming out in a year or so (they are currently gearing up to manufacture the prototype/developer FPGA-based boards, which is promising, but there's still a lot of work remaining on the project). When the ASIC-based card hits the market, I'll probably start using those instead of any of the closed proprietary cards.

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

I think I made a mistake on my array: I mentioned the 9200 in 2 ranges, while it should be in only one.

Basically, 3D works solidly on older Radeon hardware, while Rage is something else: it supports 3D operation, but ALL rage hardware (be it mach64-based or 'pure' Rage128, up to and including models higher than the Rage II and Rage Fury) can't support AIGLX or XGL.

Radeon 7000 to 9200 are based on r100 and r200 cores, which benefited from limited sources released by Ati, thus leading to a very solid free implementation. r300 uses some functionalities from previous generations, and the rest is being reverse-engineered to get a more complete support.

Mitch Meyran's picture

- since I hadn't logged in when submitting the previous post - r300 has gotten VERY solid: I've tried it on a 9500, and many people report very good success with 9500/9700/9800. It should work very well with all the other cards (9600) with the free driver.
A 9800 is a nice card, even by today's standards: it supports fully programmable shaders, it's clocked high enough to roar, and, well, I still haven't found a 3D app on Linux that could saturate it.
If you can find one, go for it - it is a VERY big upgrade over the 9200, which is basically a tweaked and overclocked 8500.
---
A computer is like air conditioning: it becomes useless when you open windows.

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

I have ATI RADEON 200 . I am not able to get the desktop effects enabled

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

I found that compiz was not installed as part of my upgrade to Fedora Core 6. I had to 'yum install compiz' to be able to do System->Preferences->Desktop Effects and enable compiz

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

sounds good!! Did you use xgl and the fglrx drivers or did you use the ati/radeon drivers and AIGLX? If so (with AIGLX), could you tell me, which configuration you used in xorg.conf?

THX a lot! Benedikt

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

Radeon 7000 Mobility with 16Mb on video RAM on my notebook works quite nicely with AIGLX and the open source "radeon" driver. I can run compiz and 3D games. Of course not with T&L as this card does not support that.

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

I have not been using it for long, but it appears that Beryl on X.org 7.1 (AIGLX) with the "ati" open source driver is working well for me.

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

I have an ATI X1300 in a nc6400 HP Laptop and using the ATI/AMD fglrx proprietary driver doesn't allow to get AIGLX and Composite extension :-(

I'm trying to see how to enable the XGL instead of X with AIGLX, but didn't find any way so far.

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

I have an AGP x1300 and no luck for me either usung the ati drivers from their website.

Mitch Meyran's picture

Is your x1300 using shared system memory, turbocache, or its own complete framebuffer?
If it's using turbocache, I think even proprietary drivers can't make 3D work on this card. Either shared RAM or local RAM are required.
fglrx requires you to use XGL and disable Composite.
radeon should work nicely with AIGLX and no options required.
---
A computer is like air conditioning: it becomes useless when you open windows.

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

I have a SiS 661/741/760/761 PCI/AGP VGA Display ... do you know if Compiz/AIGLX will run on this?

Anonymous visitor's picture
Submitted by Anonymous visitor (not verified) on

I have a nc6400 too and I'm using omega drivers but they are unable to display 1440*900 with a 75hz refresh rate for an external LCD monitor.With a 60hz refresh rate the monitor looks too wavy.Any suggestions.

Mitch Meyran's picture

Your problem is more than likely a lousy external DAC - it can only do 60 Hz refresh in ????x900 resolution on the external display. Try resolutions with less lines (like 1280x768) and see if you have a higher refresh rate. If not, you can try configuring your xorg.conf file by hand to force it to output higher refresh rates. It's unlikely to work though.
---
A computer is like air conditioning: it becomes useless when you open windows.

Patrick437858247598345's picture
Submitted by Patrick43785824... (not verified) on

It looks like the "ati" driver is a wrapper to autodetect the card. It seems that the "atimisc" is what gets loaded if your rage128 isn't really a 3D card.

Mitch Meyran's picture

the ati driver, in fact, covers:
mach (mach32/64, and early Rage which were in fact 2D mach with a triangle unit)
r128 (other rage chips)
radeon (r100 to r400).
you can either specify the generic ati driver, or select the one most appropriate to your card's generation.
---
A computer is like air conditioning: it becomes useless when you open windows.

Author information

Mitch Meyran's picture

Biography

Have you ever fixed a computer with a hammer, glue and a soldering iron? Why not? It's fun!