Difference between revisions of "AMD Catalyst"

From ArchWiki
Jump to: navigation, search
([catalyst] repository: various improvements)
(Installation: various other improvements)
Line 26: Line 26:
 
== Installation ==
 
== Installation ==
 
{{Warning|
 
{{Warning|
SInce catalyst 12.4 AMD will provide only important updates of it's catalyst driver for Radeon HD < 5xxx graphic cards...
+
Since Catalyst 12.4 AMD will provide only important updates of it's catalyst driver for Radeon HD < 5xxx graphic cards...
  
 
'''All Radeon HD 2xxx 3xxx 4xxx owners''' please switch to the new repository:
 
'''All Radeon HD 2xxx 3xxx 4xxx owners''' please switch to the new repository:
  
 +
[catalyst-hd234k]
 +
<nowiki>Server = http://catalyst.apocalypsus.net/repo/catalyst-hd234k/$arch</nowiki>
  
 +
Alternatively, there's also the {{AUR|catalyst-total-hd234k}} package.}}
  
[catalyst-hd234k]
 
 
<nowiki> Server = </nowiki> http://catalyst.apocalypsus.net/repo/catalyst-hd234k/$arch
 
 
 
There you can find catalyst 12.6 legacy beta driver which will work with your cards.
 
 
On AUR there's catalyst-total-hd234k package with mentioned legacy driver.
 
}}
 
 
{{Note|
 
{{Note|
 
'''Catalyst 12.6 legacy beta news''':
 
'''Catalyst 12.6 legacy beta news''':
  
- '''<nowiki>supports Radeons HD 2xxx 3xxx 4xxx ONLY</nowiki>'''
+
- '''<nowiki>supports Radeon HD 2xxx 3xxx 4xxx ONLY</nowiki>'''.
 
+
- supports 3.4 kernel;
+
  
- supports xorg-server 1.12
+
- supports 3.4 kernel.
  
- it includes OpenCL binaries for the SDK;
+
- supports xorg-server 1.12.
  
}}
+
- it includes OpenCL binaries for the SDK.}}
  
 
{{Note|
 
{{Note|
 
'''Catalyst 12.6 stable news''':
 
'''Catalyst 12.6 stable news''':
  
- '''<nowiki>supports Radeons HD >= 5xxx</nowiki>'''
+
- '''<nowiki>supports Radeon HD >= 5xxx</nowiki>'''.
  
- supports 3.4 kernel (through patches);
+
- supports 3.4 kernel (through patches).
  
- supports xorg-server 1.12
+
- supports xorg-server 1.12.
  
- it includes OpenCL binaries for the SDK;
+
- it includes OpenCL binaries for the SDK.
  
- GNOME3 support does look good;
+
- GNOME3 support looks good.
  
- KDE's direct rendering does work without tearing;
+
- KDE's direct rendering works without tearing.}}
}}
+
  
  

Revision as of 15:26, 12 September 2012

Summary help replacing me
An overview of ATI's proprietary Linux "Catalyst" video card driver.
Related
ATI
Intel
NVIDIA
Xorg
Resources
cchtml.com - Unofficial Wiki for the ATI Linux Driver
Unofficial ATI Linux Driver Bugzilla

Owners of ATI/AMD video cards have a choice between ATI's proprietary driver (catalystAUR) and the open source driver (xf86-video-ati). This article covers the proprietary driver.

ATI's Linux driver package fglrx (FireGL and Radeon X) is now known as Catalyst to fall in line with the naming scheme of the Windows driver. Only the package name has changed, while the kernel module retains its original fglrx.ko filename. Therefore, any mention of fglrx below is specifically in reference to the kernel module, not the package.

Catalyst was once a precompiled package offered by Arch in the [extra] repository, but as of March 2009, official Arch support has been dropped because of dissatisfaction with the quality and speed of development.

Compared to the open source driver, Catalyst performs worse in 2D graphics, but has a better support for 3D rendering. Supported devices are ATI/AMD Radeon video cards with chipset R600 and newer (as of Catalyst 9.4). See this table, or the Xorg "Decoder ring", to translate model names (X1900, HD4850) to/from chip names (R580, RV770 respectively).

Contents

Installation

Warning:

Since Catalyst 12.4 AMD will provide only important updates of it's catalyst driver for Radeon HD < 5xxx graphic cards...

All Radeon HD 2xxx 3xxx 4xxx owners please switch to the new repository:

[catalyst-hd234k]
Server = http://catalyst.apocalypsus.net/repo/catalyst-hd234k/$arch
Alternatively, there's also the catalyst-total-hd234kAUR package.
Note:

Catalyst 12.6 legacy beta news:

- supports Radeon HD 2xxx 3xxx 4xxx ONLY.

- supports 3.4 kernel.

- supports xorg-server 1.12.

- it includes OpenCL binaries for the SDK.
Note:

Catalyst 12.6 stable news:

- supports Radeon HD >= 5xxx.

- supports 3.4 kernel (through patches).

- supports xorg-server 1.12.

- it includes OpenCL binaries for the SDK.

- GNOME3 support looks good.

- KDE's direct rendering works without tearing.


Almost[*] all catalyst's packages mentioned below (like catalyst-utils) are available on AUR (read Installing from AUR for more details) and on unofficial [catalyst] repository.

To install AMD's fglrx driver for the linux package, you need to install either catalyst (driver for stock kernel) + catalyst-utils (required libraries/utilities) packages or catalyst-total package.

[*]catalyst-total is available only on AUR, as it was designed to be the fastest way of building catalyst drivers for AUR users

If you are using x86_64 architecture and want 32-bit OpenGL support - install lib32-catalyst-utils, just make sure that you did uncomment [multilib] repository in /etc/pacman.conf before installing this package - note: if you are using catalyst-total then you do not need this package.

Please note that there are some additional packages which can be useful, every one of them can replace catalyst package and provide fglrx modules for multiple kernels installed on your system, these packages are:

- catalyst-generator - able to generate fglrx modules packed into pacman's packages - most secure and KISS-compatible package in this side-note, althought it has to be operated manually;

- catalyst-hook - mkinitcpio' hook which will automatically update fglrx modules with every kernel's update;

- catalyst-daemon - that delivers 'automatic update of fglrx modules with every kernel's update' functionality done by init script.

You will find more details about those packages in Tools section.

Note: If pacman asks you about removing libgl - you may safely say "Y"

After installing you need to ensure xorg.conf is created and/or configured before rebooting.

If you are using x86_64 architecture and want 32-bit OpenGL support - install AUR's lib32-catalyst-utils, just make sure that you have uncommented [multilib] repository in /etc/pacman.conf. Note: if you are using catalyst-total then you do not need this package.

Note: With every Catalyst update you should remove amdpcsdb file in this way: stop your X/DE, remove /etc/ati/amdpcsdb, start your X/DE, and then run amdcccle - otherwise you may experience bad catalyst's versioning in amdcccle.
Warning:
  • Make sure that you own a R6xx (HD2xxx) or newer card or the driver won't be enabled. You will encounter an error if you try to enable your display using Catalyst and a card older than the R6xx series.
  • It appears that Catalyst 9.10-10.11 does not support nForce4 motherboard chipsets.
Warning: Whether or not you install catalyst package from AUR, you will have to reinstall/update fglrx every time the kernel is updated. Otherwise, X will fail to start. Please remember that you can alway use catalyst-hook or catalyst-daemon package which will perform automatic fglrx update - read this section for more details

If you need more information on catalyst, visit this thread.

Installing from AUR

Addresses of AUR packages mentioned on the top of Installation section:

Custom Kernels

Note: catalyst-generator is able to build catalyst-{kernver} packages for you so you do not actually need to perform all those steps manually, although this section should stay because it can be useful

To install catalyst for a custom kernel, you'll need to build your own catalyst-$kernel package.

If you are at all uncomfortable or inexperienced making packages, read up the ABS wiki page first so things go smoothly.

Obtaining PKGBUILD

Obtain the PKGBUILD and catalyst.install files from AUR.

Editing the PKGBUILD and Building

Three changes need to be made here: 1. Change:pkgname=catalyst to pkgname=catalyst-KERNEL_NAME where KERNEL_NAME is whatever you want (e.g. custom, mm, themostawesomekernelever)

2. Remove linux from the dependencies list.

3. Build and install the package. (makepkg -i or makepkg followed by pacman -U pkgname.pkg.tar.gz)

Note: If you run multiple kernels, then install catalyst module packages for all kernels. They won't conflict with one another.

Unofficial repositories

There are some unofficial repositories containing the newest (or older) catalyst packages along with the appropriate libs and software in order to use the driver. If you want to know what packages are inside any given repository you need to first add repository to pacman.conf, perform pacman -Sy command and then list repository with pacman -Sl command:

# pacman -Sl catalyst

[catalyst] repository

It contains newest stable catalyst driver and some additional packages. This repository should always work with the stock kernel from [core] and it is updated most frequently.

To use it:

1.) Edit /etc/pacman.conf and add these lines above all other repositories (even above [core] and [extra]):

[catalyst]
Server = http://catalyst.apocalypsus.net/repo/catalyst/$arch

2.) Update with:

# pacman -Syu

3.) Install catalyst:

# pacman -S catalyst catalyst-utils

Note: If you are updating from catalyst =< 10.8 steps 2 and 3 look like this:

# pacman -Sy
# pacman -Rdd catalyst
# pacman -S catalyst catalyst-utils

4.) Don't forget to set up your /etc/X11/xorg.conf. Use aticonfig --initial, if it doesn't exist.

