「AMDGPU」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(関連記事から AMD Catalyst を削除)
18行目: 18行目:
   
 
== インストール ==
 
== インストール ==
 
{{Note|プロプライエタリの Catalyst ドライバーから移行する場合、先に [[AMD Catalyst#アンインストール]] を読んでください。}}
 
   
 
{{Pkg|mesa}} パッケージを[[インストール]]してください。3D アクセラレーションのための DRI ドライバーが含まれています。
 
{{Pkg|mesa}} パッケージを[[インストール]]してください。3D アクセラレーションのための DRI ドライバーが含まれています。
   
* x86_64 環境で32ビットのサポートが必要な場合、[[multilib]] リポジトリから {{Pkg|lib32-mesa}} パッケージもインストールしてください。
+
* 32ビットアプリケーションのサポートに関しては、[[multilib]] リポジトリから {{Pkg|lib32-mesa}} パッケージもインストールしてください。
* {{Pkg|xf86-video-amdgpu}} パッケージには [[Xorg]] の 2D アクセラレーションのための DDX ドライバーが含まれています
+
* ([[Xorg]] の 2D アクセラレーションを提供する) DDX ドライバに関しては、{{Pkg|xf86-video-amdgpu}} パッケジをインストールしください。
  +
* [[Vulkan]] のサポートに関しては、{{Pkg|vulkan-radeon}} か {{Pkg|amdvlk}} パッケージをインストールしてください。オプションで、32ビットアプリケーションのサポートのための {{Pkg|lib32-vulkan-radeon}} か {{Pkg|lib32-amdvlk}} パッケージをインストールしてください。wine/proton をつかって DirectX12 のゲームを実行する用途においては、{{Pkg|vulkan-radeon}} を優先してください。{{Pkg|amdvlk}} はその用途においては壊れているからです。
* [[Vulkan]] のサポートが必要な場合は {{Pkg|vulkan-radeon}} パッケージをインストールしてください。
 
   
[[#ビデオアクセラレーションの有効化|ビデオデコードのハードウェア支援]]機能 VA-API を使用する場合 {{Pkg|libva-mesa-driver}} と {{Pkg|lib32-libva-mesa-driver}} パッケージまたは {{Pkg|libva-vdpau-driver}} をインストールすることで使えます。VDPAU を使用する場合は {{Pkg|mesa-vdpau}} と {{Pkg|lib32-mesa-vdpau}} パッケージをインストールすることで使えます。
+
[[#ビデオアクセラレーション|ビデオデコードのハードウェア支援]]のサポートVA-API に関しては {{Pkg|libva-mesa-driver}} と {{Pkg|lib32-libva-mesa-driver}} により提供されており、VDPAU に関しては {{Pkg|mesa-vdpau}} と {{Pkg|lib32-mesa-vdpau}} により提供されています。
   
 
=== 実験的 ===
 
=== 実験的 ===
   
一部のユーザーにとっては、 mesa のアップストリーム実験ビルドを使用して、標準の mesa パッケージに含まれていない AMDNavi の改善などの機能を有効にする価値があるかもしれません。
+
一部のユーザーにとっては、 mesa のアップストリーム実験ビルドを使用して、標準の mesa パッケージに含まれていない AMD Navi の改善などの機能を有効にする価値があるかもしれません。
   
 
{{AUR|mesa-git}} パッケージをインストールします。これは 3D アクセラレーション用の DRI ドライバーを提供します。
 
{{AUR|mesa-git}} パッケージをインストールします。これは 3D アクセラレーション用の DRI ドライバーを提供します。
   
* 32 ビットアプリケーションサポートする場合は、 ''mesa-git'' リポジトリまたは [[AUR]] から {{AUR|lib32-mesa-git}} パッケージもインストールします
+
* 32 ビットアプリケーションサポートに関しては、''mesa-git'' リポジトリまたは [[AUR]] から {{AUR|lib32-mesa-git}} もインストールしてください
* DDX ドライバー ([[Xorg]] で 2D アクセラレーションを提供) の場合は、 {{AUR|xf86-video-amdgpu-git}} パッケージをインストールします
+
* ([[Xorg]] で 2D アクセラレーションを提供する) DDX ドライバに関しては、{{AUR|xf86-video-amdgpu-git}} パッケージをインストールしてください
*以下の ''mesa-git'' リポジトリを使用した [[Vulkan]] サポートについては、''vulkan-radeon-git'' パッケージをインストールしてください。オプションで、32 ビットアプリケーションをサポートするために ''lib32-vulkan-radeon-git '' パッケージをインストールします AUR から {{AUR|mesa-git}} をビルドする場合、これは必要ありません。
+
* 以下の ''mesa-git'' リポジトリを使用する [[Vulkan]] サポートに関しては、''vulkan-radeon-git'' パッケージをインストールしてください。オプションで、32 ビットアプリケーションをサポートするために ''lib32-vulkan-radeon-git'' パッケージをインストールしてください。AUR から {{AUR|mesa-git}} をビルドする場合、これは必要ありません。
   
{{Note|X を起動するには、 LibLLVM をシンボリックリンクする必要がある場合があります。例:{{ic|ln -s /usr/lib/libLLVM-10git.so /usr/lib/libLLVM-10svn.so}}}}
+
{{Note|X を起動するには、 LibLLVM をシンボリックリンクする必要がある場合があります。例: {{ic|ln -s /usr/lib/libLLVM-10git.so /usr/lib/libLLVM-10svn.so}}}}
   
{{Tip| {{AUR|mesa-git}} パッケージのコンパイルプロセスを実行したくないユーザーは、[[非公式ユーザーリポジトリ#mesa-git|mesa-git]] 非公式リポジトリを使用できます。}}
+
{{Tip|{{AUR|mesa-git}} パッケージのコンパイルプロセスを実行したくないユーザーは、[[非公式ユーザーリポジトリ#mesa-git|mesa-git]] 非公式リポジトリを使用できます。}}
   
=== Southern Islands (SI) と Sea Islands (CIK) のサポート有効化 ===
+
=== Southern Islands (SI) と Sea Islands (CIK) のサポート有効化 ===
   
{{Pkg|linux}} パッケージは、Southern Islands(SI、つまり GCN 1)と Sea Islands(CIK、つまり GCN 2)のカードの AMDGPU サポートを有効にします。 [[kernel]] をビルドまたはコンパイルするときは、{{ic|1=CONFIG_DRM_AMDGPU_SI=Y}} および/または {{ic|1=CONFIG_DRM_AMDGPU_CIK=Y}} を構成設定する必要があります。
+
{{Pkg|linux}} パッケージは、Southern Islands(HD 7000 Series、SI、つまり GCN 1)と Sea Islands(HD 8000 Series、CIK、つまり GCN 2)のカードの AMDGPU サポートを有効にします。{{ic|amdgpu}} カーネルドライバは [[radeon]] より前にローされる必要があります。どのカーネルドライバがロードされていは {{ic|lspci -k}} で確認できます。以下のように出力されるはずです:
   
  +
{{hc|$ lspci -k|
==== 正しいモジュール順序を指定してください ====
 
  +
...
  +
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Curacao PRO [Radeon R7 370 / R9 270/370 OEM]
  +
Subsystem: Gigabyte Technology Co., Ltd Device 226c
  +
Kernel driver in use: amdgpu
  +
Kernel modules: radeon, amdgpu
  +
...
  +
}}
   
  +
{{ic|amdgpu}} ドライバが使用されていない場合、次のセクションの指示に従ってください。
カーネルによって SI/CIK の AMDGPU サポートが有効になっている場合でも、[[radeon]] ドライバーが {{ic|amdgpu}} ドライバーの前にロードされる場合があります。
 
   
  +
==== amdgpu ドライバをロード ====
{{ic|amdgpu}} が [[Mkinitcpio#MODULES]] 配列の最初のモジュールとして設定されていることを確認してください。
 
例えば {{ic|1=MODULES=(amdgpu radeon)}}
 
 
==== 必要なモジュールパラメータを設定します ====
 
   
 
{{ic|amdgpu}} モジュールと {{ic|radeon}} モジュールの両方の [[モジュールパラメータ]] は {{ic|1=cik_support=}} と {{ic|1=si_support=}} です。
 
{{ic|amdgpu}} モジュールと {{ic|radeon}} モジュールの両方の [[モジュールパラメータ]] は {{ic|1=cik_support=}} と {{ic|1=si_support=}} です。
60行目: 62行目:
 
これらは、カーネルパラメータまたは ''modprobe'' 構成ファイルで設定する必要があり、カードの GCN バージョンによって異なります。
 
これらは、カーネルパラメータまたは ''modprobe'' 構成ファイルで設定する必要があり、カードの GCN バージョンによって異なります。
   
{{Tip|[[dmesg]] は、使用する正しいカーネルパラメータを示している可能性があります: {{ic|1=[..] amdgpu 0000:01:00.0: Use radeon.cik_support=0 amdgpu.cik_support=1 to override}}.}}
+
{{Tip|[[dmesg]] は、使用する正しいカーネルパラメータを示している可能性があります: {{ic|1=[..] amdgpu 0000:01:00.0: Use radeon.cik_support=0 amdgpu.cik_support=1 to override}}}}
   
===== カーネルコマンドラインでモジュールパラメータを設定します =====
+
===== カーネルコマンドラインでモジュールパラメータを設定 =====
   
次のいずれかを設定します [[カーネルパラメータ]]
+
次のいずれか[[カーネルパラメータ]]を設定してください:
   
 
* Southern Islands (SI): {{ic|1=radeon.si_support=0 amdgpu.si_support=1}}
 
* Southern Islands (SI): {{ic|1=radeon.si_support=0 amdgpu.si_support=1}}
 
* Sea Islands (CIK): {{ic|1=radeon.cik_support=0 amdgpu.cik_support=1}}
 
* Sea Islands (CIK): {{ic|1=radeon.cik_support=0 amdgpu.cik_support=1}}
   
===== modprobe.d でモジュールパラメータします =====
+
==== 正しいモジュール順序定 ====
  +
  +
{{ic|amdgpu}} が [[Mkinitcpio#MODULES]] 配列の最初のモジュールとして設定されていることを確認してください。
  +
例えば {{ic|1=MODULES=(amdgpu radeon)}}
  +
  +
===== modprobe.d でモジュールパラメータを設定 =====
   
 
{{ic|/etc/modprobe.d/}} に構成 [[modprobe]] ファイルを作成します。構文の詳細については、 {{man|5|modprobe.d}} を参照してください。
 
{{ic|/etc/modprobe.d/}} に構成 [[modprobe]] ファイルを作成します。構文の詳細については、 {{man|5|modprobe.d}} を参照してください。
85行目: 92行目:
 
}}
 
}}
   
{{ic|modconf}} が {{ic|/etc/mkinitcpio.conf}} の {{ic|HOOKS}} 配列にあり [[initramfs]] を再生成することを確認してください。
+
{{ic|modconf}} が {{ic|/etc/mkinitcpio.conf}} の {{ic|HOOKS}} 配列にあり [[Initramfs を再生成する]]ことを確認してください。
  +
  +
===== amdgpu ドライバをサポートするカーネルをコンパイル =====
  +
  +
[[カーネル]]をビルド/コンパイルする際、{{ic|1=CONFIG_DRM_AMDGPU_SI=Y}} かつ/または {{ic|1=CONFIG_DRM_AMDGPU_CIK=Y}} を config で設定する必要があります。
  +
  +
==== 起動時の radeon のロードを完全に無効化 ====
  +
  +
カーネルは、関連する特定のグラフィックチップに応じて {{ic|radeon}} を依然としてプローブ・ロードする場合がありますが、{{ic|amdgpu}} が期待通りに動作することを確認した後はこのモージュルをロードする必要はありません。それぞれのステップの間で再起動して、それが機能することを確認した後で次のステップに進んでください:
  +
  +
# カーネルコマンドラインの方法でモジュールパラメータを使い、{{ic|amdgpu}} が期待通りに機能することを確認する
  +
# {{ic|1=MODULES=(amdgpu)}} mkinitcpio の方法使う。ただし、{{ic|radeon}} をその設定に追加しない。
  +
# デスクトップにログインしたあとで、{{ic|1=modprobe -r radeon}} が、対応するカーネルモジュールをきれいに削除することをテストする
  +
# {{ic|radeon}} モジュールをブラックリスト化して、第2ステージの起動中にモジュールがカーネルによってプローブされないようにする:
  +
  +
{{hc|/etc/modprobe.d/radeon.conf|2=
  +
blacklist radeon
  +
}}
  +
  +
これで、{{ic|lsmod}} と {{ic|dmesg}} は amdgpu ドライバのみがロードされていると出力するようになり、radeon が存在しないはずです。{{ic|1=/sys/modules/radeon}} ディレクトリも存在しないはずです。
  +
  +
=== ACO コンパイラ ===
  +
  +
[https://steamcommunity.com/games/221410/announcements/detail/1602634609636894200 ACO コンパイラ]はオープンソースのシェーダコンパイラで、[https://llvm.org/ LLVM コンパイラ] や [https://github.com/GPUOpen-Drivers/AMDVLK AMDVLK ドライバ]、[[wikipedia:Windows_10|Windows 10]] に直接対抗するために [[wikipedia:Valve_Corporation|Valve Corporation]] によって作成・開発されました。LLVM と AMDVLK よりも短いコンパイル時間と、ゲーム中のより良いパフォーマンスを提供します。
   
  +
いくつかのベンチマークは [https://itsfoss.com/linux-games-performance-boost-amd-gpu/ It's FOSS] や Phoronix [https://www.phoronix.com/scan.php?page=article&item=radv-aco-llvm&num=1 (1)] [https://www.phoronix.com/scan.php?page=article&item=radv-aco-gcn10&num=1 (2)] [https://www.phoronix.com/scan.php?page=article&item=mesa20radv-aco-amdvlk&num=1 (3)] で見られます。
=== Vega 以前のカードで AMD DC を有効にする ===
 
{{Note|AMD DC はカーネル 4.15 以上で使用できます。}}
 
 
AMD DC (ディスプレイコード) はアトミックなモードセッティングや HDMI/DP オーディオをサポートする新しいディスプレイスタックです。GCN5/Vega 以降のカードではデフォルトで有効になります。
 
   
  +
{{Pkg|mesa}} バージョン 20.2 より、ACO コンパイラはデフォルトで有効になっています。
旧式のカード (GCN2/CIK, GCN3/VI, GCN4/Polaris; GCN1/SI は未対応) で AMD DC を有効にするには {{ic|1=amdgpu.dc=1}} [[カーネルパラメータ]]を追加してください。詳しくは [https://www.phoronix.com/scan.php?page=news_item&px=AMDGPU-DC-Accepted こちらの記事] を参照。
 
   
 
== ロード ==
 
== ロード ==

2022年7月4日 (月) 09:32時点における版

関連記事

AMDGPUGraphics Core Next ファミリの AMD Radeon グラフィックカード向けのオープンソースグラフィックドライバです。

適切なドライバーの選択

お持ちのカードに応じて、Xorg#AMD で適切なドライバーを見つけてください。今の所、Southern Islands (SI) から Arctic Islands (AI) カード向けの Xorg radeon ドライバサポートがあります。AMD には GCN 以前の GPU をサポートする計画はありません。 サポートされない GPU を持っているユーザはオープンソースの radeon ドライバを使用できます。

インストール

mesa パッケージをインストールしてください。3D アクセラレーションのための DRI ドライバーが含まれています。

  • 32ビットアプリケーションのサポートに関しては、multilib リポジトリから lib32-mesa パッケージもインストールしてください。
  • (Xorg での 2D アクセラレーションを提供する) DDX ドライバに関しては、xf86-video-amdgpu パッケージをインストールしてください。
  • Vulkan のサポートに関しては、vulkan-radeonamdvlk パッケージをインストールしてください。オプションで、32ビットアプリケーションのサポートのための lib32-vulkan-radeonlib32-amdvlk パッケージをインストールしてください。wine/proton をつかって DirectX12 のゲームを実行する用途においては、vulkan-radeon を優先してください。amdvlk はその用途においては壊れているからです。

ビデオデコードのハードウェア支援のサポートは、VA-API に関しては libva-mesa-driverlib32-libva-mesa-driver により提供されており、VDPAU に関しては mesa-vdpaulib32-mesa-vdpau により提供されています。

実験的

一部のユーザーにとっては、 mesa のアップストリーム実験ビルドを使用して、標準の mesa パッケージに含まれていない AMD Navi の改善などの機能を有効にする価値があるかもしれません。

mesa-gitAUR パッケージをインストールします。これは 3D アクセラレーション用の DRI ドライバーを提供します。

  • 32 ビットアプリケーションのサポートに関しては、mesa-git リポジトリ、または AUR から lib32-mesa-gitAUR もインストールしてください。
  • (Xorg で 2D アクセラレーションを提供する) DDX ドライバに関しては、xf86-video-amdgpu-gitAUR パッケージをインストールしてください。
  • 以下の mesa-git リポジトリを使用する Vulkan サポートに関しては、vulkan-radeon-git パッケージをインストールしてください。オプションで、32 ビットアプリケーションをサポートするために lib32-vulkan-radeon-git パッケージをインストールしてください。AUR から mesa-gitAUR をビルドする場合、これは必要ありません。
ノート: X を起動するには、 LibLLVM をシンボリックリンクする必要がある場合があります。例: ln -s /usr/lib/libLLVM-10git.so /usr/lib/libLLVM-10svn.so
ヒント: mesa-gitAUR パッケージのコンパイルプロセスを実行したくないユーザーは、mesa-git 非公式リポジトリを使用できます。

Southern Islands (SI) と Sea Islands (CIK) のサポートを有効化

linux パッケージは、Southern Islands(HD 7000 Series、SI、つまり GCN 1)と Sea Islands(HD 8000 Series、CIK、つまり GCN 2)のカードの AMDGPU サポートを有効にします。amdgpu カーネルドライバは radeon より前にロードされる必要があります。どのカーネルドライバがロードされているかは lspci -k で確認できます。以下のように出力されるはずです:

$ lspci -k
...
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Curacao PRO [Radeon R7 370 / R9 270/370 OEM]
	Subsystem: Gigabyte Technology Co., Ltd Device 226c
	Kernel driver in use: amdgpu
	Kernel modules: radeon, amdgpu
...

amdgpu ドライバが使用されていない場合、次のセクションの指示に従ってください。

amdgpu ドライバをロード

amdgpu モジュールと radeon モジュールの両方の モジュールパラメータcik_support=si_support= です。

これらは、カーネルパラメータまたは modprobe 構成ファイルで設定する必要があり、カードの GCN バージョンによって異なります。

ヒント: dmesg は、使用する正しいカーネルパラメータを示している可能性があります: [..] amdgpu 0000:01:00.0: Use radeon.cik_support=0 amdgpu.cik_support=1 to override
カーネルコマンドラインでモジュールパラメータを設定

次のいずれかのカーネルパラメータを設定してください:

  • Southern Islands (SI): radeon.si_support=0 amdgpu.si_support=1
  • Sea Islands (CIK): radeon.cik_support=0 amdgpu.cik_support=1

正しいモジュール順序を指定

amdgpuMkinitcpio#MODULES 配列の最初のモジュールとして設定されていることを確認してください。 例えば MODULES=(amdgpu radeon)

modprobe.d でモジュールパラメータを設定

/etc/modprobe.d/ に構成 modprobe ファイルを作成します。構文の詳細については、 modprobe.d(5) を参照してください。

Southern Islands(SI)の場合はオプション si_support=1 を使用し、Sea Islands(CIK)の場合はオプション cik_support=1 を使用します。例:

/etc/modprobe.d/amdgpu.conf
options amdgpu si_support=1
options amdgpu cik_support=1
/etc/modprobe.d/radeon.conf
options radeon si_support=0
options radeon cik_support=0

modconf/etc/mkinitcpio.confHOOKS 配列にあり Initramfs を再生成することを確認してください。

amdgpu ドライバをサポートするカーネルをコンパイル

カーネルをビルド/コンパイルする際、CONFIG_DRM_AMDGPU_SI=Y かつ/または CONFIG_DRM_AMDGPU_CIK=Y を config で設定する必要があります。

起動時の radeon のロードを完全に無効化

カーネルは、関連する特定のグラフィックチップに応じて radeon を依然としてプローブ・ロードする場合がありますが、amdgpu が期待通りに動作することを確認した後はこのモージュルをロードする必要はありません。それぞれのステップの間で再起動して、それが機能することを確認した後で次のステップに進んでください:

  1. カーネルコマンドラインの方法でモジュールパラメータを使い、amdgpu が期待通りに機能することを確認する
  2. MODULES=(amdgpu) mkinitcpio の方法使う。ただし、radeon をその設定に追加しない。
  3. デスクトップにログインしたあとで、modprobe -r radeon が、対応するカーネルモジュールをきれいに削除することをテストする
  4. radeon モジュールをブラックリスト化して、第2ステージの起動中にモジュールがカーネルによってプローブされないようにする:
/etc/modprobe.d/radeon.conf
blacklist radeon

これで、lsmoddmesg は amdgpu ドライバのみがロードされていると出力するようになり、radeon が存在しないはずです。/sys/modules/radeon ディレクトリも存在しないはずです。

ACO コンパイラ

ACO コンパイラはオープンソースのシェーダコンパイラで、LLVM コンパイラAMDVLK ドライバWindows 10 に直接対抗するために Valve Corporation によって作成・開発されました。LLVM と AMDVLK よりも短いコンパイル時間と、ゲーム中のより良いパフォーマンスを提供します。

いくつかのベンチマークは It's FOSS や Phoronix (1) (2) (3) で見られます。

mesa バージョン 20.2 より、ACO コンパイラはデフォルトで有効になっています。

ロード

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

上記のセクションを使って、ドライバーの設定を変更したり機能を有効にすることができます。

TearFree レンダリング

TearFree は、ハードウェアのページめくりメカニズムを使用して、ティアリングを制御します。 このオプションが設定されている場合、プロパティのデフォルト値はそれに応じて オン または オフ になります。 このオプションが設定されていない場合、プロパティのデフォルト値は auto です。これは、回転出力、 RandR 変換が適用された出力、および RandR 1.4スレーブ出力の場合は TearFree がオンになり、それ以外の場合はオフになります。

Option "TearFree" "true"

xrandr を使用して TearFree を一時的に有効にすることもできます。

$ xrandr --output output --set TearFree on

outputDisplayPort-0 または HDMI-A-0 のようになり、 xrandr-q を実行して取得できます。

DRI レベル

DRI は、有効にする DRI の最大レベルを設定します。 有効な値は、DRI2 の場合は 2、 DRI3 の場合は 3 です。 Xorg バージョンが >= 1.18.3 の場合、 DRI3 のデフォルトは 3 です。それ以外の場合、 DRI2 が使用されます。

Option "DRI" "3"

可変リフレッシュレート

可変リフレッシュレート を参照してください。

10-bit カラー

新しい AMD カードは 10bpc カラーをサポートしていますが、デフォルトは 24 ビットカラーであり、30 ビットカラーを明示的に有効にする必要があります。 アプリケーションがこれもサポートしている場合、これを有効にすると、グラデーションの目に見える banding/artifacts を減らすことができます。 モニターがサポートしているかどうかを確認するには、 XorgログファイルEDID を検索します (例:/var/log/Xorg.0.log または ~/.local/share/xorg/Xorg.0.log):

[   336.695] (II) AMDGPU(0): EDID for output DisplayPort-0
[   336.695] (II) AMDGPU(0): EDID for output DisplayPort-1
[   336.695] (II) AMDGPU(0): Manufacturer: DEL  Model: a0ec  Serial#: 123456789
[   336.695] (II) AMDGPU(0): Year: 2018  Week: 23
[   336.695] (II) AMDGPU(0): EDID Version: 1.4
[   336.695] (II) AMDGPU(0): Digital Display Input
[   336.695] (II) AMDGPU(0): 10 bits per channel

現在有効になっているかどうかを確認するには、Depth を検索します)

[   336.618] (**) AMDGPU(0): Depth 30, (--) framebuffer bpp 32
[   336.618] (II) AMDGPU(0): Pixel depth = 30 bits stored in 4 bytes (32 bpp pixmaps)

デフォルトの構成では、代わりに深さが24であり、24ビットが 4バイトに格納されていると表示されます。

10ビットが機能するかどうかを確認するには、 Xorg を実行している場合は終了し、 Xorg -retro を実行して白黒のグリッドを表示し、 Ctrl-Alt-F1 と {を押します Ctrl-C で X を終了し、 Xorg -depth 30 -retro を実行します。 これが正常に機能する場合は、10ビットが機能しています。

startx を介して10ビットで起動するには、 startx -- -depth30 を使用します。 永続的に有効にするには、以下を作成または追加します。

/etc/X11/xorg.conf.d/20-amdgpu.conf
Section "Screen"
	Identifier "asdf"
	DefaultDepth 30
EndSection

10 bpc カラーでは、さまざまなソフトウェアでグラフィックが表示されたりクラッシュすることがあります。

パフォーマンスチューニング

ビデオアクセラレーションの有効化

VA-APIVDPAU をインストールすることでハードウェアアクセラレーションによる動画のエンコード・デコードを行うことができます。

ドライバーオプション

以下のオプションは /etc/X11/xorg.conf.d/20-amdgpu.conf で設定します。

ドライバーオプションの設定について詳しくは amdgpu(4) を読んでください。

DRI は有効にする DRI のレベルを設定します。DRI2 の場合は 2、DRI3 の場合は 3 と設定します。Xorg バージョン 1.18.3 以上ではデフォルト値は 3 となっており、古いバージョンでは DRI2 が使われます:

Option "DRI" "3" 

TearFree はハードウェアのページフリップ機能を使って、ちらつきを抑えます。オプションを設定すると、プロパティのデフォルト値が auto に設定され、回転などの RandR の操作で TearFree がオンになります:

Option "TearFree" "true"

トラブルシューティング

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

オープンソースの AMDGPU ドライバーはカーネル 4.15 でマージされた DC (旧 DAL) のコードを使用します [1]。カーネル 4.15 が公式リポジトリから使用できるようになるまでは、HDMI や DisplayPort の音声サポートは利用できません。HDMI や DisplayPort から音声出力を使用するには AMDGPU PRO ドライバーを使用するか linux-amd-staging-drm-next-gitAUR (または linux-amd-*) カーネルを使用する必要があります。

HDMI で表示位置がおかしい

amdgpu.audio=0 カーネルパラメータを使うことで (問題のある) HDMI の音声サポートを有効にしないようにできます [2]

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"
       Identifier     "Screen"
       DefaultDepth    24
       SubSection      "Display"
               Depth   24
       EndSubSection
EndSection

周波数を上げたときに画面が崩れる問題が起こる

ディスプレイの周波数を 120Hz 以上に設定したときにディスプレイに乱れが発生する場合、メモリクロックや GPU クロックが低すぎてディスプレイに応答できていません。

以下を実行することで解決できます [3]:

# 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-gitAURradeon-profile-daemon-gitAUR を使うことで GUI で "power_dpm" を管理することもできます [4]

See also