AMD Catalyst (日本語)

From ArchWiki
Jump to: navigation, search

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary heading Template:Article summary link Template:Article summary link Template:Article summary end

ATI/AMD のビデオカードを使っている人は AMD のプロプライエタリなドライバー (catalystAUR) かオープンソースドライバー (xf86-video-ati) のどちらかを選ぶことができます。この記事ではプロプライエタリドライバーについて記述します。

AMD の Linux ドライバーパッケージ catalyst は以前 fglrx (FireGL and Radeon X) と呼ばれていました。パッケージの名前が変わっただけで、カーネルモジュールはそのまま元の fglrx.ko というファイル名になっています。従って、以下で fglrx という名前を使っている時はカーネルモジュールのことを指していて、パッケージではありません。

2013年4月26日現在、Catalyst パッケージは公式リポジトリでは提供されていません。過去、開発の質・速度に問題があるとして Catalyst は公式の Arch サポートから 外されました。現在、Catalyst は Xorg 1.14 と互換性がありません。

オープンソースドライバと比べると、Catalyst は 2D グラフィックではあまりパフォーマンスが出ませんが、3D レンダリングや電源管理ではサポートが優れています。サポートされているデバイスはチップセット R600 以降を使っている (Radeon HD 2xxx 以降の) ATI/AMD Radeon ビデオカードです。Xorg の decoder ringこの表で、モデル名 (X1900, HD4850) とチップ名 (R580, RV770) を見比べることができます。

Contents

インストール

Catalyst をあなたのシステムにインストール方法は3つあります。一つは (Arch の非公式 Catalyst メンテナである) Vi0L0 のリポジトリを使うことです。このリポジトリには必要なパッケージが全て含まれています。二番目の方法は AUR を使うことで、Vi0L0 によって作られた、彼のリポジトリで彼がパッケージを作成するために使っているのと同じものが提供されています。最後に、AMD から直接ドライバーをインストールできます。

方法を選ぶ前に、どのドライバーが必要なのか知る必要があります。Catalyst 12.4 から、AMD は Radeon HD 2xxx, 3xxx, 4xxx カードの開発を legacy Catalyst ドライバーに分割しています。Radeon HD 5xxx 以降では、標準の Catalyst ドライバーを使います。また、必要なドライバーがどれかにかかわらず、Catalyst ユーティリティが必要になります。

Note: After the instructions for every method of installing, you will find general instructions everyone has to perform, regardless of the method you used.

ドライバーのインストール

非公式リポジトリからインストール

もし AUR からパッケージをビルドするのが気に入らないなら、この方法を使って下さい。このリポジトリは非公式の Catalyst メンテナである Vi0L0 によって管理されています。全てのパッケージには署名がされているので安心して使うことができます。この記事の後ろの方で書かれているように、Vi0L0 は ATI グラフィックカードを動作させるために必要な他の多くのパッケージにも関わっています。

Vi0L0 は3つの異なる Catalyst リポジトリを保持しており、それぞれ異なるドライバーが置かれています:

  • [catalyst]; Radeon HD 5xxx 以降で必要な標準 Catalyst ドライバー、(stable か beta かを問わず) 最新の Catalyst リリースを含んでいます。
  • [catalyst-stable]; Radeon HD 5xxx 以降で必要な標準 Catalyst ドライバー、最新の stable ドライバー。
  • [catalyst-hd234k]; Radeon HD 2xxx, 3xxx, 4xxx カードで必要な legacy Catalyst ドライバー。
Warning: レガシーな Catalyst ドライバーは Xorg 1.13 をサポートしていません。このドライバーを使いたい場合、Xorg 1.12 に戻すための方法が書かれている #Xorg リポジトリ を見て下さい。
Note: Catalyst のベータドライバー 13.6 は現在 Xorg 1.14 をサポートしています。

リポジトリのどれかを有効にするには、/etc/pacman.conf を編集して、そこに記述してある他のどのリポジトリよりも先に選択したリポジトリを追加する必要があります。

  • [catalyst] の場合、次を追加してください:
[catalyst]
Server = http://catalyst.wirephire.com/repo/catalyst/$arch
  • [catalyst-stable] の場合、次を追加してください:
[catalyst-stable]
Server = http://catalyst.wirephire.com/repo/catalyst/$arch
  • [catalyst-hd234k] の場合、次を追加してください:
[catalyst-hd234k]
Server = http://catalyst.wirephire.com/repo/catalyst-hd234k/$arch

また、Vi0L0 の GPG 鍵を追加して pacman がリポジトリを信頼するようにしてください。