5.) Reboot.

For x86_64 users, the lib32-catalyst-utils package is needed to run 32-bit OpenGL applications and Wine games.

Repository also contains xvba-video package so you may easily use video acceleration described below, plus catalyst-daemon, catalyst-hook and catalyst-generator packages.

[catalyst] repository contains xorg-server-catalyst-maximize-fix package. This package is fixing problems with maximizing/resizing, use it mainly if you have disabled ATi 2D Acceleration Architecture. To remove xorg-server and install xorg-server-catalyst-maximize-fix just type:

# pacman -Rdd xorg-server xorg-server-common
# pacman -S xorg-server-catalyst-maximize-fix

Archived repositories

There are some archived repositories placed in http://catalyst.apocalypsus.net/repo/catalyst or http://catalyst.apocalypsus.net/repo/catalyst-hd234k, please browse this site and look for files with *.db extension, if you have found interesting catalyst repository tell pacman to use it. For catalyst-hd234k-12.4 pacman.conf entry looks like:

[catalyst-hd234k-12.4]
Server = http://catalyst.apocalypsus.net/repo/catalyst-hd234k/$arch

You can also view archive catalyst PKGBUILDs and use them to build catalyst package which fit your needs, you can find it inside tar.gz archives here.

Xorg-server repositories

[xorg111]

