AMDGPU

提供: ArchWiki
2017年3月14日 (火) 00:20時点におけるKusakata (トーク | 投稿記録)による版 (同期)
ナビゲーションに移動 検索に移動

関連記事

amdgpu は最新の AMD Radeon グラフィックカードのオープンソースグラフィックドライバーです。

現在のところ、amdgpu がサポートしているのは Volcanic IslandsSea IslandsSouthern Islands ファミリーのカードだけです。Southern Islands は実験的にサポートしています。GCN 以前の GPU をサポートする計画はありません。

サポートされていない AMD/ATI のビデオカードを利用している場合は Radeon オープンソースドライバーAMD のプロプライエタリドライバーを使ってください。

インストール

ノート: プロプライエタリの Catalyst ドライバーから移行する場合、先に AMD Catalyst#アンインストール を読んでください。

xf86-video-amdgpu パッケージをインストールしてください。2D アクセラレーションのための DDX ドライバーが含まれており、依存パッケージとして mesa もインストールされます。mesa には 3D アクセラレーションのための DRI ドライバーが含まれています。

x86_64 環境で32ビットのサポートが必要な場合、multilib リポジトリから lib32-mesa-libgl もインストールしてください。

ビデオデコードのハードウェア支援機能は mesa-vdpaulib32-mesa-vdpau パッケージをインストールすることで使えます。

ノート: xf86-video-amdgpu パッケージは Xorg のアクセラレーションにのみ使用され絶対に必要というわけではありません。

AMDGPU PRO

警告: Arch Linux は公式にはサポートされていません。

AMD はオープンソースの AMDGPU カーネルドライバーの上で動作するバイナリのユーザーランドドライバー AMDGPU PRO を提供しています。オープンソースとバイナリのハイブリッドということで、ユーザー空間のバイナリ部分は変えずに、(カーネルや Xorg のアップデート時など) 必要なときにカーネル内のコンポーネントを Arch Linux のメンテナが再コンパイルすることが可能となっています。これにより、新しいバージョンのカーネルや Xorg がリリースされたときに AMD が提供しているドライバーが使えなくなってしまうという問題にもう悩まされなくなります (昔の AMD Catalyst ドライバーではこの問題がどうしてもつきまとっていました)。ハイブリッドシステムの詳しい解説は、この記事 を見てください。

AMDGPU PRO ドライバーは OpenGL, OpenCL, Vulkan, VDPAU をサポートしており、オープンソースドライバーよりも高い性能を発揮します。

詳しくは 最初のリリースノートPhoronix フォーラムでのアナウンス を参照してください。

amdgpu-pro のパッケージは AUR に存在します (amdgpu-proAUR)。問題の報告やプルリクエストは https://github.com/Corngood/archlinux-amdgpu を見てください。

オープンソースの AMDGPU ドライバーとプロプライエタリな OpenCL コンポーネントを使いたい場合は opencl-amdAUR パッケージをインストールしてください。

ロード

amdgpu カーネルモジュールはシステムの起動時に自動的にロードされます。

ロードされない場合:

  • 最新の linux-firmware パッケージがインストールされていることを確認してください。AMDGPU ドライバーは各モデルの最新ファームウェアがないと起動できません。
  • カーネルパラメータnomodesetvga= を指定していないことを確認してください。amdgpuKMS を必要とします。
  • カーネルモジュールのブラックリストamdgpu が無効になっていないか確認してください。

Early KMS の有効化

ヒント: 解像度に問題が発生する場合、Kernel Mode Setting#モードの強制と EDID を読んでください。

Kernel Mode Setting (KMS) は radeon ドライバーによってサポートされており、必須であり、デフォルトで有効になっています。

普通 KMS は initramfs の後に初期化されます。ただし、initramfs の段階で KMS を有効化することも可能です。/etc/mkinitcpio.confMODULES 行に 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-APIVDPAU をインストールすることでハードウェアアクセラレーションによる動画のエンコード・デコードを行うことができます。

Sea Islands や Southern Islands カードで amdgpu を使用する

Arch Linux の linux パッケージは (バージョン 4.9 から) デフォルトで Southern Islands と Sea Island のサポートが有効になっています (CONFIG_DRM_AMDGPU_CIK=YCONFIG_DRM_AMDGPU_SI=Y [1])。

これらかのカードを使用する場合、デフォルトのドライバーでは旧式の radeon ドライバーが使われます。amdgpu ドライバーを使いたい場合は radeon ドライバーを無効化してください。

radeon ドライバーの無効化

カーネルをビルドするときにカードの AMDGPU を手動で有効にしても CIK と SI カードはデフォルトでは radeon ドライバーを使用します。

amdgpu モジュールを使うには radeon モジュールがロードされないようにブラックリストに追加してください:

/etc/modprobe.d/radeon.conf
blacklist radeon

トラブルシューティング

HDMI/DP の音声が出力されない

オープンソースの AMDGPU ドライバーは 開発途上 の DAL のコードに依存しています。HDMI や DisplayPort から音声を出力するには現在のところ AMDGPU-PRO ドライバーをインストールする他ありません。

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