# pacman-key --keyserver pgp.mit.edu --recv-keys 0xabed422d653c3094
# pacman-key --lsign-key 0xabed422d653c3094
Tip: catalyst.wirephire.com は帯域限界に達すると落ちたり (過去にありました)、あなたの地域では遅すぎたりするかもしれないので、yanom [1] (USA) や rtsinformatique [2] (フランス) によってリポジトリミラーが提供されています。ただしこれらのミラーが常時利用できるという保証はありません:
[catalyst]
#Server = http://70.239.162.206/catalyst-mirror/repo/catalyst/$arch
#Server = http://mirror.rts-informatique.fr/archlinux-catalyst/repo/catalyst/$arch
[catalyst-stable]
#Server = http://70.239.162.206/catalyst-mirror/repo/catalyst/$arch
#Server = http://mirror.rts-informatique.fr/archlinux-catalyst/repo/catalyst/$arch
[catalyst-hd234k]
#Server = http://70.239.162.206/catalyst-mirror/repo/catalyst-hd234k/$arch
#Server = http://mirror.rts-informatique.fr/archlinux-catalyst/repo/catalyst-hd234k/$arch

(uncomment the line for the mirror closest to your location - it is a good idea to keep alternatives in case of mirror downtime)

Repository mirroring can be easily achieved using rsync://mirror.rts-informatique.fr::archlinux-catalyst

リポジトリを追加したら、pacman のデータベースを更新してパッケージをインストールしてください:

# pacman -Syu
# pacman -S catalyst catalyst-utils
Note: もし pacman が libgl を削除するよう言ってきた場合、削除しても問題ありません。
Warning: Catalyst from Vi0L0's repository is compiled against one kernel and one kernel only. For Vi0L0, it's getting more and more difficult to keep up with kernel's pace and as such, we have seen a lot of users asking for what to do in the forums. Often, the solution is to a) wait for Vi0L0 to rebuilt the Catalyst package against those newer versions, b) do so yourself or c) hold back the Linux kernel update. The easiest solution is to do so yourself, not manually, but by using Vi0L0's excellent #Catalyst-hook.

あなたが 64-bit 環境を使っていて 32-bit の OpenGL サポートが必要な場合:

# pacman -S lib32-catalyst-utils

リポジトリには他のパッケージも含まれており、catalyst パッケージを置き換えられます:

  • catalyst-generator; this package is able to generate fglrx modules packed into pacman compliant packages - most secure and KISS-compatible package in this side-note, although it has to be operated manually. It's described in #Catalyst-generator
  • catalyst-hook; システムがシャットダウンや再起動する間に fglrx モジュールを自動的に更新する systemd サービス。#Catalyst-hook で説明されています。

以上のパッケージの詳細は #ツール にあります。 最後に、リポジトリには xvba-video パッケージと AMDOverdriveCtrl パッケージが含まれています。前者はビデオアクセラレーションを有効にするもので、#ビデオアクセラレーション で説明してます。後者は制御やアンダークロックをするための GUI で #GPU/Mem frequency, Temperature, Fan speed, Overclocking utilities で説明しています。そして #OpenCL and OpenGL development で説明されている OpenCL/OpenGL 開発者 のためのツールパックが含まれています。

AUR からインストール

Catalyst をインストールする二番目の方法は AUR です。あなたのコンピュータにあわせてパッケージをビルドしたい場合、この方法を使って下さい。ただし AUR は Catalyst をインストールするのに一番面倒臭い方法です。一番作業量が多く、また、カーネルを更新する度に手動でアップデートする必要があります。

Warning: Catalyst パッケージを AUR からインストールする場合、カーネルが更新される度に Catalyst をリビルドする必要があります。そうしないと X の起動が失敗するようになります

上で述べられている Vi0L0 の非公式リポジトリにあるパッケージは全て AUR でも利用可能です:

AUR にはリポジトリにはないパッケージもいくつか存在します。これらのパッケージには所謂 Catalyst-total やベータバージョンが含まれます:

The catalyst-totalAUR packages are made to make the lives of AUR users easier. It builds the driver, the kernel utilities and the 32 bit kernel utilities. It also builds the catalyst-hook package, which is explained briefly above and in more detail in its own section below.

catalyst-total-pxpAUR は実験的な powerXpress サポートを有効にして Catalyst をビルドします。

AMD から直接インストール

Warning: ati.com/amd.com のインストーラーを使うのは推奨です!ファイルが衝突したり X が起動できなくなったり、Arch 特有の修正をあなたが見落としてしまう可能性があります。この方法を試したい場合、コマンドラインでブートするのに慣れておいて下さい
Note: If you have attempted a manual install from the official installer and cannot recover your desktop:
# /usr/share/ati/fglrx-uninstall.sh