catalyst < 12.6 isn't supporting xorg-server 1.12, that's why this repo appeared.

To use this repo you need to edit /etc/pacman.conf and add those lines above all other repositories:

[xorg111]
Server = http://catalyst.apocalypsus.net/repo/xorg111/$arch

[xorg110]

This repository contains xorg-server packages of 1.10 line - catalyst driver in version < 11.11 was not supporting xorg-server 1.11.

To use this repo you need to edit /etc/pacman.conf and add those lines above all other repositories:

[xorg110]
Server = http://catalyst.apocalypsus.net/repo/xorg110/$arch

[xorg19]

Catalyst <= 11.3 isn't supporting xorg-server >= 1.10 (checked also with IgnoreAbi flag) - that's the reason why [xorg19] repo with xserver 1.9 and some additional packages arrived.

To use it you need edit /etc/pacman.conf and add those lines above all other repositories:

[xorg19]
Server = http://catalyst.apocalypsus.net/repo/xorg19/$arch

[xorg18]

Catalyst < 10.10 isn't working with xorg-server >= 1.9 (checked also with IgnoreAbi flag). To use it you need edit /etc/pacman.conf and add those lines above all other repositories:

[xorg18]
Server = http://catalyst.apocalypsus.net/repo/xorg18/$arch

[xorg17]

Supported since catalyst 10.4

[xorg17] repository contains xserver 1.7 packages, use it only if you are experiencing problems with newer xservers.

Repository contains xorg-server-backclear (patched with backclear patch) and xorg-server-1.7-catalyst-maximize-fix (patched with fedora patch) packages. Both this patches fix problems with maximizing/resizing but they are doing it in different way - you may choose which patched xserver is best for you. To remove xorg-server and install xorg-server-backclear just type:

# pacman -Rdd xorg-server
# pacman -S xorg-server-backclear

Similar with xorg-server-1.7-catalyst-maximize-fix

To use [xorg17] repo please put those lines at the top of all other repositories in /etc/pacman.conf:

[xorg17]
Server = http://catalyst.apocalypsus.net/repo/xorg17/$arch

[xorg16]

[xorg16] repository contains xserver 1.6 packages, use it only if you are experiencing problems with newer xservers.

[xorg16]
Server = http://catalyst.apocalypsus.net/repo/xorg16/$arch

Tools

catalyst-generator

catalyst-generator is a package able to build and install fglrx modules packed into nice catalyst-{kernver} pacman's packages.

It creates catalyst-{kernver} packages using makepkg and installs them with pacman. {kernver} is the kernel version for which each package was built (e.g. catalyst-2.6.35-ARCH package was built for 2.6.35-ARCH kernel).

To build and install catalyst-{kernver} package for booted kernel as an unprivileged user (safer way) type this: catalyst_build_module You will be asked for root's password to proceed to package installation. It is important to run this command after installing catalyst-generator.

This package doesn't support auto re-compilation functionality so after kernel updates you will have to manually update catalyst-{kernver} package. Do it in this way (without rebooting):

1.) As root:

# catalyst_build_module remove

This will remove all unused catalyst-{kernver} packages

2.) As unprivileged user:

# catalyst_build_module new_kernel_version

Where new_kernel_version is a version of kernel which you just updated/installed. e.g.:

catalyst_build_module 2.6.36-ARCH

or:

catalyst_build_module all

which will built catalyst-{kernver} packages for all kernels.

If you want to remove catalyst-generator - it's best to run this as root before removing catalyst-generator:

catalyst_build_module remove_all

(This will remove all catalyst-{kernver} packages from the system.)

catalyst-generator isn't able to remove all those catalyst-{kernver} packages automatically while being removed because there can not be more than one instance of pacman running. If you forget to type `catalyst_build_module remove_all` before typing `pacman -R catalyst-generator` - catalyst-generator will tell you which catalyst-{kernver} packages you will have to remove after removing catalyst-generator.

Note: If you see those warnings:

WARNING: Package contains reference to $srcdir

WARNING: '.pkg' is not a valid archive extension.

while building catalyst-{kernver} package - do not be concerned, it's normal.

Automatic re-compilation of fglrx module with every kernel update

Note: Here catalyst_build_module script is working on fglrx modules files, not on pacman's packages.

Most of catalyst_build_module script options mentioned in catalyst-generator section is supported, type catalyst_build_module help to check which ones exactly.

Since catalyst 10.9 that funcionality has been removed from catalyst package mainly because of this and that.

