Configuring Radeon R600/R700 devices on Ubuntu Jaunty

Update, 18 Mar 2009: Ubuntu Jaunty Jackalope 9.04 and later now support R600/R700 hardware out of the box. Make sure you update to at least xserver-xorg-video-radeon 1:6.12.1-0ubuntu1, libdrm2 2.4.5-0ubuntu2, and linux-image-generic 2.6.28.11.11. If you have done so, you can stop reading this page now.

Update, 5 Mar 2009: fixed the instructions for the DRM modules. You need to build from the origin/r6xx-r7xx-support branch.

I got a new computer with an ATI Radeon 3450 graphics card (R600 series). Here are the steps I took to configure it on Ubuntu Jaunty Jackalope 9.04 using free software (open source) drivers. The instructions below might also be useful for other Radeon hardware, in particular, R700-series cards.

Happily, Ubuntu 9.04 does drive the 3450 out-of-the-box (it boots into X and is usable, using the free radeon driver). Its performance was, however, kind of poor on my machine. I noticed "wiping" and flickering when scrolling (e.g. in firefox or gnome-terminal) or moving windows around.

Building the development versions of the radeonhd and drm drivers fixed these issues and significantly improved desktop performance. Everything is quite slick-looking now, even while driving a 1900x1080 display. Kudos to the driver developers, and to AMD/ATI for cooperating with driver development. Ubuntu does package radeonhd, so sooner or later, after this code gets released, an out-of-the-box installation will provide this level of performance as well.

For historical reasons there are two free drivers for ATI Radeon devices: radeon and radeonhd. They have approximate feature-parity these days. I used radeonhd because I found instructions for it first. :) Instructions are adapted from these sources: radeonhd r600-r700 instructions, Ubuntu community documentation for RadeonHD. (For your reference, the Radeon feature matrix describes what features are supported on what models.)

Download the build prerequisites:

$ sudo aptitude install git-core build-essential
$ sudo aptitude build-dep xserver-xorg-video-radeonhd

Clone the repos for radeonhd and drm:

$ git clone git://anongit.freedesktop.org/git/xorg/driver/xf86-video-radeonhd
$ git clone git://anongit.freedesktop.org/mesa/drm

Build and install radeonhd:

$ cd xf86-video-radeonhd
$ ./autogen.sh --prefix=/usr
$ make
$ sudo make install
$ cd ..

Build and install the drm modules:

$ cd drm/linux-core
$ git checkout origin/r6xx-r7xx-support
$ make radeon.o drm.o
$ sudo cp radeon.ko /lib/modules/`uname -r`/kernel/drivers/gpu/drm/radeon/
$ sudo cp drm.ko /lib/modules/`uname -r`/kernel/drivers/gpu/drm/

Now we'll configure X to use the new drivers. If you don't have an xorg.conf file with stuff in it, auto-generate one:

# X -configure
# mv /root/xorg.conf.new /etc/X11/xorg.conf

Change the Device section. I modified the Driver line and added the following options:

Section "Device"
    Driver "radeonhd"
    Option "AccelMethod" "exa"
    Option "DRI" "on"
    Option "VideoOverlay" "off"
    Option "OpenGLOverlay" "on"
    Option "TexturedVideo" "off"
    [...]
EndSection

Verify that the DRI module is loaded and that non-root applications can access it:

Section "Module"
    Load  "dri"
    [...]
EndSection

Section "DRI"
    Mode 0666
EndSection

Then reboot your computer. That should do it.

7 comments:

  1. THANKYOU!!!! You have no idea...

    ReplyDelete
  2. NOTE: you have to specify branch for drm as follow:
    >git checkout -b r6xx-r7xx-support origin/r6xx-r7xx-support

    ReplyDelete
  3. Shameless self promotion! I have an updated article on a similar topic, getting DRI2 (including accelerated 3D and kernel mode setting) working for Ubuntu 9.10 Karmic with Radeon R600/R700 chipsets. You can find it at http://turqee.tumblr.com/post/230394871/dri2-for-radeon-r600-r700-chipsets-on-ubuntu-9-10

    ReplyDelete
  4. When you say to do this:
    cd drm/linux-core

    I cannot find linux-core forlder :S
    ¿Can you check this please? I'd be very grateful :)

    ReplyDelete
  5. @Anonymous: linux-core directory has apparently been deleted upstream since I wrote this post. You could back up to an old version, before that change was made (e.g. try "git checkout 89cc"; you can go poking around in "git log" output for other possibilities), and then resume the instructions above.

    There must be some different way of building the required modules now, but I don't know what it is.

    ReplyDelete
  6. Hi Phil, thanks for the answer. I've Ati Radeon HD 4650, and I cannot make it run well in ubuntu. (9.10). I've updated the kernel and used "radeon", and it's running almost perfectly, but some things like the scroll (in the webbrowser) are not running well, can you help me to get this Graphic Card run? :) Thanks!

    ReplyDelete
  7. @Anonymous: sorry. Unfortunately, I don't know any more about getting ATI hardware to work than what I've written above...

    ReplyDelete