1. AMD などからインストーラーをダウンロードしてください (*-* はバージョンです): ati-driver-installer-*-*-x86.x86_64.run

2. インストーラーを実行可能にしてください: # chmod +x ati-driver*

3. vesa のような標準ビデオドライバーを使っていることを確認してください、衝突するドライバー (xf86-video-ati) は pacman で削除してください。

4. /usr/src/linux から /usr/src/{kernelsource} にシンボリックリンクを張って下さい。64-bit ユーザーは /usr/lib64 から /usr/lib にもシンボリックリンクを作って下さい。

5. ビルド環境を整えて下さい: base-devellinux-headers をインストールしてください。

6. # ./ati-driver-installer-*-*-x86.86_64.run を実行して下さい (ファイルが一時フォルダに展開されスクリプトが実行されます...)

7. 何も問題が起こってないことを確かめるために、/usr/share/ati/fglrx-install.log をチェックしてください。また、/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.

ドライバーの設定

あなたが選んだ方法でドライバーをインストールした後は、X を設定して Catalyst を動作させる必要があります。また、起動時にモジュールがロードされるようにしなくてはなりません。さらに、KMS を無効にする必要があります。

X の設定

X を設定するために、xorg.conf ファイルを作成する必要があります。Catalyst はこのファイルを作成・修正するための aticonfig ツールを提供しています。 また、このツールを使えばカードのほとんど全てを設定することができ、/etc/ati/amdpcsdb ファイルにアクセスします。aticonfig のオプションを全て見るには、次を実行して下さい:

# 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
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.

ここで Catalyst を設定してください。モニターがひとつだけの場合、次を実行して下さい:

# aticonfig --initial
Note: If you have a PowerXpress problem you should probably install catalyst-total-pxpAUR.

However, if you have two monitors and want to use both of them, you can run the command stated below. Note that this will generate a dual head configuration with the second screen located above the first screen.

# aticonfig --initial=dual-head --screen-layout=above
Note: See #Double Screen (Dual Head / Dual Screen / Xinerama) for more information on setting up dual monitors.

You can compare the generated file to one of the Sample Xorg.conf examples listed on the Xorg page.

Although the current Xorg versions auto-detect most options when started, 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" ##
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
Note: With every Catalyst update you should remove amdpcsdb file in this way: kill X, remove /etc/ati/amdpcsdb, start X and then run amdcccle - otherwise the version of Catalyst may display wrongly in amdcccle.

Catalyst についてもっと詳しい情報が必要な場合は、このスレッド を見て下さい。

起動時にモジュールをロード

radeon が自動でロードされないようにブラックリストに入れる必要があります。/etc/modprobe.d/modprobe.conf に blacklist radeon を追加してください。また、radeon が /etc/modules-load.d/ 下のファイルによってロードされていないことを確認してください。詳しくは、Kernel modules (日本語)#ブラックリスト を見て下さい。

Then we will have to make sure that the fglrx module gets auto-loaded. 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.

kernel mode setting を無効化

ドライバーがまだ KMS を利用できないので、kernel mode setting を無効にするのは重要です。KMS を無効化しないと、tty を切り替えたり DE からシャットダウンしようとした時にシステムがフリーズします。

kernel mode setting を無効化するには、nomodesetカーネルパラメータに追加してください。例えば:

  • GRUB Legacy では、menu.lst を編集して nomodesetkernel 行に追加してください:
kernel /boot/vmlinuz-linux root=/dev/sda1 ro nomodeset
  • GRUB では、/etc/default/grub を編集して nomodesetGRUB_CMDLINE_LINUX に追加してください:
GRUB_CMDLINE_LINUX="nomodeset"
それから、root で次を実行して下さい:
# grub-mkconfig -o /boot/grub/grub.cfg
  • Syslinux では、/boot/syslinux/syslinux.cfg を編集して nomodesetAPPEND 行に追加してください、例:
APPEND root=/dev/sda2 ro nomodeset

確認作業

再起動した後ログインが成功したら、fglrx が正しく動作しているか以下のコマンドで確認することができます:

$ lsmod | grep fglrx
$ fglrxinfo

出力がされたら、動作しています。最後に、startx か GDM/KDM を使って X を起動して、ダイレクトレンダリングが有効になっているかを端末で以下のコマンドを実行して確認してください:

$ glxinfo | grep "direct rendering"

"direct rendering: yes" と表示されれば問題ありません!glxinfo コマンドが見つからないときは mesa-demos パッケージをインストールしてください。

Note: You can also use:
$ fgl_glxgears

