NEW!!!: THIS GETS KERNEL MODESETTING WORKING AS WELL!
This guide will enable 3D acceleration on R6XX/R7XX (HD 2000 - HD 4000 series) graphics cards.
PLEASE NOTE: Do not run this source code on machines with old user space. If you are using Ubuntu 9.04, please check unsupported updates and proposed updates in System > Administration > Software Sources and run "sudo apt-get update && sudo apt-get dist-upgrade" without quotes.
1a.) Obtain the required development tools and programs to compile, install, and fetch the source code:
Ubuntu (9.04) / Debian (sid
sudo apt-get install git-core build-essential dh-make debconf debhelper automake autoconf libstdc++5 libstdc++6 xorg-dev gawk bison cdbs dkms && sudo apt-get build-dep libdrm mesa
emerge -pv git automake autoconf xf86-video-ati mesa libdrm libpthread-stubs x11-proto/dri2proto x11-proto/glproto
sudo pacman -Syyu && sudo pacman -S xorg xf86-video-radeonhd base-devel ati-dri libgl dri2proto glproto
2a.) Obtain kernel source source code (REQUIRED FOR OLD KERNELS WITHOUT KMS CODE AND IF YOU WANT KMS):
cd /usr/src && sudo git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git && cd linux-2.6 && sudo git --global user.name "Neo"
You may replace "Neo" with whatever you like. "John Lennon," "Keanu Reeves," etc.
Pull from drm-radeon-testing for the most bleeding edge code (OPTIONAL):
sudo git pull git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git drm-radeon-testing
Run any of the two commands to start editing the config. make xconfig looks nice but requires qt3 development headers and tools. make menuconfig uses the ncurses / screen interface.
sudo make xconfig
sudo make menuconfig
OPTIONAL: You may make changes to the config file regarding hard drives, firmware, wireless, bluetooth etc. to your preference.
REQUIRED SETTINGS: Under Graphics Support, compile "Lowlevel video output switch controls" INTO (Y) the kernel. "/dev/agpgart (AGP SUPPORT)" should be compiled INTO (Y) the kernel and your chipset (not graphics card) must be compiled INTO (Y) the kernel. Run lspci in a terminal to find out what chipset you have. If you can't tell, compile all the chipsets into the kernel (AGP_INTEL AGP_VIA etc.) Right below /dev/agpgart (AGP SUPPORT) is "Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)" and you want that compiled INTO (Y) the kernel as well along with your graphics card (not chipset) INTO (Y) the kernel which is ATi Radeon. Right below that is "Support for frame buffer devices" and you want that compiled INTO (Y) the kernel. Within that, compile "Enable Firmware EDID" INTO (Y) the kernel. DO NOT COMPILE ANY ATI FRAME BUFFER SUPPORT COMPILED AS A MODULE OR INTO THE KERNEL!!!! Now you must turn on "Staging drivers" which is below HID Devices and USB support and the second option above "Firmware Drivers." Compile "Staging drivers" INTO (Y) the kernel and turn off 'Exclude Staging drivers from being built." Look for "Enable modesetting on radeon by default." It should be the 5th from the bottom. Last, you must compile firmware. You must turn on "CONFIG_FIRMWARE_IN_KERNEL" as this is extremely mandatory.
3a.) Compile the kernel:
sudo make all && sudo make modules_install && sudo make firmware && sudo make firmware_install && sudo make headers_check && sudo make headers_install && sudo make install
If sudo make install (only the last command) does not work:
sudo cp arch/x86/boot/bzImage /boot/vmlinuz-kms
Edit /boot/grub/menu.lst or /boot/grub/grub.cfg (which ever one exists) accordingly. I will not cover editing the file. Sorry. Please visit http://grub.enbug.org/grub.cfg and http://www.gnu.org/software/grub/manual/grub.html for more info. There should be some comments in that file to help you.
PLEASE NOTE: BEFORE RESTARTING, BE SURE TO DISABLE X ON START UP AS YOU S/MAY/WILL HAVE TO INSTALL MESA AND DDX DRIVER IF YOU WANT TO SEE YOUR MOUSE AGAIN!
4a.) Restart your computer:
You may also do "sudo telinit 6" without quotes depending on your preference. "sudo shutdown -r now" without quotes also works.
5a.) Clone all the required git repositories and switch to the required branches:
Radeon DDX driver and mesa:
mkdir devel && cd devel && git clone git://anongit.freedesktop.org/xorg/driver/xf86-video-ati && git clone git://anongit.freedesktop.org/mesa/mesa
6a.) Clone additional git repositories for compiling DDX:
git clone git://anongit.freedesktop.org/xorg/util/macros && cd macros && ./autogen.sh --prefix=/usr && make && sudo make install && cd ..
git clone git://anongit.freedesktop.org/xcb/pthread-stubs && cd pthread-stubs && ./autogen.sh --prefix=/usr && make && sudo make install && cd ..
1b.) dri2proto and glproto
git clone git://anongit.freedesktop.org/xorg/proto/dri2proto && cd dri2proto && ./autogen.sh --prefix=/usr && make && sudo make install && cd ..
git clone git://anongit.freedesktop.org/xorg/proto/glproto && cd glproto && ./autogen.sh --prefix=/usr && make && sudo make install && cd ..
7a.) Now you must compile and install libdrm_radeon:
git clone git://anongit.freedesktop.org/mesa/drm && cd drm && ./autogen.sh --prefix=/usr --enable-radeon-experimental-api && sudo make install && cd ..
So far, if you haven't gotten any errors, please proceed onto compiling the DDX and Mesa
8a.) Compiling radeon DDX:
cd xf86-video-ati && ./autogen.sh --prefix=/usr && make && sudo make install && cd ..
For Ubuntu, Debian, Gentoo, and Fedora:
cd mesa && ./autogen.sh --prefix=/usr --disable-gallium --with-dri-drivers=r600 && make && sudo make install
For ArchLinux and Slackware:
cd mesa && ./autogen.sh --prefix=/usr --with-dri-driverdir=/usr/lib/xorg/modules/dri --with-dri-drivers=r600 --disable-gallium && make && sudo make install
For some linux distributions, this will be needed in addition to get full 3D acceleration (Safe to do this just in case):
sudo mkdir /usr/local/lib/dri && sudo cp lib/*_dri.so /usr/local/lib/dri
10a.) Making your linux distribution use radeon over radeonhd:
You will need to generate an xorg.conf file that does not look very simple, so it is easier to modify:
If on KDE and on Kubuntu, Debian, or Gentoo (write all this down before proceeding on paper preferabbly
sudo /etc/init.d/kdm stop
Log in (If you see a black screen with white text, you're doing great)
sudo Xorg -configure
sudo mv xorg.conf.new /etc/X11/xorg.conf
If on KDE on ArchLinux:
sudo /etc/rc.d/kdm stop
Log in (Black screen blah blah blah)
sudo Xorg -configure
sudo mv xorg.conf.new /etc/X11/xorg.conf
If you are on Xfce, just do the above with your according linux distribution but replace "kdm" with "xdm" WITHOUT QUOTES!
If you are on gnome (Ubuntu by default) with GDM replace "kdm" with "gdm" without quotes.
1c.) Editing the config file:
Replace nano with kwrite, gedit, or whatever your favorite editor is (I perfer nano
sudo nano /etc/X11/xorg.conf
The config file should be relativley big now. Please take your time doing this to avoid problems. Find where the file says:
Below those comments under that (lines that start with #) you should see the following:
Where it says "radeonhd" it might already say "radeon" but if it does not say "radeon" change it now (REQUIRED FOR KMS. RADEONHD WILL NOT WORK WITH KMS!):
Now hit Control O (its not a zero) to overwrite the /etc/X11/xorg.conf file. To exit, press Control X.
If you like to use vi or vim (I _LOVE_ vim) then you need to press, "i" with no quotes, and edit the file accordingly. To write and exit, press Escape (all the way on the top left of your keyboard) and press ":wq" without quotes.
I recommend that you restart your computer now using any of the following commands:
sudo telinit 6
sudo shutdown -r now
You are now finished.