ATI Graphics

From SlackWiki
Revision as of 02:58, 2 June 2009 by Erik (talk | contribs) (Copy from old)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Introduction

ATI drivers come in two flavours:

1) X.Org open source 'radeon' driver - full support (accelerated 2D and 3D) for the Radeon 9200 and earlier. (Also supported for the 9200 - X850 for Slackware -current, or any Slackware newer than 11.0)

2) ATI's proprietary closed source 'fglrx' driver - support for the 9500 and above (all support for earlier cards has now been dropped). This is the only driver with any support, either 2D or 3D, for the X1xxx series of cards (R500 and newer).

Kernel

AGPGART: If you have an AGP card, you should ensure AGPGART and support for your specific GART are built in the kernel (built in or module is fine)

PCI Express: If you have a PCI Express card, you should ensure PCI Express support is built in the kernel.

Seting up the 'radeon' driver

Preparing Your System

Kernel

Direct Rendering Manager (DRM): Module or built in, plus the module under this for "ATI Radeon"

Initial Setup

Edit /etc/X11/xorg.conf

In Section "Module" add:

Load "glx"
Load "dri"

At the end of the file, add

Section "DRI"
  Mode 0666
EndSection

(Or use 'Xorg -configure' to generate a new xorg.conf to autodetect the ATi card)

Tweaking

To increase performance for Radeon users (in particular, R300 and R400), you may also want to add the following under the "Device" section for the radeon:

AGP users

Option "AGPMode" "8" # Modify accordingly if you don't have an AGP 8x card 
Option "AGPFastWrite" "true" # This one has big warnings all over it, so test it first! 

Mobility card users

Option "DynamicClocks" "true" # The equivalent of ATi's PowerPlay 
Option "BIOSHotkeys" "true" # You _might_ need this for some special function keys on your laptop 

All users

Option "EnablePageFlip" "true" 
Option "ColorTiling" "true" 

Final Check

Run 'glxinfo | grep render'. It will return something like the following (the last line will vary depending on R300/ R400, PCI/ PCIE or AGP, etc). The important thing is that this reports "direct rendering: yes".

direct rendering: Yes
OpenGL renderer string: Mesa DRI R300 20060815 AGP 8x x86/MMX+/3DNow!+/SSE TCL

Notes

R300 - R400:

Please note that these cards do not have accelerated hardware support in X.Org < 6.9 (i.e. Slackware 11.0 or older)

R500 (X1xxx and above)

Sorry, there is no open source accelerated support in X for these cards. Either use fglrx or vesa.

Setting up the 'fglrx' driver

Preparing Your System

Libraries

The fglrx driver requires that you have the package cxxlibs installed on your system to build it.

(Slamd64): You will also need the 32 bit compatibility libraries from c/

Kernel

Direct Rendering Manager (DRM): Must *not* be built into the kernel - it should be a module (and not loaded) or not built.

Frame Buffer: Must *not* be built into the kernel - it should be a module or not built (it is not compatible with the current fglrx drivers).

Installing the Driver

You will need to download the 'ATI Driver Installer' package (the RPM packages do not have support for X.Org 6.9).

Once you have downloaded the installer, run it (I reccommend using sudo, as you need root permissions but also need access to the X server. You could use xhost+ and then su, but this is not safe).

sudo sh ati-driver-installer-$VERSION-$ARCH.run

You need to select the 'Install driver' (the ATI installer cannot generate a Slackware package), and then it is reccommended you choose "automatic" on the next screen. The driver will now install itself.

Make sure that you mount tmpfs for 3D acceleration, or you can get unexpected results.

ie:

'FGLTexMgr: open of shared memory object failed (Function not implemented)
__FGLTexMgrCreateObject: __FGLTexMgrSHMmalloc failed!!!
fglX11AllocateManagedSurface: __FGLTexMgrCreateObject failed!!'

Add the following to /etc/fstab:

tmpfs     /dev/shm           tmpfs        defaults            0 0

then 'mount /dev/shm' on a console

Patching the Driver

If you are running the latest kernel, more often than not you will need to patch the fglrx driver. At the very least, you will need to manually rebuild it if you change your kernel - follow instruction 1 if necessary, then 2 and 3.

There is no central repository of these, so it is not possible to point you to a specific place to check for them (although the Unofficial ATI Bugzilla or Rage3D Linux Drivers forum are good places to check).

Once you have downloaded the patches:

1. Apply them in /lib/modules/fglrx (or /lib/modules/fglrx/build_mod)

cd /lib/modules/fglrx/build_mod
cat somepatch.diff | patch -p1

2. Rebuild the fglrx module

sh /lib/modules/fglrx/build_mod/make.sh

N.B. Modules built are kernel specific - you can only build a module for the kernel you are currently running.

3. Install the module

sh /lib/modules/fglrx/make_install.sh

Configuring the X server

If you have not installed the fglrx driver before, run:

aticonfig --initial --input=/etc/X11/xorg.conf
aticonfig --ovt=Xv

This will add an fglrx 'Section "Device"' to /etc/X11/xorg.conf and enable video overlay (enables video playback)

Edit /etc/X11/xorg.conf (you need to do this with root permissions)

Find:

1) A 'Section "Device"' that contains fglrx 2) 'Section "Screen"'

Then:

1) Under the Section "Device" that contains fglrx
1A). Make a note of the value of "Indentifier"

2) Under Section "Screen", replace the value of "Device" with the value you just noted from fglrx

At the end of /etc/X11/xorg.conf, add this section (This allows all users to access the direct rendering mode - without it, you can't use acceleration as a user):

Section "DRI"
       Mode         0666
EndSection

Restart the X server

Final Check

To check that fglrx has been installed and setup correctly, run 'fglrxinfo' in a terminal under X. It should return something like:

display: :0.0  screen: 0
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: MOBILITY RADEON X700 Generic
OpenGL version string: 2.0.5642 (8.22.5)

(The 'renderer' string will vary depending on the chip your card actually has).

Uninstalling the driver

With root permissions, run:

sh /usr/share/fglrx/fglrx-uninstall.sh