Still it can be very useful if you are using more than one stock kernel, or you do not like to rebuild catalyst package with every kernel update. Known mkinitcpio's hook functionality has been moved to AUR's catalyst-hook.

Also there is a new package able to provide similar functionality called catalyst-daemon.

Please note that those packages provides only re-building scripts and source files needed to build fglrx module, and they depend on catalyst-utils package.

Auto re-compilation is enabled by default after installing selected package, if you want to turn it off just run this command as root:

# catalyst_build_module autooff

You can also turn it on with:

# catalyst_build_module auto

catalyst_build_module is storing all informations about compilling/installig fglrx module in log file placed in /var/log/catalys-install.log. But you do not need to remember it, you will be informed about that fact whenever installation fails.

catalyst-hook

In catalyst-hook 'automatic re-compilation' functionality is done by a fglrx hook on mkinitcpio with combination of forcing to update package linux-headers in first place.

The hook will call catalyst_build_module command to update fglrx module for the version of your new kernel, and additionally it will call catalyst_build_module remove command to remove unneeded flgrx module(s).

Note: If you are using this functionality it's important to look at the installation process of linux (or any other kernel) package. fglrx hook will tell you is everything all right.
Note: If your custom kernel is using some non-standard mkinitcpio configuration file (ie. linux-zen is using /etc/mkinitcpio-zen.conf) you'll have to manually add fglrx to HOOKS array so it can be auto-recompiled with kernel's update.
Note: If you aren't using stock linux at all and still wanna use auto recompilation you should remove linux-headers from SyncFirst list of /etc/pacman.conf after running 'catalyst_build_module auto'.
catalyst-daemon

In catalyst-daemon 'automatic re-compilation' functionality is done by init script called autofglrx which runs with every system boot and checks if kernel was updated. If kernel was updated - it's rebuilding fglrx module. If kernel wasn't updated - it's loading previously built fglrx module (this whole operation is taking only 20ms on 2.4 GHz CPU).

Autofglrx's check function is comparing built time of just booted kernel (provided by `uname -v`) with built time of a kernel for which fglrx module was built. It's able to do such a comparison because it adds `uname -v` information to the fglrx module's description while module's compilation.

While rebuilding autofglrx will call 'catalyst_build_module' to build a module and 'catalyst_build_module remove' to remove unneeded, older fglrx module.

It doesn't remain in memory.

Note: While installation autofglrx is added into beginning of DAEMONS array of /etc/rc.conf file. You may replace it, but be sure to add it before your DM/X, and do NOT add monkey (@) to it because it must NOT be started in background.
Note: If you are using own compilation flags and got problems with a daemon - please add those flags into /usr/bin/catalyst_build_module file.

Official ATI/AMD Installer

Warning: Using the installer from ati.com/amd.com is NOT recommended for inexperienced users! It may cause file conflicts and X failures. You must be familiar with booting to the command-line if you wish to attempt this.
Note: If you have attempted a manual install from the official installer, and cannot recover your desktop: # /usr/share/ati/fglrx-uninstall.sh

1.) Download the installer from AMD or elsewhere (whereas *-* will be the version): ati-driver-installer-*-*-x86.x86_64.run

2.) Make sure it's executable: # chmod +x ati-driver*

3.) Ensure you're using a basic video driver like vesa, and remove conflicting drivers (i.e. xf86-video-ati, radeon) with pacman and from /etc/rc.conf

4.) Symlink /usr/src/linux to /usr/src/{kernelsource}. 64-bit users also symlink/usr/lib64 to /usr/lib.

5.) Be sure to have your build environment setup: # pacman -Syu base-devel linux-headers

6.) As root: # ./ati-driver-installer-*-*-x86.86_64.run (Files will extract to a temporary folder and scripts will run...)

Assuming nothing went horribly wrong...

7.) Check /usr/share/ati/fglrx-install.log for issues. There should also be a /lib/modules/fglrx/make.{ker_version}.log

Note: If you modify the make scripts, save to a different filename. Otherwise uninstall will not complete successfully.

8.) Finally, try # aticonfig As of Catalyst 11.7, it still assumes /etc/X11/xorg.conf should exist.

Note: If you want to adhere to the new xorg.conf.d: Append your aticonfig string with --output so that you can adapt the Device section to /etc/X11/xorg.conf.d/20-radeon.conf The drawback of this is that many aticonfig options rely on an xorg.conf, and thus will be unavailable.

Configuration

Before reboot

There are three things to check in Arch before rebooting, otherwise X may fail to load:

Xorg configuration

AMD provides the aticonfig tool to create/modify xorg.conf file. It also can configure virtually every aspect of the card for it also accesses the amdpcsdb file. For a complete list of aticonfig options, run:

# aticonfig --help | less
Warning: Use the --output option before committing to /etc/X11 as an xorg.conf file will override anything in /etc/X11/xorg.conf.d

Simple examples from aticonfig:

      1. Setting up fglrx for the first time.
           Single head :    aticonfig --initial --input=/etc/X11/xorg.conf
           Dual head   :    aticonfig --initial=dual-head --screen-layout=above
                            This command will generate a dual head configuration
                            file with the second screen located above the first
                            screen.

