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).