AMDGPU
関連記事
amdgpu は最新の AMD Radeon グラフィックカードのオープンソースグラフィックドライバーです。
現在のところ、amdgpu がサポートしているのは Volcanic Islands と Sea Islands と Southern Islands ファミリーのカードだけです。Southern Islands は実験的にサポートしています。GCN 以前の GPU をサポートする計画はありません。
サポートされていない AMD/ATI のビデオカードを利用している場合は Radeon オープンソースドライバーや AMD のプロプライエタリドライバーを使ってください。
目次
インストール
xf86-video-amdgpu パッケージをインストールしてください。2D アクセラレーションのための DDX ドライバーが含まれており、依存パッケージとして mesa もインストールされます。mesa には 3D アクセラレーションのための DRI ドライバーが含まれています。
x86_64 環境で32ビットのサポートが必要な場合、multilib リポジトリから lib32-mesa もインストールしてください。
ビデオデコードのハードウェア支援機能は mesa-vdpau と lib32-mesa-vdpau パッケージをインストールすることで使えます。
radeon のブラックリスト
linux パッケージでは Southern Islands (SI) や Sea Islands (CIK) カードの AMDGPU サポートを有効になっています。カーネルを自分でビルド・コンパイルするときはコンフィグで CONFIG_DRM_AMDGPU_SI=Y
や CONFIG_DRM_AMDGPU_CIK=Y
を有効にしてください。
カーネルによる SI/CIK の AMDGPU サポートが有効になっていても、依然として AMDGPU ドライバーの代わりに radeon ドライバーが使われることがあります。
amdgpu
モジュールを強制的に使用するには radeon
モジュールをブラックリストに追加してください:
/etc/modprobe.d/radeon.conf
blacklist radeon
AMDGPU PRO
AMD はオープンソースの AMDGPU カーネルドライバーの上で動作するバイナリのユーザーランドドライバー AMDGPU PRO を提供しています。AMDGPU PRO ドライバーは OpenGL, OpenCL, Vulkan, VDPAU をサポートしており、オープンソースドライバーよりも高い性能を発揮します。詳しくは 最初のリリースノート と Phoronix フォーラムでのアナウンス を参照してください。
公式の AMDGPU PRO ドライバーにパッチを適用したバージョンが amdgpu-proAUR パッケージでインストールできます。
ロード
amdgpu
カーネルモジュールはシステムの起動時に自動的にロードされます。
ロードされない場合:
- 最新の linux-firmware パッケージがインストールされていることを確認してください。AMDGPU ドライバーは各モデルの最新ファームウェアがないと起動できません。
- カーネルパラメータに
nomodeset
やvga=
を指定していないことを確認してください。amdgpu
は KMS を必要とします。 - カーネルモジュールのブラックリストで
amdgpu
が無効になっていないか確認してください。
Early KMS の有効化
Kernel Mode Setting (KMS) は radeon ドライバーによってサポートされており、必須であり、デフォルトで有効になっています。
普通 KMS は initramfs の後に初期化されます。ただし、initramfs の段階で KMS を有効化することも可能です。/etc/mkinitcpio.conf
の MODULES
行に amdgpu
モジュールを追加してください:
MODULES="... amdgpu ..."
そして、initramfs を再生成してください:
# mkinitcpio -p linux
変更は再起動後に適用されます。
Xorg の設定
Xorg は自動的にドライバーをロードしてモニターの EDID を認識して最大解像度を設定します。必要な設定はドライバーのチューニングだけです。
手動で設定したい場合、/etc/X11/xorg.conf.d/20-amdgpu.conf
を作成して、以下を記述してください:
Section "Device" Identifier "AMD" Driver "amdgpu" EndSection
上記のセクションを使って、ドライバーの設定を変更したり機能を有効にすることができます。
パフォーマンスチューニング
ビデオアクセラレーションの有効化
VA-API や VDPAU をインストールすることでハードウェアアクセラレーションによる動画のエンコード・デコードを行うことができます。
トラブルシューティング
HDMI/DP の音声が出力されない
オープンソースの AMDGPU ドライバーは 開発途上 の DAL のコードに依存しています。HDMI や DisplayPort から音声を出力するには現在のところ AMDGPU-PRO ドライバーをインストールする他ありません。
Southern Islands (SI) や Sea Islands (CIK) GPU で Xorg が起動できない
radeon
と amdgpu
両方のモジュールが起動時にロードされていることが原因かもしれません。radeon のブラックリストを試してみてください。
Xorg やアプリケーションが起動しない
Xorg の色深度を 16 や 32 に設定すると以下のような問題が発生します:
(EE) AMDGPU(0): [DRI2] DRI2SwapBuffers: drawable has no back or front?" error after opening glxgears
で OpenGL アプリがクラッシュする。(EE) AMDGPU(0): Given depth (32) is not supported by amdgpu driver
エラーで Xorg が起動しない。
(/etc/X11/xorg.conf.d/10-screen.conf
ファイルの) "screen" セクションに以下を追加して標準的な色深度である 24 を使うようにしてください:
Section "Screen" DefaultDepth 24 SubSection "Display" Depth 24 EndSubSection EndSection
周波数を上げたときに画面が崩れる問題が起こる
ディスプレイの周波数を 120Hz 以上に設定したときにディスプレイに乱れが発生する場合、メモリクロックや GPU クロックが低すぎてディスプレイに応答できていません。
以下を実行することで解決できます [1]:
# echo high > /sys/class/drm/card0/device/power_dpm_force_performance_level
または:
# echo low > /sys/class/drm/card0/device/power_dpm_force_performance_level
radeon-profile-gitAUR や radeon-profile-daemon-gitAUR を使うことで GUI で "power_dpm" を管理することもできます [2]。