If you do not already have an xorg.conf file, you can compare the generated file to one of the Sample Xorg.conf examples listed on the Xorg page.

Although most options are now automatically detected in current Xorg, you may want to specify some in case the defaults change between versions.

Here is an example(with notes) for reference. Entries with '#' should be required, add entries with '##' as needed:

Section "ServerLayout"
        Identifier     "Arch"
        Screen      0  "Screen0" 0 0          # 0's are necessary.
EndSection
Section "Module"
        Load ...
        ...
EndSection
Section "Monitor"
        Identifier   "Monitor0"
        ...
EndSection
Section "Device"
        Identifier  "Card0"
        Driver      "fglrx"                         # Essential.
        BusID       "PCI:1:0:0"                     # Recommended if autodetect fails.
        Option      "OpenGLOverlay" "0"             ##
        Option      "XAANoOffscreenPixmaps" "false" ##
        Option      "UseInternalAGPGart"    "no"    ## Deprecated since Catalyst 8.24.18/
        Option      "KernelModuleParm"  "agplock=0" ## as AGP GART support was removed
EndSection
Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth    24
        SubSection "Display"
                Viewport   0 0
                Depth     24                        # Should not change from '24'
                Modes "1280x1024" "2048x1536"       ## 1st value=default resolution, 2nd=maximum.
                Virtual 1664 1200                   ## (x+64, y) to workaround potential OGL rect. artifacts/
        EndSubSection                               ## fixed in Catalyst 9.8
EndSection
Section "DRI"
        Mode 0666                                   # May help enable direct rendering.
EndSection

Module loading

If you are still using Arch initscripts, edit /etc/rc.conf by:

  • Removing radeon from the MODULES array
  • Adding fglrx to MODULES appears to be optional if added instead to /etc/mkinitcpio.conf (boot image would be rebuilt before reboot).

If you are using systemd:

  • remove or comment out radeon if it occurs in any file under /etc/modules-load.d/
  • Either add fglrx on a new line of an existing module file located under /etc/modules-load.d/, or create a new file and add fglrx.

In either case, you may need to blacklist radeon in /etc/modprobe.d/modprobe.conf if blacklist-fglrx.conf does not exist.

Note: If you are using an AGP card instead of PCI Express add the agp module as well

Disable mode setting

Disabling kernel mode setting is important, as the driver doesn't appear to take advantage of KMS yet. If you do not deactivate KMS, your system might freeze when trying to switch to a tty or even when shutting down via your DE.

For Grub legacy, edit menu.lst by adding nomodeset to the kernel parameters. For example:

kernel /boot/vmlinuz-linux root=/dev/sda1 ro nomodeset

For Grub2, edit /etc/default/grub and add nomodeset to the kernel parameter options, e.g.

GRUB_CMDLINE_LINUX="nomodeset"

Then run, as root;

# grub-mkconfig -o /boot/grub/grub.cfg


Reboot!

Checking operation

Assuming reboot to your login was successful, otherwise #Troubleshooting. Commands to check that fglrx is up and running:

lsmod | grep fglrx
fglrxinfo   

Finally, run Xorg with startx or by using GDM/KDM and verify that direct rendering is enabled by running the following command in a terminal:

$ glxinfo | grep direct

If it says "direct rendering: yes" then you're good to go! If the glxinfo command is not found, you may need to install the mesa-demos package as well.

Warning: In recent versions of Xorg, the paths of libs are changed. So, sometimes libGL.so cannot be correctly loaded even if it's installed. Check this if your GL is not working. Please read "Troubleshooting" section for details.

Double Screen (Dual Head / Dual Screen / Xinerama)

Introduction

First of all: you have to know, it does not exist one single solution because each needs and configurations are different. That's why you have to adapt the step below to your own needs. It is possible that you have to try more than once. Therefore, you MUST save your working /etc/X11/xorg.conf BEFORE you start any change and you must be able to recover from tty.
  • In this part, we will describe the installation of 2 differend sized screens on only one graphic cad with 2 different output ports (DVI + HDMI) using a "BIG Desktop" configuration.
  • The Xinerama solution has some inconveniences, especially because it is not compatible with XrandR. For that very reason, you should not use this solution, because XrandR is just a must for our later configuration.
  • The Dual Head solution would allow you to have 2 different sessions (one for each screen). It could be your wish but you will not be able to move windows from one screen to another. If you have only one screen, you will have to define the mouse inside your xorg for the 2 sessions inside the Server Layout section.

ATI Documentation

ATI Catalyst Control Center

The GUI tool shiped by ATI is very useful and we will try to use it as much as we can. To launch it, open a terminal and use the following command line:

amdcccle
Note: Of course, you have to adapt if you are using GNOME or any other DM.
Warning: Do NOT use sudo directly with a gui. Sudo gives you admin rights with user account information. Kdesu gives you admin rights with root privileges & variables.

Installation

Here, it is easy but important : make sure that your hardware is plugged in correctly, power is on, and that you know your hardware caracteristics (screen dimensions, sizes, refresment rates ...) Normally, both screens are recognize during boot time but not necessarly identified properly, especially if you are not using any xorg base configuration file but instead relying on the hot-plugging feature.