as the fglrx alternative test to glxgears.

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.

問題がある場合は、トラブルシューティングを見て下さい。

カスタムカーネル

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

カスタムカーネルで catalyst をインストールしたい場合、catalyst-$kernel パッケージを自分でビルドする必要があります:

  1. Catalyst から PKGBUILDcatalyst.install ファイルを取得してください。
  2. PKGBUILD を編集してください。2つ修正が必要です:
    1. pkgname=catalystpkgname=catalyst-$kernel_name に変更してください、$kernel_name はあなたが自由に決めてください (例: custom, mm, themostawesomekernelever)。
    2. linux の依存を $kernel_name に変更してください。
  3. パッケージをビルドしてインストールしてください。makepkg -imakepkg を実行してから pacman -U pkgname.pkg.tar.gz を実行して下さい。
Note:
  • If you run multiple kernels, you have to install the Catalyst-utils packages for all kernels. They won't conflict with one another.
  • Catalyst-generator is able to build catalyst-{kernver} packages for you so you do not actually need to perform all those steps manually. For more information, see Tools section.

PowerXpress サポート

PowerXpress テクノロジを使うことでノートブックで内蔵グラフィックス (IGP) と外付け (ディスクリート) グラフィックスの2つのグラフィックカードを切り替えることができるようになり、バッテリー寿命を伸ばしつつ 3D レンダリングのパフォーマンスを向上させることが可能です。

この機能を Arch で使うために必要なことは:

  • AUR から catalyst-total-pxpAUR パッケージを入手・ビルドする、もしくは
  • [catalyst] リポジトリから catalyst-utils-pxp パッケージをインストールする (必要ならば lib32-catalyst-utils-pxp も)。

Intel の IGP に切り替えるには mesa-libgl パッケージと Intel のドライバー (xf86-video-intelintel-dri) をインストールする必要があります。

Note: With the latest version of Catalyst, version 13.1 (not Catalyst legacy) ChrisXY was able to work on the newest xorg-server (version 1.13.1), mesa 9.0.1 and xf86-video-intel 2.20.18.

On any version of Catalyst below 13.1 (and all versions of Catalyst legacy) there are some problems with the new Intel drivers and the last noted working version of xf86-video-intel is 2.20.2-2, so you will probably have to downgrade from the latest version that you have gotten from Arch's repositories (although we recommend to test the newest one before downgrading - there's always some possibility that it will work).

xf86-video-intel 2.20.2-2 works only with xorg-server 1.12 and so it is a part of the xorg112 repository. If you want to use it you will have to downgrade xorg-server as well. For information on this, see #Xorg repositories.

以下のコマンドを使うことで、内蔵・ディスクリート GPU の切り替えができます:

# aticonfig --px-igpu    #for integrated GPU
# aticonfig --px-dgpu    #for discrete GPU

Just remember that fglrx needs /etc/X11/xorg.conf configured for AMD's card with 'fglrx' inside.

You can also use the pxp_switch_catalyst switching script that will perform some additional usefull operations:

  • Switching xorg.conf - it will rename xorg.conf into xorg.conf.cat (if there's fglrx inside) or xorg.conf.oth (if there's intel inside) and then it will create a symlink to xorg.conf, depending on what you chose.
  • Running aticonfig --px-Xgpu.
  • Running switchlibGL.
  • Adding/removing fglrx into/from /etc/modules-load.d/catalyst.conf.

Usage:

# pxp_switch_catalyst amd
# pxp_switch_catalyst intel

If you have got problems when you try to run X on Intel's driver you may try to force "UXA" acceleration; just make sure that your xorg.conf for Intel's GPU got Option "AccelMethod" "uxa", like here:

Section "Device"
        Identifier  "Intel Graphics"
        Driver      "intel"
        #Option      "AccelMethod"  "sna"
        Option      "AccelMethod"  "uxa"
        #Option      "AccelMethod"  "xaa"
EndSection

2つの X サーバーを同時に実行する (1つは Intel ドライバーを使い、もう1つは fglrx を使う)

Because fglrx is crash-prone (regarding PowerXpress), it could be a good idea to use the Intel driver in the main X server and have a secondary X server using fglrx when 3D acceleration is needed. However, simply switching to the discrete GPU from the integrated GPU using aticonfig or amdcccle will cause all sorts of weird bugs when starting the second X.

