The Open-Source ATI R500 Driver

Written by Michael Larabel in Display Drivers on 19 June 2007 at 10:43 AM EDT. Page 1 of 2. 32 Comments.

Last week the first open-source ATI R500 (Radeon X1000 series) driver had entered the world. This new driver (named the xf86-video-avivo) is very early into development, but a small set of developers have been working on reverse engineering this GPU class for the past couple of months. This driver does not yet contain any 3D functionality or support for features that most end-users expect. At this point, the driver just contains very basic initialization and set video mode support for a portion of the Radeon X1000 family. Even with this very basic R500 driver, we couldn't help but to explore the Avivo driver for the past few days.

For those that have missed our past articles on the R500 status in Linux, up to this point the only real solution with 3D support has been using the fglrx binary blob. However, five developers have been working on reverse engineering the fglrx driver for R500 support for the past couple of months. If you are interested in more on the ATI reverse engineering efforts and open-source drivers, see our ATI R200 Linux Driver Redux and ATI Has Open-Source Drivers Too.

Daniel Stone had mentioned on his blog that it should be "relatively simple" to add 3D support to the open-source Avivo driver, as much of it should be similar to the open-source R300/400 driver. Right now the driver contains support for the Radeon X1300, Radeon X1600, Radeon X1650PRO, and the Radeon X1900GT. However, as we will share in this article, several other R500 parts do work with the current driver available through git and we have submitted a patch for adding some new GPU entries. This open-source Avivo driver is also expected to eventually work with the ATI/AMD R600 series (Radeon HD 2000).

For 2D support right now, the open-source Avivo driver is slower than the VESA driver for the R500 series. According to Jerome Glisse, the main reason for the Avivo driver being slower is due to not lack of backing store, but that should be corrected shortly. RandR 1.2 is supported with the most recent git commit on June 18. Also, support for the Apple MacBook Pro right now with the ATI Mobility Radeon isn't available.

If you have never built an X.Org driver from git, you can head on over to the Phoronix Forums for additional information, but below are the basic steps for installing the Avivo driver on Fedora 7 (assuming you have the standard software libraries and development tools installed).

yum install git libpciaccess-devel xorg-x11-server-sdk
git clone git://anongit.freedesktop.org/git/avivo/xf86-video-avivo
cd xf86-video-avivo/
./autogen.sh --prefix=/usr/
make
su
make install
<edit /etc/X11/xorg.conf so the driver changes from vesa or fglrx to avivo>

At the time of writing the Avivo driver in git contains a limited number of PCI IDs for different Radeon X1000 graphics cards. There are six PCI IDs currently but the patch we have sent along adds support for four additional graphics cards we will mention shortly. If you are experimenting with this driver in its early stages, additional product identification support can be added by modifying the following arrays in xorg/avivo_chipset.c: avivo_device_match[], avivo_chips[], and avivo_pci_chips[]. The switch statement in avivo_get_chipset() also needs to be adjusted accordingly. Finally, in include/avivo_chipset.h add a define statement following the naming convention of PCI_CHIP_<GPU CHIP>_<ID> and defining its value as the PCI ID. Depending upon the situation, you may also need to update the avivo_chip_type value. If you're in need of additional support for modifying the Avivo driver, stop by the Phoronix Forums. Granted, once this driver starts evolving you shouldn't need to worry much about adding new device entries.

Outside of sharing some of the needed information in this article due to the lack of an Avivo Wiki or project page right now, we also have tested out the Avivo driver from git (on June 18, 2007) with several different ATI R500 parts. The graphics cards we had used for this article was an ATI Radeon X1300PRO (RV515), Mobility Radeon X1400 (RV515), Radeon X1800XL (R520), Radeon X1800XT (R520), and Radeon X1950PRO (RV570). Only the X1300PRO contained support in the driver while we had to manually add the support for the other four GPUs. Many of the higher-end Radeon graphics cards (Radeon X1600 to X1950) last week contained initialization problems with the Avivo driver, but we hadn't run into any show-stopping problems with the cards mentioned.


Related Articles