The first step is to make sure they will be recognized by your DE / xorg. For this, you need to generate a basic xorg file for your 2 screens :

aticonfig --initial --desktop-setup=horizontal --overlay-on=1

or

aticonfig --initial=dual-head --screen-layout=left
Note: overlay is important because it allows you to have 1 pixel (or more) shared between the 2 screens.
Tip: For the different possible & available options, do not hesitate to type aticonfig inside a terminal to display all available command lines.

Normally, you have now a basic file that you can now edit to add your screen resolutions. It is important to precise the working resolution especially if you have screens of different sizes. To be added insithe the "Screen" section:

SubSection "Display"
Depth 24
Modes "1200x800"
EndSubSection

Well, from now on, instead of editing the xorg.conf file manually, let us use the ATI gui tool. Reboot X to be sure that your 2 screens are well supported and that the resolution are well recognized. (Screens must be independant).

Configuration

Here, you only have to launch the ATI control center with root privileges, go inside the display menu and choose how you would like to set your configuration (small arrow of the drop down menu). A last reboot of X and you will be done !

Before you reboot, do not hesitate to verify your new xorg.conf file. At this stage, inside the "Display" sub-section of the "Screen" section, you should see a "Virtual" command line, of which the resolution should be the sum of both screens. The "Server Layout" section says all the rest.

Features

Video acceleration

Video Acceleration API (VA API) is an open source software library ("libVA") and API specification which enables and provides access to graphics hardware (GPU) acceleration for video processing on Linux and UNIX based operating systems. The main motivation for VA API is to enable hardware accelerated video decode at various entry-points (VLD, IDCT, Motion Compensation, deblocking) for the prevailing coding standards today (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/WMV3).

In November 2009, VA-API gained a new proprietary xvba-video backend which allows VA-API powered applications to take advantage of AMD Radeon's UVD2 chipsets via the XvBA (X-Video Bitstream Acceleration API designed by AMD) library.

XvBA support and xvba-video is still under development, however in nowadays it is working very well in most cases and with mplayer (and mplayer front-ends), so feel free to check it. You have to build xvba-video package and install mplayer-vaapi (available in community repository) & libva (available in extra repository) packages. Then just set your video player to use vaapi:gl as video output.

Ie. for mplayer:

$ mplayer -vo vaapi:gl movie.avi

Ie. for smplayer:

Options -> Preferences -> General -> Video (tab) -> Output driver: User Defined : vaapi:gl
Options -> Preferences -> General -> Video (tab) -> Double buffering on
Options -> Preferences -> Advanced -> Options for MPlayer -> Options: -vo vaapi
Options -> Preferences -> General -> General -> Screenshots -> Turn screenshots off
Options -> Preferences -> Performance -> Threads for decoding (Set your CPU(s) number)
Note: If Tear Free Desktop is enabled it's better to use
Options -> Preferences -> General -> Video (tab) -> Output driver: vaapi
Note: If Video Output vaapi:gl isn't working - please check
vaapi, vaapi:gl2 or simply xv(0 - AMD Radeon AVIVO Video).

Ie. for vlc:

Tools -> Preferences -> Input & Codecs -> Use GPU acceleration

Don't forget to enable v-sync in amdcccle:

3D -> More Settings -> Wait for vertical refresh = Always On

Note: If you are using compiz/kwin please note that the only way to avoid video flickering is to watch videos in full-screen, and only when Unredirect Fullscreen is off.

In compiz you need to set Redirected Direct Rendering in General Options of ccsm. If its still flickering try to disable this option in ccsm.

Its off by default in kwin, but if you see flickering try to turn option "Suspend desktop effects for fullscreen windows" on or off in System Settings -> Desktop Effects -> Advanced.

Tear Free Rendering

Presented in Catalyst 11.1 'Tear Free Desktop' feature reduces tearing in 2D, 3D and video applications. This likely adds triple-buffering and v-sync. Please note that it requires additional GPU processing.

To enable 'Tear Free Desktop' run amdcccle and go to: [Display Options] -> [Tear Free]

or as root run:

  aticonfig --set-pcs-u32=DDX,EnableTearFreeDesktop,1

To disable use amdcccle or as root run:

  aticonfig --del-pcs-key=DDX,EnableTearFreeDesktop

GPU/Mem frequency, Temperature, Fan speed, Overclocking utilities

You can get GPU/Mem clocks with: $ aticonfig --od-getclocks

Fan speed:$ aticonfig --pplib-cmd "get fanspeed 0"

Temperature:$ aticonfig --odgt

To overclock/underclock it's easier to use some GUI software, like ATi Overclocking Utility, which is very simple and requires qt to work.

i686 version is available here while x86_64 - here. Just download it and run.

Other, more complex utility to perform such operations is AMDOverdriveCtrl. It's homepage is here, you can get arch package from AUR or from [catalyst] repository.

Troubleshooting

If you can still boot to command-line, then the problem probably lies in xorg.conf

You can parse the whole /var/log/Xorg.0.log or