To run two X servers at the same time (each using different drivers), you should firstly set up a fully working X with Catalyst and then move its xorg.conf to a temporary place (for example, /etc/X11/xorg.conf.fglrx. The next time X is started, it will use the Intel driver by default instead of fglrx.

To start a second X server using fglrx, simply move xorg.conf back to the proper place (/etc/X11/xorg.conf) before starting X. This method even allows you to switch between running X sessions. When you are done using fglrx, move xorg.conf somewhere else again.

The only disadvantage of this method is not having 3D acceleration using the Intel driver. 2D acceleration, however, is fully functional. Other than that, this will provide us with a completely stable desktop.

Xorg リポジトリ

Catalyst は更新が遅いことで有名です。そのため、アップストリームから落ちてきた新しい Xorg が Catalyst との互換性を破壊してしまうことがよくあります。つまり Catalyst ユーザーは Xorg パッケージを更新から除外するか、更新を止めておく必要がある Xorg パッケージだけを保持しているバックポートリポジトリを使う必要があるということです。Vi0L0 がこの勤めを果たしており、複数のバックポートリポジトリを提供しています。

pacman を使ってパッケージの更新を止めたい場合は、pacman (日本語)#アップグレードさせないパッケージを設定 を見て下さい。更新を止める必要があるパッケージは、以下の通りです:

  • xorg-server-*
  • xf86-input-*
  • xf86-video-*

バックポートリポジトリを使いたい場合、/etc/pacman.conf を編集して、(Catalyst リポジトリを含む) 他のどのリポジトリよりも先にリポジトリを追加する必要があります。

[xorg113]

Catalyst は xorg-server 1.14 をサポートしていません。

[xorg113]
Server = http://catalyst.wirephire.com/repo/xorg113/$arch

[xorg112]

Catalyst < 12.10 と Catalyst Legacy は xorg-server 1.13 をサポートしていません。

[xorg112]
Server = http://catalyst.wirephire.com/repo/xorg112/$arch

[xorg111]

Catalyst < 12.6 は xorg-server 1.12 をサポートしていません。

[xorg111]
Server = http://catalyst.wirephire.com/repo/xorg111/$arch

ツール

Catalyst-hook

Catalyst-hookAUR is a systemd service that will automatically rebuild the fglrx modules while the system shuts down or reboots, but only if it's necessary (e.g. after an update).

Before using this package make sure that both the base-devel group and the linux-headers package (the one specific to the kernel you use) are installed.

To enable the automatic update, enable the catalyst-hook.service:

# systemctl enable catalyst-hook
# systemctl start catalyst-hook

You can also use this package to build the fglrx module manually. Simply run the catalyst_build_module script after the kernel has been updated:

# catalyst_build_module all

A few more technical details:

The catalyst-hook.service is stopping the systemd "river" and is forcing systemd to wait until catalyst-hook finishes its job.

The catalyst-hook.service is calling the catalyst_build_module check function which checks if fglrx rebuilds are really necessary.

The check function is checking if the fglrx module exists, if it:

  • doesn't exist, it will build it;
  • does exist, it will compare the two values to be sure that a rebuild is necessary.

These values are md5sums of the /usr/lib/modules/<kernel_version>/build/Module.symvers file (because I, Vi0L0, noticed that this file is unique and different for every kernel's release). The first value is the md5sum of the existing Module.symvers file. The second value is the md5sum of the Module.symvers file which existed in a moment of the fglrx module creation. This value was compiled into the fglrx module by a catalyst_build_module script.

If the values are different, it will compile the new fglrx module.

The check is checking the whole /usr/lib/modules/ directory and building modules for all of the installed kernels if it's necessary. If the build or rebuild isn't necessary, the whole process takes only some milliseconds to complete before it gets killed by systemd.

Catalyst-generator

Catalyst-generator is a package that is able to build and install the fglrx module packed into pacman compliant catalyst-${kernver} packages. The basic difference from Catalyst-hook is that you will have to trigger this command manually, whereas Catalyst-hook will do this automatically at boot when a new kernel got installed.

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 a currently booted kernel as an unprivileged user (non-root; safer way), use catalyst_build_module. You will be asked for your root password to proceed to package installation.

A short summary on how to use this package:

  1. As root: catalyst_build_module remove. This will remove all unused catalyst-{kernver} packages.
  2. As unprivileged user: catalyst_build_module ${kernver}, where ${kernver} is the version of the kernel to which you just updated. For example: catalyst_build_module 2.6.36-ARCH. You can also build catalyst-${kernver} for all installed kernels by using catalyst_build_module all.
  3. 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 run catalyst_build_module remove_all before using pacman -R catalyst-generator catalyst-generator will tell you which catalyst-{kernver} packages you will have to remove manually after removing catalyst-generator itself.

Catalyst-generator is most safe and KISS-friendly solution because:

  1. you can use unprivileged user to build the package;
  2. it is building modules in a fakeroot environment;
  3. it is not throwing files here and there, pacman always knows where they are;
  4. all you have to do is to remember to use it
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.

OpenCL and OpenGL development

Since years AMD is working on tools for OpenCL and OpenGL developement.

Now under the banner of "Heterogeneous Computing" AMD is providing even more of them, fortunately most of their computing tools are available also for Linux.

In the AUR and the [catalyst] repositories you will find packages that represent the most important work from AMD, namely; amdapp-aparapi, amdapp-sdk and amdapp-codexl.

APP shortcut stands for Accelerated Parallel Processing.

amdapp-aparapi

AMD's Aparapi is an API for expressing data parallel workloads in Java and a runtime component capable of converting the Java bytecode of compatible workloads into OpenCL so that it can be executed on a variety of GPU devices. If Aparapi can’t execute on the GPU, it will execute in a Java thread pool.

You can find more information about Aparapi here.

amdapp-sdk (formerly known as amdstream)

The AMD APP Software Development Kit (SDK) is a complete development platform created by AMD to allow you to quickly and easily develop applications accelerated by AMD APP technology. The SDK provides samples, documentation and other materials to quickly get you started leveraging accelerated compute using OpenCL, Bolt, or C++ AMP in your C/C++ application.

Since version 2.8 amdapp-sdk is providing aparapiUtil as well as aparapi's samples. A package is available on the [catalyst] repository; it depends on the amdapp-aparapi package. The AUR's package will let you decide whether you want aparapi's additions or not.

Version 2.8 does not provide Profiler functionality, it has been moved to CodeXL.

You can find more information about AMD APP SDK here.

amdapp-codexl

CodeXL is an OpenCL and OpenGL Debugger and Profiler, with a static OpenCL kernel analyzer. It's a GUI application written atop of the well known gDEBugger and is available only for x86_64 systems.

You can find more informations about CodeXL here.

機能

ティアフリーレンダリング

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

To enable 'Tear Free Desktop' run amdcccle and go to: Display OptionsTear Free.

Or as root run:

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

To disable, again use amdcccle or run as root:

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

ビデオアクセラレーション

Video Acceleration API (VA API) is an open source software library (libVA) and API specification which provides GPU acceleration for video processing on Linux/UNIX based operating systems. The process works by enabling hardware accelerated video decode at various entry-points (VLD, IDCT, Motion Compensation, deblocking) for common encoding standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/WMV3).

VA-API gained a proprietary backend (in November 2009) called xvba-videoAUR, that allows VA-API programmed applications to take advantage of AMD Radeons UVD2 chipsets via the XvBA (X-Video Bitstream Acceleration API designed by AMD) library.

XvBA support and xvba-video is still under development, however it is working very well in most cases. Build the xvba-videoAUR package from AUR or soon, install it from [community] and install mplayer-vaapi and libva. Then just set your video player to use vaapi:gl as video output:

$ mplayer -vo vaapi:gl movie.avi

These options can be added to your mplayer configuration file, see MPlayer.

For smplayer:

Options → Preferences → General → Video (tab) → Output driver: User Defined : vaapi:gl
Options → Preferences → General → Video (tab) → Double buffering on
Options → Preferences → General → General → Screenshots → Turn screenshots off
Options → Preferences → Performance → Threads for decoding: 1 (to turn off -lavdopts parameter)
Note: If Tear Free Desktop is enabled it's better to use:
Options → Preferences → General → Video (tab) → Output driver: vaapi

If Video Output vaapi:gl isn't working - please check:

vaapi, vaapi:gl2 or simply xv(0 - AMD Radeon AVIVO Video).

For VLC:

Tools → Preferences → Input & Codecs → Use GPU accelerated decoding

It might help to enable v-sync in amdcccle:

3D → More Settings → Wait for vertical refresh = Always On
Note: If you are using Compiz/KWin, 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 it is still flickering, try to disable this option in CCSM. It's off by default in KWin, but if you see flickering try to turn "Suspend desktop effects for fullscreen windows" on or off in System Settings → Desktop Effects → Advanced.

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

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

You can get the fan speed with: $ aticonfig --pplib-cmd "get fanspeed 0"

You can get the temperature with: $ aticonfig --odgt

To set the fanspeed with: $ aticonfig --pplib-cmd "set fanspeed 0 50" Query Index: 50, Speed in percent

To overclock and/or underclock it's easier to use a GUI, like ATi Overclocking Utility, which is very simple and requires qt to work. It might be out of date/old, but you can get it here.

Another, more complex utility to perform such operations is AMDOverdriveCtrl. Its homepage is here and you can build an Arch package from AUR or from Vi0L0's unofficial repositories.

Double Screen (Dual Head / Dual Screen / Xinerama)

Introduction

Warning: you should know that there isn't one specific solution because each setup differs and needs its own configuration. That's why you will have to adapt the steps below to your own needs. It is possible that you have to try more than once. Therefore, you should save your working /etc/X11/xorg.conf before you start modifying and you must be able to recover from a command-line environment.
  • In this chapter, we will describe the installation of two different-sized screens on only one graphics card with two 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 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 what you want, 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 session for each of the two sessions inside the Server Layout section.

ATI Documentation

ATI Catalyst Control Center

The GUI tool shipped 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:

$ {kdesu/gksu} amdcccle
Warning: Do not use sudo directly with a GUI. Sudo gives you admin rights with user account information. Instead, use gksu (GNOME) or kdesu (KDE).

インストール

Before we start, make sure that your hardware is plugged in correctly, that power is on and that you know your hardware characteristics (screen dimensions, sizes, refreshment rates, etc.) Normally, both screens are recognized during boot time but not necessarily identified properly, especially if you are not using any Xorg base configuration file (/etc/X11/xorg.conf) but relying on the hot-plugging feature.

The first step is to make sure that you screens will be recognized by your DE and by X. For this, you need to generate a basic Xorg configuration file for your two 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 other possible and available options, do not hesitate to type aticonfig --help inside a terminal to display all available command lines.

Now you should have a basic Xorg configuration file that you can edit to add your screen resolutions. It is important to use the precise resolution, especially if you have screens of different sizes. These resolutions have to be added in the "Screen" section:

SubSection "Display"
    Depth     24
    Modes     "X-resolution screen 1xY-resolution screen 1" "Xresolution screen 2xY-resolution screen 2"
EndSubSection

From now on, instead of editing the xorg.conf file manually, let us use the ATI GUI tool. Restart X to be sure that your two screens are properly supported and that the resolutions are properly recognized (Screens must be independent, not mirrored).

設定

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

Before you restart X, 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.

アンインストール

ドライバーが動作しなかったりオープンソースドライバーを試したい場合は、catalystcatalyst-utils パッケージを削除してください。catalyst-generatorAUR, catalyst-hookAUR, lib32-catalyst-utilsAUR パッケージがインストールされている場合はこれらも削除するべきです。

Warning:
  • You may need to use pacman -Rdd to remove catalyst-utilsAUR (and/or lib32-catalyst-utilsAUR) because that package contains gl related files and many of your installed packages depend on them. These dependencies will be satisfied again when you install xf86-video-ati.
  • You may need to remove /etc/profile.d/ati-flgrx.sh and /etc/profile.d/lib32-catalyst (if it exists on your system), otherwise r600_dri.so will fail to load and you would not have 3D support.
Note: You should remove unofficial repositories from your /etc/pacman.conf and run pacman -Syu, because those repositories include out-dated Xorg packages to allow use of catalyst and the xf86-video-ati package needs up-to-date Xorg packages from the Official repositories.

また、以下の手順に従って下さい:

  • /etc/modprobe.d/blacklist-radeon.conf ファイルがある場合、削除する。もしくはファイルの中の blacklist radeon という行をコメントアウトする。
  • /etc/modules-load.d 下にブート時に fglrx モジュールをロードするファイルがある場合は、ファイルを削除するか fglrx を含む行をコメントアウトする。
  • /etc/X11/xorg.conf を削除するかバックアップする。
  • catalyst-hookAUR パッケージをインストールしていた場合は、systemd サービスを無効にしておく。
  • If you have installed the catalyst-generatorAUR package, make sure to remove "fglrx" from the "MODULES" array of /etc/rc.conf in case the post-removal script of the package doesn't work.
  • 設定ファイルでカーネルパラメータの "nomodeset" オプションを使っていて KMS をこれから使う場合、そのオプションを削除する。
  • 他のドライバーをインストールする前に再起動をする

トラブルシューティング

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

You can parse the whole /var/log/Xorg.0.log or, for clues:

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

If you are still confused about what is going on, search the forums first. Then post a message in the thread specific to ATI/AMD. Provide the information from xorg.conf and both commands mentioned above.

3D Wine applications freeze

If you use a 3D Wine application and it hangs, you have to disable TLS. To do this, either use aticonfig or edit /etc/X11/xorg.conf. To use aticonfig:

# aticonfig --tls=off

Or, to edit /etc/X11/xorg.conf; first open the file in an editor as root and then add Option "UseFastTLS" "off" to the Device section of this file.

After applying either of the solutions, restart X for it to take effect.

Problems with video colours

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

  • Run mplayer without -vo vaapi switch.
  • Run 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 artefact issues in some cases, for instance when resizing Konsole.

Black screen with complete lockups and/or hangs after reboot or startx

Ensure you have added the nomodeset option to the kernel options line in your bootloader (see #Disable kernel mode setting).

If you are using the legacy driver (catalyst-hd234k) and get a black screen, try downgrading xorg-server to 1.11 by using the #xorg111 repository.

Faulty ACPI hardware calls

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

If 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 open your fglrx.conf file in /etc/modules-load.d and add the agp module on a line before the fglrx line.
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 this 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. The command below should return the following output:

$ locate libGL.s
 /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 for example, Grub Legacy's /boot/grub/menu.lst:

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

To see where you need to add this with other bootloaders, see #Disable kernel mode setting.

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 #Disable kernel mode setting)

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 the following command gets you the following output:

$ tail -n 100 /var/log/Xorg.0.log | grep agp
 (EE) fglrx(0): [agp] unable to acquire AGP, error "xf86_ENODEV"

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 this bugreport 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 kernel option to your kernel options in your bootloader and rebooting fixed the problem at least for me. To see how to do this for different bootloaders, see #Disable kernel mode setting.

"aticonfig: No supported adapters detected"

If when running

# 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 etc/X11/xorg.conf file or by copying an older working /etc/ati/control file (preferred - this also fixes the watermark issue).

To get an older control file, download a previous version of fglrx from AMD and run it with "--extract driver" parameter. You'll find the control file in driver/common/etc/ati/control. Copy the extracted file over the system file and restart Xorg. You can try different versions of the file.

To set your model in xorg.conf, edit the device section 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 an "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 the Exec line so it looks like this:

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

You can also run chromium from console with the same --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. For more info, read this.

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

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

#EnableLinuxHWVideoDecode=1
OverrideGPUValidation=true

If you are using KDE make sure that "Suspend desktop effects for fullscreen windows" is unchecked under System Settings->Workspace Appearance and Behaviour->Desktop Effects->Advanced.

Laggs/slow windows movement in GNOME3

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

Add this line into ~/.profile or into /etc/profile:

export CLUTTER_VBLANK=none

Restart X server or reboot your system.

Not using fullscreen resolution at 1920x1080 (underscanning)

Using the amdcccle GUI you can select the display, go to adjustments, and set Underscan to 0% (aticonfig defaults to 15% underscan).

Alternatively, you can use aticonfig to disable underscanning as well:

# aticonfig --set-pcs-val=MCIL,DigitalHDTVDefaultUnderscan,0

For newer version (for example, 12.11), if Catalyst control center repeatedly fails to save the overscan setting, edit /etc/ati/amdpcsdb:

TVEnableOverscan=V0

Then logout and login.

Dual Screen Setup: general problems with acceleration, OpenGL, compositing, performance

Try to disable xinerama and xrandr12. Check out ie. this way:

Type those commands:

# aticonfig --initial
# aticonfig --set-pcs-str="DDX,EnableRandR12,FALSE"

Then reboot your system. In /etc/X11/xorg.conf check that xinerama is disabled, if it's not disable it and reboot your system.

Next run amdcccle and pick up amdcccle->display manager->multi-display->multidisplay desktop with display(s) 2.

Reboot again and set up your display layout whatever you desire.

Disabling VariBright feature

Type the following command to disable VariBright:

# aticonfig --set-pcs-u32=MCIL,PP_UserVariBrightEnable,0

Hybrid/PowerXpress: turning off discrete GPU

When you are using catalyst-total-pxp or catalyst-utils-pxp and you are switching to integrated GPU you may notice that discrete GPU is still working, consuming power and making your system's temperature higher.

Sometimes ie. when your integrated GPU is intel's one you can use vgaswitcheroo to turn the discrete GPU off. Sometimes unfortunatelly, it's not working.

Then you may check out acpi_call. MrDeepPurple has prepared the script which he's using to perform 'turn off' task, he's calling script via systemd service while booting and resuming his system. Here's his script:

#!/bin/sh
libglx=$(/usr/lib/fglrx/switchlibglx query)
modprobe acpi_call
if [ "$libglx" = "intel" ]; then
    echo '\_SB.PCI0.PEG0.PEGP._OFF' > /proc/acpi/call
fi

Switching from X session to TTYs gives blank screen

Workaround for this "feature", which appeared in catalyst 13.2 betas, is to use vga= kernel option, like vga=792. You can get the list of supported resolutions with

hwinfo --framebuffer

command. Pick up the one from the very bottom, and copy-paste it into kernel line of your bootloader, so it could look like ie. vga=0x03d4