hello friends! new(ish)!
Radeon
Radeon is the Linux open-source graphics driver for AMD/ATI Radeon graphics cards that is often replaced by fglrx due to seemingly poor 3D acceleration.
The performance issues are generally caused by generic Xorg profiles which have to cater to a myriad AMD GPUs with a different feature-set and capabilities, forcing them to only enable features that are common to most cards, or none at all (thus, the driver works as is).
Building from source
This guide will attempt to improve 3D acceleration (or outright enable it, if it's disabled) by making use of the new feature-set, namely, DRI3.
Before starting
Check your cards feature-set: https://wiki.freedesktop.org/xorg/RadeonFeature/#index6h2 "Decoder ring for engineering vs marketing names" will tell you what model your card actually is.
Back your xorg.conf up by issuing sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf~
What should I expect?
Run: vblank_mode=0 glxgears & sleep 16 ; killall glxgears
.
Test | GPU | Before | After |
---|---|---|---|
glxgears | r9 280x (gigabyte) | 3258.964 FPS | 19291.922 FPS |
glxgears is a very simple test and it won't give you real world results, but you can use it to test a driver's 3D performance relative to the default one, which normally comes with it disabled out of the box. As you can see here, the results speak for themselves and indicate a performance increase of roughly 560%. For a real-world focused benchmark, scroll down—in CPU bound scenarios you are likely to see performance increases of up to 40%, assuming DRI2 was enabled and you have successfully enabled DRI3.
Requirements & dependencies
`-- media-libs/mesa (>=11.0, preferably -git[1]) `-- x11-libs/libdrm (>=2.4.58, preferably -git[2], since this is the library DRI uses) `-- x11-libs/libpciaccess (>=0.8.0) `-- x11-base/xorg-server (ideally, >=1.17) `-- x11-libs/glamor (>=0.6) `-- virtual/udev `-- x11-proto/fontsproto `-- x11-proto/randrproto `-- x11-proto/renderproto `-- x11-proto/videoproto `-- x11-proto/xextproto `-- x11-proto/xf86driproto `-- x11-proto/xproto `-- sys-devel/automake (>1.15) `-- sys-devel/autoconf (>=2.69) `-- sys-devel/libtool (>=2.4) `-- sys-devel/m4 `-- x11-misc/util-macros (>=1.18) `-- media-fonts/font-util (>=1.2.0) `-- virtual/pkgconfig `-- x11-proto/glproto `-- x11-proto/dri2proto `-- x11-proto/dri3proto `-- x11-proto/xineramaproto
Certain package managers can automatically build the dependency tree for you. However, you ought to double check to make sure the above requirements coincide, in terms of versions.
- Aptitude: run
sudo apt-get build-dep xserver-xorg-video-ati
; - Yum: run
sudo yum-builddep xorg-x11-drv-ati
; - Portage: emerge the actual driver to satisfy all dependencies;
- BUILDPKG (Arch): run
sudo makepkg -s xf86-video-ati
.
Compiling
git clone git://anongit.freedesktop.org/xorg/driver/xf86-video-ati
cd xf86-video-ati
./autogen.sh --prefix=/opt/xorg
make
sudo make install
Afterwards, edit:
/etc/X11/xorg.conf
Section "Files" ModulePath "/opt/xorg/lib/xorg/modules,/usr/lib/xorg/modules" EndSection
Make sure you have these as well:
Section "Module" Load "dri" Load "dbe" # Double buffer extension // See compatibility on features page Load "glx" # OpenGL X protocol interface // See compatibility on features page Load "extmod" # Misc. required extension // See compatibility on features page EndSection Section "DRI" Group "video" Mode 0666 EndSection
Then, edit:
/etc/X11/xorg.conf.d/20-radeon.conf
Section "Device" Identifier "radeonVGA" Driver "radeon" Option "AccelMethod" "Glamor" # See compatibility on features page Option "DRI3" "on" # Compatibility not very well documented, remove it if it fails Option "EnablePageFlip" "on" EndSection
Feel free to run sudo chattr +i /etc/X11/xorg.conf
to keep X from overwriting this (chattr -i
will undo this).
Example xorg.conf: http://pastebin.com/raw/aE3e21Bn
IMPORTANT: Recompiling the driver will become a necessity after each major X upgrade (eg: 1.16 --> 1.17, not 1.16 --> 1.16.4), due to ABI changes.
Testing
To ensure DRI3 is enabled, run cat /var/log/Xorg.0.log | grep -i DRI3
.
Output should be as follows:
[ 14.031] (**) RADEON(0): Option "DRI3" "on" [ 16.723] (**) RADEON(0): DRI3 enabled