JumJum
06-30-2008, 05:24 AM
For the first time since I bought my notebook (over two years ago), I now finally have what I consider a perfect linux install thanks to the r500 support in the xf86-video-ati-drivers.
The biggest advantages over the fglrx driver, when it comes to the r500 cards, are
1. HD video playback using xv without tearing. (Yay!)
2. Smooth Compiz-Fusion with AIGLX.
3. No need to run old kernel versions just because of video driver compatibility!
4. No more proprietary junk in /opt!
Some fglrx driver versions had decent xv, others had decent aiglx support. None of them have worked as well as should be expected.
This is development software which can and probably will mess stuff up for some people. It worked flawlessly for me, but don't try this if you're not willing to spend some time sorting out the quirks.
I started out with a baselayout without X and a vanilla 2.6.26-rc8 with the following config:
CONFIG_AGP=m
CONFIG_AGP_INTEL=m
CONFIG_DRM_RADEON=m
To get all the goodies we want and avoid dependency hell, we need to be running a newer version of xorg than the one in portage. The easiest way to to this is by adding the x11 overlay using layman.
layman -a x11
The git versions of xf86-video-ati and the xorg components and dependencies have to be unmasked by:
1. Adding the following to /etc/portage/package.keywords
#### xorg-server dev
x11-base/xorg-server **
=x11-libs/libpciaccess-0.10.2
=x11-proto/xproto-7.0.13
=x11-proto/inputproto-9999
=x11-apps/xauth-1.0.3
=x11-libs/libX11-9999
=x11-proto/xproto-9999
=x11-libs/libXrender-0.9.4
=x11-proto/renderproto-0.9.3
=x11-proto/xextproto-7.0.3
=x11-misc/xkeyboard-config-1.3
=x11-apps/xinit-1.0.8-r3
=x11-apps/rgb-1.0.3
=media-libs/mesa-9999
=x11-proto/dri2proto-1.1
=x11-libs/libXext-9999
=x11-proto/xextproto-9999
=x11-libs/xtrans-1.2
=x11-libs/libXi-9999
=x11-libs/pixman-0.11.4
=x11-libs/libXfont-1.3.2
=x11-drivers/xf86-video-ati-9999
=x11-drivers/xf86-input-mouse-9999
=x11-drivers/xf86-input-keyboard-9999
=x11-drivers/xf86-input-evdev-9999
=sys-apps/hal-0.5.11-r1
=dev-python/pyxf86config-0.3.34-r1
=app-misc/hal-info-20080310
=x11-proto/xf86driproto-9999
=x11-libs/libxcb-9999
=dev-lang/python-2.5.2-r5
=x11-proto/xcb-proto-9999
####
2. Adding the following to /etc/portage/package.unmask
#### xorg-server dev
=x11-proto/dri2proto-1.1
=x11-libs/pixman-0.11.4
=x11-drivers/xf86-video-ati-9999
=x11-libs/libdrm-9999
=media-libs/mesa-9999
=x11-drivers/xf86-input-keyboard-9999
=x11-base/xorg-server-9999
=x11-proto/xproto-9999
=x11-libs/libXext-9999
=x11-libs/libXi-9999
=x11-proto/xextproto-9999
=x11-drivers/xf86-input-mouse-9999
=x11-drivers/xf86-input-evdev-9999
=x11-libs/libX11-9999
=x11-libs/libXft-9999
=media-libs/fontconfig-9999
=x11-proto/inputproto-9999
=x11-proto/xf86driproto-9999
####
Make sure you have the line VIDEO_CARDS="radeon" in your /etc/make.conf and then install xorg (xf86-video-ati will be pulled in as a dependency)
emerge -av xorg-server
Edit your /etc/X11/xorg.conf to your liking. I'm using
Section "ServerLayout"
Identifier "X.Org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "USB Mouse" "AlwaysCore"
EndSection
Section "Module"
Load "ddc"
Load "vbe"
Load "GLcore"
Load "dbe"
Load "dri"
Load "extmod"
Load "glx"
Load "bitmap"
Load "freetype"
EndSection
Section "ServerFlags"
Option "AllowMouseOpenFail" "true"
Option "IgnoreABI" "on"
Option "AIGLX" "true"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "se"
Option "XkbVariant" ",winkeys,winkeys"
Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll"
EndSection
Section "InputDevice"
Identifier "USB Mouse"
Driver "mouse"
Option "Device" "/dev/input/mice"
Option "SendCoreEvents" "true"
Option "Protocol" "IMPS/2"
Option "ZAxisMapping" "4 5"
Option "Buttons" "5"
EndSection
Section "Monitor"
Identifier "LVDS"
Option "VendorName" "Monitor"
Option "ModelName" "Generic"
Option "DPMS" "true"
EndSection
Section "Device"
Identifier "X1600"
Driver "ati"
Option "AGPMode" "8"
Option "AccelMethod" "EXA"
Option "ColorTiling" "on"
Option "EnablePageFlip" "true"
Option "TripleBuffer" "true"
Option "DMAForXv" "true"
Option "GARTSize" "64"
Option "DynamicClocks" "on"
EndSection
Section "Screen"
Identifier "Screen0"
Device "X1600"
Monitor "LVDS"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
Section "DRI"
Mode 0666
EndSection
Section "Extensions"
Option "Composite" "true"
Option "DAMAGE" "true"
Option "RENDER" "true"
EndSection
Section "Files"
FontPath "/usr/share/fonts/util"
FontPath "/usr/share/fonts/encodings"
FontPath "/usr/share/fonts/misc"
FontPath "/usr/share/fonts/corefonts"
FontPath "/usr/share/fonts/default"
FontPath "/usr/share/fonts/100dpi"
FontPath "/usr/share/fonts/75dpi"
FontPath "/usr/share/fonts/default/ghostscript"
EndSection
Start up X and make sure everything seems to work ok
#dmesg | grep drm
[drm] Initialized drm 1.1.0 20060810
[drm] Initialized radeon 1.29.0 20080528 on minor 0
[drm] Loading R500 Microcode
#glxinfo | grep direct
direct rendering: Yes
#xvinfo | grep Adaptor
Adaptor #0: "Radeon Textured Video"
#grep AIGLX /var/log/Xorg.0.log
(**) Option "AIGLX" "true"
(**) AIGLX enabled
And just like that, two years of frustration come to an end.
To everybody who has ever worked on this driver, thank you, thank you, thank you! :)
The biggest advantages over the fglrx driver, when it comes to the r500 cards, are
1. HD video playback using xv without tearing. (Yay!)
2. Smooth Compiz-Fusion with AIGLX.
3. No need to run old kernel versions just because of video driver compatibility!
4. No more proprietary junk in /opt!
Some fglrx driver versions had decent xv, others had decent aiglx support. None of them have worked as well as should be expected.
This is development software which can and probably will mess stuff up for some people. It worked flawlessly for me, but don't try this if you're not willing to spend some time sorting out the quirks.
I started out with a baselayout without X and a vanilla 2.6.26-rc8 with the following config:
CONFIG_AGP=m
CONFIG_AGP_INTEL=m
CONFIG_DRM_RADEON=m
To get all the goodies we want and avoid dependency hell, we need to be running a newer version of xorg than the one in portage. The easiest way to to this is by adding the x11 overlay using layman.
layman -a x11
The git versions of xf86-video-ati and the xorg components and dependencies have to be unmasked by:
1. Adding the following to /etc/portage/package.keywords
#### xorg-server dev
x11-base/xorg-server **
=x11-libs/libpciaccess-0.10.2
=x11-proto/xproto-7.0.13
=x11-proto/inputproto-9999
=x11-apps/xauth-1.0.3
=x11-libs/libX11-9999
=x11-proto/xproto-9999
=x11-libs/libXrender-0.9.4
=x11-proto/renderproto-0.9.3
=x11-proto/xextproto-7.0.3
=x11-misc/xkeyboard-config-1.3
=x11-apps/xinit-1.0.8-r3
=x11-apps/rgb-1.0.3
=media-libs/mesa-9999
=x11-proto/dri2proto-1.1
=x11-libs/libXext-9999
=x11-proto/xextproto-9999
=x11-libs/xtrans-1.2
=x11-libs/libXi-9999
=x11-libs/pixman-0.11.4
=x11-libs/libXfont-1.3.2
=x11-drivers/xf86-video-ati-9999
=x11-drivers/xf86-input-mouse-9999
=x11-drivers/xf86-input-keyboard-9999
=x11-drivers/xf86-input-evdev-9999
=sys-apps/hal-0.5.11-r1
=dev-python/pyxf86config-0.3.34-r1
=app-misc/hal-info-20080310
=x11-proto/xf86driproto-9999
=x11-libs/libxcb-9999
=dev-lang/python-2.5.2-r5
=x11-proto/xcb-proto-9999
####
2. Adding the following to /etc/portage/package.unmask
#### xorg-server dev
=x11-proto/dri2proto-1.1
=x11-libs/pixman-0.11.4
=x11-drivers/xf86-video-ati-9999
=x11-libs/libdrm-9999
=media-libs/mesa-9999
=x11-drivers/xf86-input-keyboard-9999
=x11-base/xorg-server-9999
=x11-proto/xproto-9999
=x11-libs/libXext-9999
=x11-libs/libXi-9999
=x11-proto/xextproto-9999
=x11-drivers/xf86-input-mouse-9999
=x11-drivers/xf86-input-evdev-9999
=x11-libs/libX11-9999
=x11-libs/libXft-9999
=media-libs/fontconfig-9999
=x11-proto/inputproto-9999
=x11-proto/xf86driproto-9999
####
Make sure you have the line VIDEO_CARDS="radeon" in your /etc/make.conf and then install xorg (xf86-video-ati will be pulled in as a dependency)
emerge -av xorg-server
Edit your /etc/X11/xorg.conf to your liking. I'm using
Section "ServerLayout"
Identifier "X.Org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "USB Mouse" "AlwaysCore"
EndSection
Section "Module"
Load "ddc"
Load "vbe"
Load "GLcore"
Load "dbe"
Load "dri"
Load "extmod"
Load "glx"
Load "bitmap"
Load "freetype"
EndSection
Section "ServerFlags"
Option "AllowMouseOpenFail" "true"
Option "IgnoreABI" "on"
Option "AIGLX" "true"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "se"
Option "XkbVariant" ",winkeys,winkeys"
Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll"
EndSection
Section "InputDevice"
Identifier "USB Mouse"
Driver "mouse"
Option "Device" "/dev/input/mice"
Option "SendCoreEvents" "true"
Option "Protocol" "IMPS/2"
Option "ZAxisMapping" "4 5"
Option "Buttons" "5"
EndSection
Section "Monitor"
Identifier "LVDS"
Option "VendorName" "Monitor"
Option "ModelName" "Generic"
Option "DPMS" "true"
EndSection
Section "Device"
Identifier "X1600"
Driver "ati"
Option "AGPMode" "8"
Option "AccelMethod" "EXA"
Option "ColorTiling" "on"
Option "EnablePageFlip" "true"
Option "TripleBuffer" "true"
Option "DMAForXv" "true"
Option "GARTSize" "64"
Option "DynamicClocks" "on"
EndSection
Section "Screen"
Identifier "Screen0"
Device "X1600"
Monitor "LVDS"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
Section "DRI"
Mode 0666
EndSection
Section "Extensions"
Option "Composite" "true"
Option "DAMAGE" "true"
Option "RENDER" "true"
EndSection
Section "Files"
FontPath "/usr/share/fonts/util"
FontPath "/usr/share/fonts/encodings"
FontPath "/usr/share/fonts/misc"
FontPath "/usr/share/fonts/corefonts"
FontPath "/usr/share/fonts/default"
FontPath "/usr/share/fonts/100dpi"
FontPath "/usr/share/fonts/75dpi"
FontPath "/usr/share/fonts/default/ghostscript"
EndSection
Start up X and make sure everything seems to work ok
#dmesg | grep drm
[drm] Initialized drm 1.1.0 20060810
[drm] Initialized radeon 1.29.0 20080528 on minor 0
[drm] Loading R500 Microcode
#glxinfo | grep direct
direct rendering: Yes
#xvinfo | grep Adaptor
Adaptor #0: "Radeon Textured Video"
#grep AIGLX /var/log/Xorg.0.log
(**) Option "AIGLX" "true"
(**) AIGLX enabled
And just like that, two years of frustration come to an end.
To everybody who has ever worked on this driver, thank you, thank you, thank you! :)