grep '(EE)' /var/log/Xorg.0.log
grep '(WW)' /var/log/Xorg.0.log

For clues.

Problems with video colours

You may still use vaapi:gl to avoid video flickering, but without video acceleration

Run mplayer without -vo vaapi switch.

For smplayer remove -vo vaapi from Options -> Preferences -> Advanced -> Options for MPlayer -> Options: -vo vaapi

Plus for smplayer you may now safely turn screenshots on.

KWin and composite

You may use XRender if the rendering with OpenGL is slow. However, XRender might also be slower than OpenGL depending on your card. XRender also solves artifact issues in some cases.

Black screen with complete lockups / hangs after reboot or startx

Ensure you have added the nomodeset option to the kernel options line in your bootloader (see end of #Configuration).

Faulty ACPI hardware calls

It is possible that fglrx doesn't cooperate well with the system's ACPI hardware calls, so it autodisables itself and there is no screen output.

So try to run this:

  aticonfig --acpi-services=off

KDM disappears after logout

If you are running Catalyst proprietary driver and you get a console (tty1) instead of the expected KDM greeting when you log out, you must instruct KDM to restart the X server after each logout:

$ sudo nano /usr/share/config/kdm/kdmrc

Uncomment the following line under the section titled [X-:*-Core]:

TerminateServer=True

KDM should now appear when you log out of KDE.

Direct Rendering does not work

This problem may occur when using the proprietary catalyst driver.

Warning: This error would also appear if you have not rebooted your system after the installation or upgrade of catalyst. The system needs to load the fglrx.ko module in order to make the driver work.

If you have problem with direct rendering, run:

   $ LIBGL_DEBUG=verbose glxinfo > /dev/null

at the command prompt. At the very start of the output, it'll usually give you a nice error message saying why you do not have direct rendering.

Common errors, and their solutions, are:

   libGL error: XF86DRIQueryDirectRenderingCapable returned false
  • Ensure that you are loading the correct agp modules for your AGP chipset before you load the fglrx kernel module. To determine which agp modules you'll need, run hwdetect --show-agp, then ensure that all modules listed from that command are in the MODULES= array in rc.conf, before fglrx.
   libGL error: failed to open DRM: Operation not permitted
   libGL error: reverting to (slow) indirect rendering
   libGL: OpenDriver: trying /usr/lib/xorg/modules/dri//fglrx_dri.so
   libGL error: dlopen /usr/lib/xorg/modules/dri//fglrx_dri.so failed
   (/usr/lib/xorg/modules/dri//fglrx_dri.so: cannot open shared object file: No such file or directory)
   libGL error: unable to find driver: fglrx_dri.so
  • Something has not been installed correctly. If the paths in the error message are /usr/X11R6/lib/modules/dri/fglrx_dri.so, then ensure you've logged completely out of your system, then back in. If you're using a graphical login manager (gdm, kdm, xdm), ensure that /etc/profile is sourced every time you log in. This is usually accomplished by adding source /etc/profile into ~/.xsession or ~/.xinitrc, but may vary between login managers.
  • If the paths above in your error message are /usr/lib/xorg/modules/dri/fglrx_dri.so, then something has not been correctly installed. Try reinstalling the catalyst package.

Errors such as:

   fglrx: libGL version undetermined - OpenGL module is using glapi fallback

could be caused by having multiple versions of libGL.so on your system. Run:

   $ sudo updatedb
   $ locate libGL.so

This should return the following output:

   $ locate libGL.so
   /usr/lib/libGL.so
   /usr/lib/libGL.so.1
   /usr/lib/libGL.so.1.2
   $

These are the only three libGL.so files you should have on your system. If you have any more (e.g. /usr/X11R6/lib/libGL.so.1.2), then remove them. This should fix your problem.

You might not get any error to indicate that this is a problem. If you are using X11R7, make sure you do not have these files on your system:

   /usr/X11R6/lib/libGL.so.1.2
   /usr/X11R6/lib/libGL.so.1

Hibernate/Sleep Issues

Video fails to resume from suspend2ram

ATI's proprietary catalyst driver cannot resume from suspend if the framebuffer is enabled. To disable the framebuffer, add vga=0 to your kernel options in /boot/grub/menu.lst, for example:

kernel /vmlinuz-linux root=/dev/sda3 resume=/dev/sda2 ro quiet vga=0

System Freezes/Hard locks

  • The radeonfb framebuffer drivers have been known in the past to cause problems of this nature. If your kernel has radeonfb support compiled in, you may want to try a different kernel and see if this helps.
  • If you experience system freezes when exiting your DE (shut down, suspend, switching to tty etc.) you probably forgot to deactivate KMS. (See above)

Hardware Conflicts

Radeon cards used in conjunction with some versions of the nForce3 chipset (e.g. nForce 3 250Gb) won't have 3D acceleration. Currently the cause of this issue is unknown, but some sources indicate that it may be possible to get acceleration with this combination of hardware by booting Windows with the drivers from nVIDIA and then rebooting the system. This can be verified by issuing in a root console the following command:

    dmesg | grep agp

If you get something similar to this (using an nForce3-based system)

    agpgart: Detected AGP bridge 0
    agpgart: Setting up Nforce3 AGP.
    agpgart: aperture base > 4G

and also if issuing this command...

     tail -n 100 /var/log/Xorg.0.log | grep agp

...gets something similar to:

     (EE) fglrx(0): [agp] unable to acquire AGP, error "xf86_ENODEV"

Then you have this bug.

Some sources indicate that in some situations, downgrading the motherboard BIOS may help, but this cannot be verified in all cases. Also, a bad BIOS downgrade can render your hardware useless, so beware.

See bug http://bugzilla.kernel.org/show_bug.cgi?id=6350 for more information and a potential fix.

Temporary hangs when playing video

This problem may occur when using the proprietary Catalyst.

If you experience temporary hangs lasting from a few seconds to several minutes occuring randomly during playback with mplayer, check /var/log/messages.log for output like:

Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160
Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160
Nov 28 18:31:56 pandemonium [<f8bc628c>] ? ip_firegl_ioctl+0x1c/0x30 [fglrx]
Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160
Nov 28 18:31:56 pandemonium [<c0197038>] ? vfs_ioctl+0x78/0x90
Nov 28 18:31:56 pandemonium [<c01970b7>] ? do_vfs_ioctl+0x67/0x2f0
Nov 28 18:31:56 pandemonium [<c01973a6>] ? sys_ioctl+0x66/0x70
Nov 28 18:31:56 pandemonium [<c0103ef3>] ? sysenter_do_call+0x12/0x33
Nov 28 18:31:56 pandemonium [<c01c64a6>] ? proc_get_sb+0xc6/0x160
Nov 28 18:31:56 pandemonium =======================

Adding the nopat kerneloption to /boot/grub/menu.lst and rebooting fixed the problem at least for me.

Catalyst 10.6/10.7/10.8/10.9 : black/grey/white boxes/artifacts in firefox/thunderbird

With catalyst 10.6 AMD/ATi announced a new method of 2D acceleration for radeons, unfortunately this step causes bugs for some users. To turn on old (slower xaa) method of 2d rendering please kill your desktop environment and Xserver and type this command as root:

aticonfig --set-pcs-str=DDX,ForceXAA,TRUE

Now you'll probably need patched xorg-server to fix problems with resizing/maximizing windows, read about it ie. here.

Also see this post if the above doesn't work for you.

"aticonfig: No supported adaptaters detected"

If when running

#sudo aticonfig --initial

you get

aticonfig: No supported adaptaters detected

But you do have an AMD GPU (or APU), it may still be possible to get catalyst working by manually setting the device in your your xorg.conf file.

You can do so by setting the device setion of /etc/X11/xorg.conf to

Section "Device"
 Identifier "ATI radeon ****"
 Driver "fglrx"
EndSection

Where **** should be replaced with your device's marketing number(e.g. 6870 for the HD 6870 and 6310 for the E-350 APU)

Xorg will start and it is possible to use amdcccle instead of aticonfig. There will be a "AMD Unsupported hardware" watermark.

You can remove this watermark using the following script :

#!/bin/sh
DRIVER=/usr/lib/xorg/modules/drivers/fglrx_drv.so
for x in $(objdump -d $DRIVER|awk '/call/&&/EnableLogo/{print "\\x"$2"\\x"$3"\\x"$4"\\x"$5"\\x"$6}'); do
 sed -i "s/$x/\x90\x90\x90\x90\x90/g" $DRIVER
done

and rebooting.

WebGL support in Chromium

Google has blacklisted linux's catalyst driver from supporting webGL in their Chromium/Chrome browsers.

You can turn webGL on by editing /usr/share/applications/chromium.desktop file and adding --ignore-gpu-blacklist flag into Exec line so it could look like this:

Exec=chromium %U --ignore-gpu-blacklist

You can also run chromium from console with that --ignore-gpu-blacklist flag:

$ chromium --ignore-gpu-blacklist
Warning: Catalyst does not support the GL_ARB_robustness extension, so it is possible that a malicious site could use WebGL to perform a DoS attack on your graphic card, more info: http://www.h-online.com/security/news/item/WebGL-as-a-security-problem-1240567.html


Laggs/freezes when watching flash videos via Adobe's flashplugin

Edit /etc/adobe/mms.cfg file and make it looks like this:

#EnableLinuxHWVideoDecode=1
OverrideGPUValidation=true


Laggs/slow windows movement in GNOME3

You can try this solution out, it's working for many people.

Add this line:

export CLUTTER_VBLANK=none

into ~/.profile or into /etc/profile file. Restart X server or reboot system.

Not using fullscreen in the 1920x1080 resolution

The ATI has scaling by default add this to your xorg.conf

Option      "DPMS" "true"

On the Monitor section, as full example would look like this

Section "Monitor"
        Identifier   "0-DFP5"
        Option      "VendorName" "ATI Proprietary Driver"
        Option      "ModelName" "Generic Autodetecting Monitor"
        Option      "DPMS" "true"
        Option      "PreferredMode" "1920x1080"
        Option      "TargetRefresh" "60"
        Option      "Position" "0 0"
        Option      "Rotate" "normal"
        Option      "Disable" "false"
EndSection