AMD Catalyst (日本語)
| 概要 |
|---|
| AMD のプロプライエタリ Linux 版 "Catalyst" ビデオカードドライバの概要。 |
| 関連項目 |
| ATI (日本語) |
| Xorg (日本語) |
| 資料 |
| cchtml.com - ATI の Linux ドライバーの非公式 Wiki |
| 非公式の ATI Linux ドライバー Bugzilla |
ATI/AMD のビデオカードを使っている人は AMD のプロプライエタリなドライバー (catalyst) かオープンソースドライバー (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) を見比べることができます。
インストール
Catalyst をあなたのシステムにインストール方法は3つあります。一つは (Arch の非公式 Catalyst メンテナである) Vi0L0 のリポジトリを使うことです。このリポジトリには必要なパッケージが全て含まれています。二番目の方法は AUR を使うことで、Vi0L0 によって作られた、彼のリポジトリで彼がパッケージを作成するために使っているのと同じものが提供されています。最後に、AMD から直接ドライバーをインストールできます。
方法を選ぶ前に、どのドライバーが必要なのか知る必要があります。Catalyst 12.4 から、AMD は Radeon HD 2xxx, 3xxx, 4xxx カードの開発を legacy Catalyst ドライバーに分割しています。Radeon HD 5xxx 以降では、標準の Catalyst ドライバーを使います。また、必要なドライバーがどれかにかかわらず、Catalyst ユーティリティが必要になります。
ドライバーのインストール
非公式リポジトリからインストール
もし 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 ドライバー。
リポジトリのどれかを有効にするには、/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
リポジトリを追加したら、pacman のデータベースを更新してパッケージをインストールしてください:
# pacman -Syu # pacman -S catalyst catalyst-utils
あなたが 64-bit 環境を使っていて 32-bit の OpenGL サポートが必要な場合:
# pacman -S lib32-catalyst-utils
リポジトリには他のパッケージも含まれており、catalyst パッケージを置き換えられます:
- catalyst-generator; このパッケージを使えば pacman 準拠のパッケージに詰め込んだ fglrx モジュールを生成することができます - 一番セキュアで KISS 原則に沿うパッケージとされますが、手動で操作する必要があります。#Catalyst-generator で説明されています。
- catalyst-hook; システムがシャットダウンや再起動する間に fglrx モジュールを自動的に更新する systemd サービス。#Catalyst-hook で説明されています。
以上のパッケージの詳細は #ツール にあります。 最後に、リポジトリには xvba-video パッケージと AMDOverdriveCtrl パッケージが含まれています。前者はビデオアクセラレーションを有効にするもので、#ビデオアクセラレーション で説明してます。後者は制御やアンダークロックをするための GUI で #GPU/Mem の周波数、温度、ファンスピード、オーバークロックユーティリティ で説明しています。そして #OpenCL や OpenGL を使った開発 で説明されている OpenCL/OpenGL 開発者 のためのツールパックが含まれています。
AUR からインストール
Catalyst をインストールする二番目の方法は AUR です。あなたのコンピュータにあわせてパッケージをビルドしたい場合、この方法を使って下さい。ただし AUR は Catalyst をインストールするのに一番面倒臭い方法です。一番作業量が多く、また、カーネルを更新する度に手動でアップデートする必要があります。
上で述べられている Vi0L0 の非公式リポジトリにあるパッケージは全て AUR でも利用可能です:
AUR にはリポジトリにはないパッケージもいくつか存在します。これらのパッケージには所謂 Catalyst-total やベータバージョンが含まれます:
catalyst-total パッケージは AUR ユーザーの生活を楽にするために作られています。ドライバーとカーネルユーティリティ、32bit のカーネルユーティリティをビルドします。上で簡単に説明されている catalyst-hook パッケージもビルドします (詳しい説明は下のセクションにあります)。
catalyst-total-pxp は実験的な powerXpress サポートを有効にして Catalyst をビルドします。
AMD から直接インストール
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-devel と linux-headers をインストールしてください。
6. # ./ati-driver-installer-*-*-x86.86_64.run を実行して下さい (ファイルが一時フォルダに展開されスクリプトが実行されます...)
7. 何も問題が起こってないことを確かめるために、/usr/share/ati/fglrx-install.log をチェックしてください。また、/lib/modules/fglrx/make.{ker_version}.log もあるはずです。
ドライバーの設定
あなたが選んだ方法でドライバーをインストールした後は、X を設定して Catalyst を動作させる必要があります。また、起動時にモジュールがロードされるようにしなくてはなりません。さらに、KMS を無効にする必要があります。
X の設定
X を設定するために、xorg.conf ファイルを作成する必要があります。Catalyst はこのファイルを作成・修正するための aticonfig ツールを提供しています。
また、このツールを使えばカードのほとんど全てを設定することができ、/etc/ati/amdpcsdb ファイルにアクセスします。aticonfig のオプションを全て見るには、次を実行して下さい:
# aticonfig --help | less
ここで Catalyst を設定してください。モニターがひとつだけの場合、次を実行して下さい:
# aticonfig --initial
2つモニターがあって両方使いたい場合、下のコマンドを実行することができます。このコマンドでは最初のスクリーンの上に2番目のスクリーンがくる dual head 設定を生成します。
# aticonfig --initial=dual-head --screen-layout=above
Xorg ページに並べられた Xorg.conf のサンプルの一つと生成されたファイルを比較することができます。
現在のバージョンの Xorg は起動時にほとんどのオプションを自動で認識しますが、デフォルトのバージョンが変わった時のためオプションを指定しておいたほうがいいかもしれません。
参考までに以下に (注釈が付いた) 例を示します。'#' が付いたエントリは必須で、'##' が付いたエントリは必要に応じて追加してください:
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
Catalyst についてもっと詳しい情報が必要な場合は、このスレッドを見て下さい。
起動時にモジュールをロード
radeon が自動でロードされないようにブラックリストに入れる必要があります。/etc/modprobe.d/modprobe.conf に blacklist radeon を追加してください。また、radeon が /etc/modules-load.d/ 下のファイルによってロードされていないことを確認してください。詳しくは、Kernel modules (日本語)#ブラックリスト を見て下さい。
それから fglrx モジュールが自動でロードされるようにしなくてはなりません。/etc/modules-load.d/ 下にあるモジュールファイルを使うか、新しいファイルを作って fglrx を追加してください。
kernel mode setting を無効化
ドライバーがまだ KMS を利用できないので、kernel mode setting を無効にするのは重要です。KMS を無効化しないと、tty を切り替えたり DE からシャットダウンしようとした時にシステムがフリーズします。
kernel mode setting を無効化するには、nomodeset をカーネルパラメータに追加してください。例えば:
- GRUB Legacy では、
menu.lstを編集して nomodeset をkernel行に追加してください:
kernel /boot/vmlinuz-linux root=/dev/sda1 ro nomodeset
- GRUB では、
/etc/default/grubを編集して nomodeset をGRUB_CMDLINE_LINUXに追加してください:
GRUB_CMDLINE_LINUX="nomodeset"
- それから、root で次を実行して下さい:
# grub-mkconfig -o /boot/grub/grub.cfg
- Syslinux では、
/boot/syslinux/syslinux.cfgを編集して nomodeset をAPPEND行に追加してください、例:
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 パッケージをインストールしてください。
問題がある場合は、トラブルシューティングを見て下さい。
カスタムカーネル
カスタムカーネルで catalyst をインストールしたい場合、catalyst-$kernel パッケージを自分でビルドする必要があります:
- Catalyst から
PKGBUILDとcatalyst.installファイルを取得してください。 - PKGBUILD を編集してください。2つ修正が必要です:
-
pkgname=catalystをpkgname=catalyst-$kernel_nameに変更してください、$kernel_name はあなたが自由に決めてください (例: custom, mm, themostawesomekernelever)。 -
linuxの依存を$kernel_nameに変更してください。
-
- パッケージをビルドしてインストールしてください。
makepkg -iかmakepkgを実行してからpacman -U pkgname.pkg.tar.gzを実行して下さい。
PowerXpress サポート
PowerXpress テクノロジを使うことでノートブックで内蔵グラフィックス (IGP) と外付け (ディスクリート) グラフィックスの2つのグラフィックカードを切り替えることができるようになり、バッテリー寿命を伸ばしつつ 3D レンダリングのパフォーマンスを向上させることが可能です。
この機能を Arch で使うために必要なことは:
- AUR から catalyst-total-pxp パッケージを入手・ビルドする、もしくは
- [catalyst] リポジトリから catalyst-utils-pxp パッケージをインストールする (必要ならば lib32-catalyst-utils-pxp も)。
Intel の IGP に切り替えるには mesa-libgl パッケージと Intel のドライバー (xf86-video-intel と intel-dri) をインストールする必要があります。
以下のコマンドを使うことで、内蔵・ディスクリート 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.
使用方法:
# pxp_switch_catalyst amd # pxp_switch_catalyst intel
Intel のドライバーを使って X を実行している時に問題が発生する場合は "UXA" アクセラレーション の強制を試して下さい; Intel の GPU 用の xorg.conf に、以下のように Option "AccelMethod" "uxa" を指定するだけです:
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-hook はシステムをシャットダウン・再起動した時に (アップデートの後など、必要な場合にのみ) 自動的に fglrx モジュールをリビルドする systemd サービスです。
このパッケージを使う前に base-devel グループと linux-headers パッケージ (あなたの使っているカーネルに対応するもの) がインストールされているか確認してください。
自動アップデートを有効にするには、catalyst-hook.service を有効にしてください:
# systemctl enable catalyst-hook # systemctl start catalyst-hook
このパッケージを使って fglrx モジュールを手動でビルドすることもできます。カーネルが更新された後に catalyst_build_module スクリプトを実行するだけです:
# 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:
- As root:
catalyst_build_module remove. This will remove all unusedcatalyst-{kernver}packages. - 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 usingcatalyst_build_module all. - 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:
- you can use unprivileged user to build the package;
- it is building modules in a fakeroot environment;
- it is not throwing files here and there, pacman always knows where they are;
- all you have to do is to remember to use it
OpenCL や OpenGL を使った開発
数年前から AMD は OpenCL・OpenGL 開発のためのツールを開発しています。
現在"ヘテロジニアスコンピューティング"の名のもとに AMD はそれらの多くを提供しており、ありがたいことにコンピューティングツールのほとんどが 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 は 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.
Aparapi については ここ に詳しい情報が書かれています。
amdapp-sdk (旧名 amdstream)
AMD APP Software Development Kit (SDK) は AMD によって作成された完全な開発プラットフォームで、これを使えば AMD APP テクノロジーによるアクセラレーションが効いたアプリケーションを簡単に素早く開発することができます。あなたの C/C++ アプリケーションで OpenCL, Bolt, C++ AMP を使ったアクセラレーションがすぐ始められるように、この SDK ではサンプルやドキュメント、その他素材を提供しています。
バージョン 2.8 から amdapp-sdk は aparapiUtil と aparapi のサンプルを提供しています。パッケージは [catalyst] リポジトリから利用可能です; amdapp-aparapi パッケージに依存しています。AUR のパッケージは aparapi のアディションが必要かどうか決めることができます。
バージョン 2.8 からプロファイラ機能は CodeXL に移され提供されなくなりました。
AMD APP SDK については ここ から詳しい情報を見ることができます。
amdapp-codexl
CodeXL は OpenCL と OpenGL のデバッガとプロファイラで、静的な OpenCL カーネルアナライザが付属しています。有名な gDEBugger の上で動くように書かれた GUI アプリケーションであり、x86_64 でだけ利用可能です。
CodeXL についての詳細は ここ にあります。
機能
ティアフリーレンダリング
Catalyst 11.1 にある、Tear Free Desktop 機能は 2D, 3D そして動画アプリケーションのティアリングを減らします。トリプルバッファリングと垂直同期を追加しているようです。GPU 処理が増えるので注意してください。
'Tear Free Desktop' を有効にするには amdcccle を実行して: Display Options → Tear Free。
もしくは root で次を実行して下さい:
# aticonfig --set-pcs-u32=DDX,EnableTearFreeDesktop,1
無効にするには、また amdcccle を使うか、次を 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-video, 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-video 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)
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
GPU/Mem の周波数、温度、ファンスピード、オーバークロックユーティリティ
GPU/Mem クロックを取得するには: $ aticonfig --od-getclocks
ファンのスピードを取得するには: $ aticonfig --pplib-cmd "get fanspeed 0"
温度を取得するには: $ aticonfig --odgt
ファンのスピードを設定するには: $ aticonfig --pplib-cmd "set fanspeed 0 50" Query Index: 50, Speed in percent
オーバークロックやアンダークロックをする場合 ATi Overclocking Utility (とてもシンプルで、動かすには qt が必要です) のような GUI を使うのが簡単です。古くなっているかもしれませんが、ここ から入手することができます。
また、このような操作をするためのより複雑なユーティリティとして AMDOverdriveCtrl があります。ホームページは ここ で AUR か Vi0L0 の非公式リポジトリから Arch パッケージをビルドできます。
Double Screen (Dual Head / Dual Screen / Xinerama)
Introduction
- 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 Catalyst Control Center
ATI によって提供されているとても便利な GUI ツールで、出来る限り試す価値があります。起動するには、ターミナルを開いて次のコマンドを実行してください:
$ {kdesu/gksu} amdcccle
インストール
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
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.
アンインストール
ドライバーが動作しなかったりオープンソースドライバーを試したい場合は、catalyst と catalyst-utils パッケージを削除してください。catalyst-generator, catalyst-hook, lib32-catalyst-utils パッケージがインストールされている場合はこれらも削除するべきです。
また、以下の手順に従って下さい:
-
/etc/modprobe.d/blacklist-radeon.confファイルがある場合、削除する。もしくはファイルの中のblacklist radeonという行をコメントアウトする。 -
/etc/modules-load.d下にブート時にfglrxモジュールをロードするファイルがある場合は、ファイルを削除するかfglrxを含む行をコメントアウトする。 -
/etc/X11/xorg.confを削除するかバックアップする。 - catalyst-hook パッケージをインストールしていた場合は、systemd サービスを無効にしておく。
- catalyst-generator パッケージをインストールしていた場合、パッケージの削除スクリプトが動作しない場合を考えて
/etc/rc.confの "MODULES" から "fglrx" を削除しておいてください。 - 設定ファイルでカーネルパラメータの "nomodeset" オプションを使っていて KMS をこれから使う場合、そのオプションを削除する。
- 他のドライバーをインストールする前に再起動をする。
トラブルシューティング
コマンドラインでしか起動できない場合、おそらく /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
何が起こっているかわからない場合は、最初にフォーラムを検索してください。それから thread specific to ATI/AMD にメッセージを投稿してください。xorg.conf や上のコマンドで得られた情報を加えるようにしましょう。
3D の Wine アプリケーションがフリーズする
3D の Wine アプリケーションを使っていてハングする場合、TLS を無効にする必要があります。aticonfig を使うか /etc/X11/xorg.conf を編集してください。aticonfig を使う場合:
# aticonfig --tls=off
/etc/X11/xorg.conf を編集する場合; まず root でファイルを開いて Device セクションに Option "UseFastTLS" "off" を追加してください。
解決法のどちらかを行った後、X を再起動すれば変更が適用されます。
ビデオカラーの問題
vaapi:gl を使って動画のちらつきを減らすことができますが、ビデオアクセラレーションは効きません:
-
-vo vaapiスイッチを付けずに mplayer を実行する。
- smplayer を起動して Options → Preferences → Advanced → Options for MPlayer → Options: -vo vaapi から
-vo vaapiを削除する。
さらに smplayer では安全にスクリーンショットをオンにできるようになります。
KWin とコンポジット
OpenGL でのレンダリングが遅い場合 XRender を使うといいかもしれません。ただし、カードによっては XRender は OpenGL よりも遅くなります。 また XRender を使うことで画面が (例えば Konsole をリサイズした時に) 乱れる問題が解決することもあります。
再起動したり startx した後に真っ黒な画面で完全にロックしたりハングアップする
ブートローダーのカーネルオプション行に nomodeset オプションをちゃんと追加したかどうか確かめて下さい (#kernel mode setting を無効化を参照)。
レガシードライバー (catalyst-hd234k) を使っていて黒画面が出る場合は、#xorg111 を使って xorg-server を 1.11 にダウングレードしてみてください。
欠陥のある ACPI ハードウェアコール
fglrx がシステムの ACPI ハードウェアコールときちんと連携できずに、fglrx が自動で無効になって画面が表示されなくなることがあります。
このような場合、次を実行してみて下さい:
$ aticonfig --acpi-services=off
ログアウトした後に KDM が表示されない
Catalyst プロプライエタリドライバーを動かしていて、ログアウトしたとき予期される KDM 画面の代わりにコンソール (tty1) が表示される場合、ログアウトする度に X サーバーを再起動するよう KDM を設定する必要があります:
$ sudo nano /usr/share/config/kdm/kdmrc
[X-:*-Core] と書かれたセクションの下にある次の行をアンコメントしてください:
TerminateServer=True
これで KDE からログアウトした時 KDM が表示されるはずです。
ダイレクトレンダリングが機能しない
この問題はプロプライエタリの Catalyst ドライバーを使っていると起こることがあります。
ダイレクトレンダリングに問題が起こるときは、コマンドプロンプトから次を実行してください:
$ LIBGL_DEBUG=verbose glxinfo > /dev/null
通常、このコマンドによって出力されたメッセージの最初の方に、どうしてダイレクトレンダリングができなかったのかを説明しているエラーメッセージが表示されます。
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 yourfglrx.conffile in/etc/modules-load.dand 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/profileis sourced every time you log in. This is usually accomplished by addingsource /etc/profileinto~/.xsessionor~/.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 thecatalystpackage.
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
ハイバネート・スリープの問題
Video fails to resume from suspend2ram
フレームバッファが有効になっている場合 ATI のプロプライエタリ Catalyst ドライバーはサスペンド状態から復帰できません。フレームバッファを無効にするには、カーネルオプションに vga=0 を追加してください。例えば Grub Legacy の /boot/grub/menu.lst の場合:
kernel /vmlinuz-linux root=/dev/sda3 resume=/dev/sda2 ro quiet vga=0
他のブートローダーでこれをどこに追加すればいいか知るには、#kernel mode setting を無効化 を見て下さい。
システムがフリーズする・ハードが固まる
- 従来
radeonfbフレームバッファドライバーがこのような問題を引き起こすとして知られてきました。あなたのカーネルが radeonfb サポートを含めている場合、他のカーネルを使って問題が解決しないか確かめて下さい。 - DE を終了するとき (シャットダウン、サスペンド、tty の切り替えなど) にシステムがフリーズする場合、おそらく KMS の無効化を忘れています (#kernel mode setting を無効化を見て下さい)。
ハードウェアが衝突する
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.
動画を再生している時に一時的にハングする
プロプライエタリの Catalyst を使っていると起こる問題です。
mplayer の再生時、数秒間ランダムに一時的なハングアップが起こる場合、/var/log/messages.log に以下のような出力がされてないか確認してください:
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"
次を実行した時に:
# aticonfig --initial
AMD GPU (または APU) を使っているのに次のメッセージが表示される場合:
aticonfig: No supported adaptaters detected
手動で etc/X11/xorg.conf ファイルにデバイスを設定したり、昔の問題なく動いていた /etc/ati/control ファイルをコピーする (推奨 - ウォーターマークの問題も解決します) ことで Catalyst を動かすことができるかもしれません。
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.
Chromium の WebGL サポート
Google は Chromium/Chrome ブラウザの中で Linux の Catalyst ドライバーを WebGL サポートから外しています。
WebGL をオンにするには /usr/share/applications/chromium.desktop ファイルを編集して次のように --ignore-gpu-blacklist フラグを Exec 行に追加してください:
Exec=chromium %U --ignore-gpu-blacklist
コンソールから同じ --ignore-gpu-blacklist フラグを使って chromium を実行することもできます:
$ chromium --ignore-gpu-blacklist
Adobe の flashplugin を使ってフラッシュビデオを見ているとラグ・フリーズが発生する
/etc/adobe/mms.cfg を以下のように編集してください:
#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.
GNOME3 でウィンドウを移動するとラグ・遅れが発生する
以下の方法が、ほとんどの人に効果があります。
次の行を ~/.profile か /etc/profile に追加してください:
export CLUTTER_VBLANK=none
X サーバーを再起動するかシステムを再起動してください。
フル画面の 1920x1080 の解像度が使われない (アンダースキャン)
amdcccle GUI を使って、ディスプレイを選択して調整を選び、アンダースキャンを 0% (aticonfig のデフォルトのアンダースキャンは 15% です) に設定してください。
もしくは、aticonfig を使って同じようにアンダースキャンを無効にすることもできます:
# 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.
VariBright 機能を無効にする
次のコマンドを実行すれば VariBright が無効になります:
# aticonfig --set-pcs-u32=MCIL,PP_UserVariBrightEnable,0
Hybrid/PowerXpress: ディスクリート 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
X セッションから TTY に切り替えると画面が表示されなくなる
catalyst 13.2 beta で起こる、この"機能"の回避策は vga=792 のような vga= カーネルオプションを使うことです。サポートされている解像度のリストは次のコマンドで調べられます:
hwinfo --framebuffer
下の方から一つ選んで、ブートローダーの kernel line にコピーペーストしてください。vga=0x03d4 みたいな感じです。
TV 画面の周りに黒い枠が表示される
この問題は HDMI を使って TV に表示をしていると発生することがあります。 catalyst ドライバーを使っている場合、xrandr でこれを解決することはできません (xf86-video-ati では可能です)。 解決方法はオーバースキャンを無効にすることです。
sudo aticonfig --set-pcs-val=MCIL,DigitalHDTVDefaultUnderscan,0