No announcement yet.

Getting Open Source 3D graphics on R6XX/R7XX cards (NO FGLRX)

  • Filter
  • Time
  • Show
Clear All
new posts

  • Getting Open Source 3D graphics on R6XX/R7XX cards (NO FGLRX)


    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

    Arch Linux:

    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:// && cd linux-2.6 && sudo git --global "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:// 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 and for more info. There should be some comments in that file to help you.


    4a.) Restart your computer:

    sudo reboot

    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:// && git clone git://

    6a.) Clone additional git repositories for compiling DDX:

    git clone git:// && cd macros && ./ --prefix=/usr && make && sudo make install && cd ..

    git clone git:// && cd pthread-stubs && ./ --prefix=/usr && make && sudo make install && cd ..

    1b.) dri2proto and glproto

    git clone git:// && cd dri2proto && ./ --prefix=/usr && make && sudo make install && cd ..

    git clone git:// && cd glproto && ./ --prefix=/usr && make && sudo make install && cd ..

    7a.) Now you must compile and install libdrm_radeon:

    git clone git:// && cd drm && ./ --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 && ./ --prefix=/usr && make && sudo make install && cd ..

    For Ubuntu, Debian, Gentoo, and Fedora:

    cd mesa && ./ --prefix=/usr --disable-gallium --with-dri-drivers=r600 && make && sudo make install

    For ArchLinux and Slackware:

    cd mesa && ./ --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/* /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 /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 /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:

    Section "Device"

    Below those comments under that (lines that start with #) you should see the following:

    Driver "radeonhd"

    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!):

    Driver "radeon"

    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
    sudo reboot

    You are now finished.
    Last edited by Neo_The_User; 26 January 2010, 09:57 PM. Reason: changed some stuff again

  • #2
    Thanks for the guide. I'm going to try it on a fresh Sidux install.


    • #3
      I didn't cover Sidux but you can try it. Your welcome.


      • #4
        Also, both radeon and radeonhd will work.


        • #5
          Yes agd5f. You told me that in irc.


          • #6
            I'm trying to do it the Gentoo Way (tm).

            First problem, /usr/lib64/pkgconfig/libdrm.pc has:
            Version: 2.3.1
            and mesa of course says
            Requested 'libdrm >= 2.4.3' but version of libdrm is 2.3.1
            ERROR: media-libs/mesa-9999 failed.
            That can be easily fixed by modifying the version in libdrm.pc by hand. But then mesa complains again, this time with:
            configure: error: state tracker 'dri' doesn't exist
            ERROR: media-libs/mesa-9999 failed.
            Any clue? I have compiled other branches without problems.

            (edit) Ok, sorry, inspecting the ebuild it seems it has a --with-state-trackers=glx,dri,egl line. I assume "dri" is not a state tracker anymore. I'll try without that.
            Last edited by Fran; 05 June 2009, 04:59 PM.


            • #7
              Well I guess you could try merging libdrm master with agd5f's 3D branch. Try giving this a shot (this is just a wild guess)

              git clone git:// && cd drm && git checkout -b r6xx-r7xx-3d origin/r6xx-r7xx-3d && git pull git:// master

              Start following the guide then from step 5a.

              edit: ^Disregard that.

              found a typo in the drm compilation process.
              Last edited by Neo_The_User; 05 June 2009, 05:22 PM.


              • #8
                Originally posted by Fran View Post
                Requested 'libdrm >= 2.4.3' but version of libdrm is 2.3.1
                ERROR: media-libs/mesa-9999 failed.
                (edit) Ok, sorry, inspecting the ebuild it seems it has a --with-state-trackers=glx,dri,egl line. I assume "dri" is not a state tracker anymore. I'll try without that.
                You shouldn't be having any --with-state-trackers variables at all afaik. Libdrm from agd5f's repo should be enough. Be *very* careful that you don't have anything extra in the Mesa configure flags. Be minimal and it should work.


                • #9
                  And is it worth the run ?
                  What is it's status ?


                  • #10
                    I would say, yes. It is worth it. I don't know its status because I've never used it no have I looked into the source code that much. All I know is that if you want bleeding-edge code, this is your route.