Introduction

Several drivers are available for ATI Radeon graphic cards for linux. This article will compare the newest versions (as of October 8, 2003) of them to each other, mostly focused on 3d performance with games. A similar article from July 2003 also exists.

Tested drivers

- The DRI drivers: this is the driver which is included in XFree. Its development is hosted at dri.sourceforge.net, for this comparison a cvs checkout from the 8th of October 2003 was used - XFree 4.3 contains a version of this driver which is quite a bit older. XFree86 4.4 should be pretty close to this checkout, at least as far as features are concerned (feature freeze for XFree86 4.4 is 15 October 2003 according to the release plan). It is open-source and supports all graphic cards which are based on R100 and R200 (including the derivatives RV100, RV200, RV250, RV280), that is card models Radeon 7000-9200. It (currently) does not support the integrated graphics of the ATI IGP chipsets, but patches for that are available and should be merged to the cvs trunk soon (though it isn't sure yet if XFree86 4.4 will have IGP 3d support included). Newer cards (based on R300 and up chips) such as the 9700 are not supported (at least no 3d acceleration, basic 2d operation is supported). This driver will also run on non-x86 and some non-linux platforms, though it looks like there might be some problems with ia64 and x86-64 platforms currently.
- xig summit Accelerated-X: strictly speaking, this is not only a driver, but a commercial replacement for the XFree86 X Server. For this comparison a demo version of the Desktop DX Platinum Edition version 2.2-13 was used. According to the xig website, it is fully functional except it will only run for 25 minutes. xig summit Accelerated-X Servers are also available for different platforms, but the demos are restricted to x86 and Linux or Solaris. It supports about the same cards as the dri driver (i.e. no 9500 and up cards).
- ATI's fglrx driver: this is the driver provided from ATI for XFree86. The version used was 3.2.8. It only runs on Linux/x86 systems. In contrast to the two other drivers it does not support cards based on the R100 (or derivatives from it) chips, but instead supports the newer cards based on the R300 chips. So it supports all Radeons with a model number of at least 8500 (and of course it also supports the FireGL cards, for which it was initially intended), though excluding the PCI based cards.

System Setup

Hardware:
CPU Athlon XP 1600
Board Asus A7V133 1.05.
Chipset KT133A
Ram 1GB (2x512MB) PC133-222 Sdram
HD 120GB Seagate Barracuda ATA V
Graphic Card HIS Excalibur Radeon 9000pro 64MB

OS:
SuSE Linux 8.1, updated to XFree 4.3 and KDE 3.1.3, Kernel (self-compiled) 2.4.22
for comparison Windows 2000 SP4

graphic drivers:
ATI X4.3.0-3.2.8
XiG Summit Accelerated-X DX Platinum 2.2-13
DRI cvs from 8th October 2003
(for windows) Catalyst 3.8

software used for benchmarking:
x11perf together with Xmark (included in the SuSE XFree86 4.3 package)
SpecViewperf 7.1
Quake III Arena 1.32
Return to Castle Wolfenstein 1.41
Unreal Tournament (4.51)
Unreal Tournament 2003 Demo (version 2206)
Neverwinter Nights/Shadows of Undrentide 1.32
The dri and xig summit driver were set to use AGP 4x mode, fastwrites off (switching them on caused hard lockups). ATI's driver seemed to use AGP 4x mode and fastwrites on interestingly. Windows used AGP 4x mode with fast writes off as well. Additionally, the "EnablePageFlip" option was used for the dri driver, and agpsize was adjusted to 56MB for the XiG summit driver (using the default results in massive performance degradation in some of the SpecViewperf ugs tests). All tests were run from within a normal X session (1280x1024x24 virtual screen resolution) with KDE 3.1 (including artsd) running. The summit driver and the windows catalyst driver were set to not convert 32bit textures to 16bit (the dri driver doesn't do it, don't know what ati's linux driver does). The desktop screen size was set to 1280x1024x24 at 85Hz, the fullscreen game resolutions were set to 85Hz too.

Driver limitations / General issues

All drivers support 3d acceleration and dual-head at the same time. The dri driver does this with the "MergedFB" option, however it is not yet sure if the XFree86 4.4 release will support it (it's only in the dri cvs for very few days now). However, 3d acceleration is only possible if your total screensize does not exceed 2048x2048 pixels (so, for the traditional left-right arrangement, two times 1024x768 is the maximum - for top-bottom arrangement, you can use two times 1280x1024). Unlike ATI's BigDesktop support in the fglrx driver, you can use two different resolutions. However, testing dual-head capabilities is beyond the scope of this comparison (I don't have two monitors to test it anyway). ATI's driver should work with dual-head, however it's restricted to 2048*2048 pixels just as well on the R200 based cards (and 2560x2560 with R300 based cards). I don't know if the xig summit driver suffers from the same limitation.
All 3 drivers were installed in parallel which wasn't much of a problem, it is only necessary to change the symlink to the libGL.so library and changing the XF86Config file or change the symlink to the X binary. Each one of the three drivers has its own kernel module (radeon.o for the dri driver, xsvc.o for xig summit, fglrx.o for the ATI driver), loading the ATI or xig kernel module will of course the tainted flag to be set. Regardless of that, the kernel modules all seemed to behave reasonably well, no kernel panics etc. were noted. However, changing the X Server / kernel module without rebooting (terminate the X session, unload the kernel module, change the symlinks / XF86Config file, insert the appropriate kernel module and restart X) more often than not resulted in a GPU/X lockup (but the kernel was still alive).
Both the dri driver and the driver from ATI suffered from some visible "snow" in the picture when the physical resolution was 1280x1024. For this to happen it didn't matter if the 3d size was 1280x1024 or smaller, so a 800x600 QuakeIII running in a window with the physical resolution still 1280x1024 also suffered from that. Basically it looks like not all values could be read from the frame-buffer for displaying or something like that (it looked a bit similar to what happens when you overclock the graphic card memory too much under windows). This problem is reported also with other radeon cards. In theory, this bug might give a slight unfair advantage in benchmarks (as the gpu doesn't have to wait for memory accesses as long as it should). The bug is now fixed (in both XFree86 cvs as well as DRI cvs), but after 8th October 2003, so the version used in this comparison does not contain that fix. Since the fix was done by ATI, there is some hope it will get included in their own driver as well...
ATI's driver and the xig summit driver failed to automatically calculate the dpi of the monitor (which is possible by using the DDC/EDID data from the monitor which contains the physical screen resolution in millimeters), but it was possible to manually configure this.
The xig summit driver does not support some XFree86 specific extensions, most notably the VidMode extension used to change resolutions. It has however its own extension for resolution switching (XiG Miscellaneous Extension, xme). libSDL can use this extension too, so all games using libSDL shouldn't have a problem if you have a libSDL with compiled-in support for xme (this is even true for old games such as Unreal Tournament, you just have to delete the game-supplied libSDL). From the games used in this comparison, NWN, UT and UT2k3 used libSDL (and thus had no problems changing resolutions), but Quake III and RTCW do not and don't support xme (so no resolution switching and no fullscreen mode available).


next page