「AMDGPU」の版間の差分
(同期) |
(修正) |
||
1行目: | 1行目: | ||
[[Category:グラフィック]] |
[[Category:グラフィック]] |
||
[[Category:X サーバー]] |
[[Category:X サーバー]] |
||
+ | [[de:AMDGPU]] |
||
[[en:AMDGPU]] |
[[en:AMDGPU]] |
||
− | [[ |
+ | [[zh-hans:AMDGPU]] |
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|ATI}} |
{{Related|ATI}} |
||
15行目: | 16行目: | ||
お持ちのカードに応じて、[[Xorg#AMD]] で適切なドライバーを見つけてください。 |
お持ちのカードに応じて、[[Xorg#AMD]] で適切なドライバーを見つけてください。 |
||
− | このドライバは [https://www.x.org/wiki/RadeonFeature/ Southern Islands (SI)] 及びそれ以降のカードをサポートしています。AMD には GCN |
+ | このドライバは [https://www.x.org/wiki/RadeonFeature/ Southern Islands (SI)] 及びそれ以降のカードをサポートしています。AMD には GCN より前の GPU をサポートする計画はありません。 |
− | サポートされない GPU |
+ | サポートされない GPU については、オープンソースの [[ATI]] ドライバを使用できます。 |
== インストール == |
== インストール == |
||
25行目: | 26行目: | ||
* ([[Xorg]] での 2D アクセラレーションを提供する) DDX ドライバに関しては、{{Pkg|xf86-video-amdgpu}} パッケージをインストールしてください。 |
* ([[Xorg]] での 2D アクセラレーションを提供する) DDX ドライバに関しては、{{Pkg|xf86-video-amdgpu}} パッケージをインストールしてください。 |
||
* [[Vulkan]] のサポートに関しては: |
* [[Vulkan]] のサポートに関しては: |
||
− | ** '''まず {{Pkg|vulkan-radeon}} のみ'''でテストしてください: このパッケージは、([[Pacman#仮想パッケージ|アルファベット順における位置]]により) ''vulkan-driver'' の1番目のプロバイダではありませんが、{{Pkg|amdvlk}} に関し繰り返し[[Vulkan#AMDGPU - DirectX Vulkan ゲームでクラッシュする|報告されている]]一部の問題を回避できます。 |
+ | ** '''まず {{Pkg|vulkan-radeon}} のみ'''でテストしてください: このパッケージは、([[Pacman#仮想パッケージ|アルファベット順における位置]]により) ''vulkan-driver'' の1番目のプロバイダではありませんが、{{Pkg|amdvlk}} に関して繰り返し[[Vulkan#AMDGPU - DirectX Vulkan ゲームでクラッシュする|報告されている]]一部の問題を回避できます。 |
** {{Pkg|amdvlk}} パッケージがインストールされている場合、このパッケージは自身をデフォルトの Vulkan ドライバとして設定します。もし両方のドライバをインストールしておく必要がある場合は (例: {{Pkg|vulkan-radeon}} で [[Vulkan#AMDGPU - DirectX Vulkan ゲームのプレイ中にがハングする|問題]]が起こる場合)、[[Vulkan#環境変数で選択する]] を見てください。 |
** {{Pkg|amdvlk}} パッケージがインストールされている場合、このパッケージは自身をデフォルトの Vulkan ドライバとして設定します。もし両方のドライバをインストールしておく必要がある場合は (例: {{Pkg|vulkan-radeon}} で [[Vulkan#AMDGPU - DirectX Vulkan ゲームのプレイ中にがハングする|問題]]が起こる場合)、[[Vulkan#環境変数で選択する]] を見てください。 |
||
** 任意で、32 ビットアプリケーションサポートのために、インストールされているネイティブなパッケージに合わせて {{Pkg|lib32-vulkan-radeon}} か {{Pkg|lib32-amdvlk}} パッケージをインストールしてください。 |
** 任意で、32 ビットアプリケーションサポートのために、インストールされているネイティブなパッケージに合わせて {{Pkg|lib32-vulkan-radeon}} か {{Pkg|lib32-amdvlk}} パッケージをインストールしてください。 |
||
33行目: | 34行目: | ||
=== 実験的 === |
=== 実験的 === |
||
− | 一部のユーザーにとっては、 |
+ | 一部のユーザーにとっては、mesa の上流の実験的ビルドを使用して、標準の mesa パッケージに含まれていない AMD Navi の改善などの機能を有効にする価値があるかもしれません。 |
− | {{AUR|mesa-git}} パッケージをインストールし |
+ | {{AUR|mesa-git}} パッケージをインストールしてください。これは 3D アクセラレーション用の DRI ドライバーを提供します。 |
* 32 ビットアプリケーションのサポートに関しては、''mesa-git'' リポジトリ、または [[AUR]] から {{AUR|lib32-mesa-git}} もインストールしてください。 |
* 32 ビットアプリケーションのサポートに関しては、''mesa-git'' リポジトリ、または [[AUR]] から {{AUR|lib32-mesa-git}} もインストールしてください。 |
||
* ([[Xorg]] で 2D アクセラレーションを提供する) DDX ドライバに関しては、{{AUR|xf86-video-amdgpu-git}} パッケージをインストールしてください。 |
* ([[Xorg]] で 2D アクセラレーションを提供する) DDX ドライバに関しては、{{AUR|xf86-video-amdgpu-git}} パッケージをインストールしてください。 |
||
− | * 以下の ''mesa-git'' リポジトリを使用する [[Vulkan]] サポートに関しては、''vulkan-radeon-git'' パッケージをインストールしてください。 |
+ | * 以下の ''mesa-git'' リポジトリを使用する [[Vulkan]] サポートに関しては、''vulkan-radeon-git'' パッケージをインストールしてください。任意で、32 ビットアプリケーションをサポートするために ''lib32-vulkan-radeon-git'' パッケージもインストールしてください。AUR から {{AUR|mesa-git}} をビルドする場合、これは必要ないはずです。 |
− | {{Note|X を起動するには、 |
+ | {{Note|X を起動するには、LibLLVM へのシンボリックリンクを作成する必要があるかもしれません。例: {{ic|ln -s /usr/lib/libLLVM-10git.so /usr/lib/libLLVM-10svn.so}}}} |
− | {{Tip|{{AUR|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(HD 7000 Series、SI、つまり GCN 1)と Sea Islands(HD 8000 Series、CIK、つまり GCN 2) |
+ | {{Pkg|linux}} パッケージでは、Southern Islands (HD 7000 Series、SI、つまり GCN 1) と Sea Islands (HD 8000 Series、CIK、つまり GCN 2) カードの AMDGPU サポートが有効化されています。{{ic|amdgpu}} カーネルドライバは [[ATI|radeon]] ドライバより前にロードされる必要があります。どのカーネルドライバがロードされているかは {{ic|lspci -k}} で確認できます。以下のように出力されるはずです: |
{{hc|$ lspci -k {{!}} grep -A 3 -E "(VGA{{!}}3D)"| |
{{hc|$ lspci -k {{!}} grep -A 3 -E "(VGA{{!}}3D)"| |
||
60行目: | 61行目: | ||
==== amdgpu ドライバをロード ==== |
==== amdgpu ドライバをロード ==== |
||
− | {{ic|amdgpu}} モジュールと {{ic|radeon}} モジュールの両方の |
+ | {{ic|amdgpu}} モジュールと {{ic|radeon}} モジュールの両方の[[モジュールパラメータ]]は {{ic|1=cik_support=}} と {{ic|1=si_support=}} です。 |
これらは、カーネルパラメータまたは ''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}}}} |
||
===== カーネルコマンドラインでモジュールパラメータを設定 ===== |
===== カーネルコマンドラインでモジュールパラメータを設定 ===== |
||
75行目: | 78行目: | ||
==== 正しいモジュール順序を指定 ==== |
==== 正しいモジュール順序を指定 ==== |
||
− | {{ic|amdgpu}} が [[Mkinitcpio#MODULES]] 配列の |
+ | {{ic|amdgpu}} が [[Mkinitcpio#MODULES]] 配列の1番目のモジュールとして設定されていることを確認してください。例えば、{{ic|1=MODULES=(amdgpu radeon)}}。 |
− | 例えば {{ic|1=MODULES=(amdgpu radeon)}} |
||
===== modprobe.d でモジュールパラメータを設定 ===== |
===== modprobe.d でモジュールパラメータを設定 ===== |
||
− | {{ic|/etc/modprobe.d/}} に |
+ | {{ic|/etc/modprobe.d/}} に [[modprobe]] 設定ファイルを作成してください。構文の詳細については、{{man|5|modprobe.d}} を参照してください。 |
− | Southern Islands(SI)の場合は |
+ | Southern Islands (SI) の場合は {{ic|1=si_support=1}} オプションを、Sea Islands (CIK) の場合は {{ic|1=cik_support=1}} オプションを使用してください。例: |
{{hc|/etc/modprobe.d/amdgpu.conf|2= |
{{hc|/etc/modprobe.d/amdgpu.conf|2= |
||
94行目: | 96行目: | ||
}} |
}} |
||
− | {{ic|modconf}} が {{ic|/etc/mkinitcpio.conf}} の {{ic|HOOKS}} 配列にあ |
+ | {{ic|modconf}} が {{ic|/etc/mkinitcpio.conf}} の {{ic|HOOKS}} 配列にあることを確認し、[[Initramfs を再生成する|initramfs を再生成]]してください。 |
===== amdgpu ドライバをサポートするカーネルをコンパイル ===== |
===== amdgpu ドライバをサポートするカーネルをコンパイル ===== |
||
− | [[カーネル]]をビルド/コンパイルする |
+ | [[カーネル]]をビルド/コンパイルする場合、{{ic|1=CONFIG_DRM_AMDGPU_SI=Y}} と {{ic|1=CONFIG_DRM_AMDGPU_CIK=Y}} の一方/両方を config で設定する必要があります。 |
==== 起動時の radeon のロードを完全に無効化 ==== |
==== 起動時の radeon のロードを完全に無効化 ==== |
||
− | + | 特定のグラフィックチップによっては、カーネルが依然として {{ic|radeon}} モジュールをプローブ・ロードする場合があります。しかし、{{ic|amdgpu}} が期待通りに動作することが確認できたならば、{{ic|radeon}} モジュールをロードする必要はありません。以下の手順では、各ステップの後に再起動して、うまく行っていることを確認してください: |
|
− | # カーネルコマンドラインの方法でモジュールパラメータを使 |
+ | # カーネルコマンドラインの方法でモジュールパラメータを使って、{{ic|amdgpu}} が期待通りに機能することを確認してください |
− | # {{ic|1=MODULES=(amdgpu)}} mkinitcpio の方法使 |
+ | # {{ic|1=MODULES=(amdgpu)}} mkinitcpio の方法を使ってください。ただし、{{ic|radeon}} を設定に追加しないでください。 |
− | # デスクトップにログインし |
+ | # デスクトップにログインし、{{ic|1=modprobe -r radeon}} を実行して、対応するカーネルモジュールがきれいに削除されることをテストしてください。 |
− | # {{ic|radeon}} モジュールをブラックリスト化して、第2ステージ |
+ | # {{ic|radeon}} モジュールをブラックリスト化して、ブートの第2ステージでモジュールがカーネルによってプローブされないようにしてください: |
{{hc|/etc/modprobe.d/radeon.conf|2= |
{{hc|/etc/modprobe.d/radeon.conf|2= |
||
113行目: | 115行目: | ||
}} |
}} |
||
− | これで、{{ic|lsmod}} と {{ic|dmesg}} |
+ | これで、{{ic|lsmod}} と {{ic|dmesg}} の出力で、amdgpu ドライバのみがロードされていて、radeon は存在しないと表示されるはずです。{{ic|1=/sys/module/radeon}} ディレクトリは存在しないはずです。 |
=== ACO コンパイラ === |
=== ACO コンパイラ === |
||
− | [https://steamcommunity.com/games/221410/announcements/detail/1602634609636894200 ACO コンパイラ]はオープンソースのシェーダコンパイラで、[https://llvm.org/ LLVM コンパイラ] |
+ | [https://steamcommunity.com/games/221410/announcements/detail/1602634609636894200 ACO コンパイラ]はオープンソースのシェーダコンパイラであり、[https://llvm.org/ LLVM コンパイラ]や [https://github.com/GPUOpen-Drivers/AMDVLK AMDVLK ドライバ]、[[wikipedia:ja:Microsoft Windows 10|Windows 10]] に直接対抗するために [[wikipedia:ja:Valve Corporation|Valve Corporation]] によって作成・開発されています。LLVM と AMDVLK よりも短いコンパイル時間と、ゲームでのより良いパフォーマンスを提供します。 |
いくつかのベンチマークは [https://gist.github.com/pendingchaos/aba1e4c238cf039d17089f29a8c6aa63 GitHub] や 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)] で見られます。 |
いくつかのベンチマークは [https://gist.github.com/pendingchaos/aba1e4c238cf039d17089f29a8c6aa63 GitHub] や 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)] で見られます。 |
||
− | {{Pkg|mesa}} バージョン 20.2 |
+ | {{Pkg|mesa}} バージョン 20.2 以降、ACO コンパイラはデフォルトで有効になっています。 |
== ロード == |
== ロード == |
||
− | {{ic|amdgpu}} カーネルモジュールはシステムの起動時に自動的にロードされます。 |
+ | {{ic|amdgpu}} カーネルモジュールはシステムの起動時に自動的にロードされることになっています。 |
ロードされない場合: |
ロードされない場合: |
||
* 必要な場合は [[#Southern Islands (SI) と Sea Islands (CIK) のサポートを有効化]]していることを確認してください。 |
* 必要な場合は [[#Southern Islands (SI) と Sea Islands (CIK) のサポートを有効化]]していることを確認してください。 |
||
− | * 最新の {{Pkg|linux-firmware}} パッケージがインストールされていることを確認してください。 |
+ | * 最新の {{Pkg|linux-firmware}} パッケージがインストールされていることを確認してください。このドライバは、正しくブートするために各モデルの最新のファームウェアを必要とします。 |
− | * [[カーネルパラメータ]]に {{ic|nomodeset}} や {{ic|1=vga=}} を指定して'''いない'''ことを確認してください。{{ic|amdgpu}} は [[KMS]] を必要と |
+ | * [[カーネルパラメータ]]に {{ic|nomodeset}} や {{ic|1=vga=}} を指定して'''いない'''ことを確認してください。{{ic|amdgpu}} は [[KMS]] を必要とするからです。 |
− | * [[カーネルモジュール#ブラックリスト|カーネルモジュールのブラックリスト]]で {{ic|amdgpu}} が無効になっていない |
+ | * [[カーネルモジュール#ブラックリスト|カーネルモジュールのブラックリスト]]で {{ic|amdgpu}} が無効になっていないことを確認してください。 |
読み込むことはできるが、X サーバが必要とする時よりも後になってしまう場合: |
読み込むことはできるが、X サーバが必要とする時よりも後になってしまう場合: |
||
− | * [[カーネルモード設定#KMS の早期開始]]を見てください。 |
+ | * [[カーネルモード設定#KMS の早期開始]] を見てください。 |
== Xorg の設定 == |
== Xorg の設定 == |
||
− | [[Xorg]] は自動的にドライバ |
+ | [[Xorg]] は自動的にドライバをロードし、モニタの EDID を使ってネイティブの解像度を設定してくれます。設定が必要になるのは、ドライバをチューニングする場合のみです。 |
手動で設定したい場合、{{ic|/etc/X11/xorg.conf.d/20-amdgpu.conf}} を作成して、以下を記述してください: |
手動で設定したい場合、{{ic|/etc/X11/xorg.conf.d/20-amdgpu.conf}} を作成して、以下を記述してください: |
||
152行目: | 154行目: | ||
}} |
}} |
||
− | このセクションを使って、ドライバ |
+ | このセクションを使って、機能を有効化したりドライバの設定を調整したりできます。ドライバオプションを設定する前に、まず {{man|4|amdgpu}} を見てください。 |
=== TearFree レンダリング === |
=== TearFree レンダリング === |
||
− | ''TearFree'' は、ハードウェアのページフリッピング機構を使ってティアリング防止を制御します。デフォルトでは、TearFree は、回転出力、RandR 変換が適用された出力、RandR 1.4 スレーブ出力に対してオンになり、それら以外ではオフになります。{{ic|true}} か {{ic|false}} を指定することで、常にオンにしたり、常にオフにしたりもできます。 |
+ | ''TearFree'' は、ハードウェアのページフリッピング機構を使ってティアリング防止を制御します。デフォルトでは、TearFree は、回転された出力、RandR 変換が適用された出力、RandR 1.4 スレーブ出力に対してオンになり、それら以外ではオフになります。{{ic|true}} か {{ic|false}} を指定することで、常にオンにしたり、常にオフにしたりもできます。 |
Option "TearFree" "true" |
Option "TearFree" "true" |
||
− | [[xrandr]] を使用して TearFree を一時的に有効にすることもできます |
+ | [[xrandr]] を使用して TearFree を一時的に有効にすることもできます: |
$ xrandr --output ''output'' --set TearFree on |
$ xrandr --output ''output'' --set TearFree on |
||
− | {{ic|''output''}} は {{ic|DisplayPort-0}} |
+ | {{ic|''output''}} は {{ic|DisplayPort-0}} や {{ic|HDMI-A-0}} のような形式である必要があります。この値は {{ic|xrandr -q}} で取得できます。 |
=== DRI レベル === |
=== DRI レベル === |
||
− | ''DRI'' は、有効にする DRI の最大レベルを設定します。 |
+ | ''DRI'' は、有効にする DRI の最大レベルを設定します。有効な値は、DRI2 の場合は ''2''、 DRI3 の場合は ''3'' です。 [[Xorg]] バージョンが 1.18.3 以降の場合、DRI3 のデフォルトは ''3'' です。それ以外の場合、 DRI2 が使用されます: |
Option "DRI" "3" |
Option "DRI" "3" |
||
176行目: | 178行目: | ||
[[可変リフレッシュレート]] を参照してください。 |
[[可変リフレッシュレート]] を参照してください。 |
||
− | === 10 |
+ | === 10 ビットカラー === |
− | {{Warning|10 ビットカラーを有効化すると、多くのアプリケーションでグラフィックの乱れやクラッシュを引き起こす場合があります。これには特に [[Steam/トラブルシューティング#Steam: |
+ | {{Warning|10 ビットカラーを有効化すると、多くのアプリケーションでグラフィックの乱れやクラッシュを引き起こす場合があります。これには特に [[Steam/トラブルシューティング#Steam: An X Error occurred|Steam]] が含まれ、X Error によりクラッシュします。}} |
− | 新しい AMD カードは 10bpc カラーをサポートしていますが、デフォルトは 24 ビットカラーであり、30 ビットカラー |
+ | 新しい AMD カードは 10bpc カラーをサポートしていますが、デフォルトは 24 ビットカラーであり、30 ビットカラーは明示的に有効にする必要があります。アプリケーションがこれもサポートしている場合、これを有効にすると、グラデーションの目に見えるバンディング/グラフィックの乱れを減らすことができます。モニターがサポートしているかどうかを確認するには、[[Xorg#一般|Xorg ログファイル]]で ''EDID'' を検索してください (例:{{ic|/var/log/Xorg.0.log}} または {{ic|~/.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-0 |
||
190行目: | 192行目: | ||
'''[ 336.695] (II) AMDGPU(0): 10 bits per channel''' |
'''[ 336.695] (II) AMDGPU(0): 10 bits per channel''' |
||
− | 現在有効になっているかどうかを確認するには、''Depth'' を検索し |
+ | 現在有効になっているかどうかを確認するには、''Depth'' を検索してください: |
[ 336.618] (**) AMDGPU(0): Depth 30, (--) framebuffer bpp 32 |
[ 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) |
[ 336.618] (II) AMDGPU(0): Pixel depth = 30 bits stored in 4 bytes (32 bpp pixmaps) |
||
− | デフォルトの |
+ | デフォルトの設定では、24 であると表示されます (24 ビットが 4 バイトに格納されている)。 |
− | 10ビットが機能するかどうかを確認するには、 |
+ | 10ビットが機能するかどうかを確認するには、Xorg を実行している場合は終了し、白黒の縞模様を表示する {{ic|Xorg -retro}} を実行し、{{ic|Ctrl-Alt-F1}} と {{ic|Ctrl-C}} を押して X を終了し、{{ic|Xorg -depth 30 -retro}} を実行してください。これが正常に機能する場合は、10ビットが機能しています。 |
− | {{ic|startx}} を介して10ビットで起動するには、 |
+ | {{ic|startx}} を介して10ビットで起動するには、{{ic|startx -- -depth 30}} を使用してください。永続的に有効にするには、以下を作成または追加してください: |
{{hc|/etc/X11/xorg.conf.d/20-amdgpu.conf|2= |
{{hc|/etc/X11/xorg.conf.d/20-amdgpu.conf|2= |
||
210行目: | 212行目: | ||
=== 出力のレイテンシを減らす === |
=== 出力のレイテンシを減らす === |
||
− | レイテンシを最小化したい場合、ページフリッピングや TearFree を無効化 |
+ | レイテンシを最小化したい場合、ページフリッピングや TearFree を無効化できます: |
{{hc|/etc/X11/xorg.conf.d/20-amdgpu.conf|2= |
{{hc|/etc/X11/xorg.conf.d/20-amdgpu.conf|2= |
||
− | Section " |
+ | Section "OutputClass" |
Identifier "AMD" |
Identifier "AMD" |
||
+ | MatchDriver "amdgpu" |
||
Driver "amdgpu" |
Driver "amdgpu" |
||
Option "EnablePageFlip" "off" |
Option "EnablePageFlip" "off" |
||
221行目: | 224行目: | ||
}} |
}} |
||
− | + | レイテンシを更に減らしたい場合は [[ゲーム#DRI の遅延を軽減する]] を見てください。 |
|
− | {{Note|これらのオプションを設定すると、ティアリングや短 |
+ | {{Note|これらのオプションを設定すると、ティアリングや短時間のアーティファクトが発生する場合があります。}} |
== 機能 == |
== 機能 == |
||
268行目: | 271行目: | ||
=== オーバークロック === |
=== オーバークロック === |
||
− | Linux 4.17 以降、{{Ic|1=/sys/class/drm/card0/device/pp_od_clk_voltage}} |
+ | Linux 4.17 以降、{{Ic|1=/sys/class/drm/card0/device/pp_od_clk_voltage}} を介してグラフィックカードのクロックと電圧を調整できます。 |
==== ブートパラメータ ==== |
==== ブートパラメータ ==== |
||
278行目: | 281行目: | ||
$ printf 'amdgpu.ppfeaturemask=0x%x\n' "$(($(cat /sys/module/amdgpu/parameters/ppfeaturemask) | 0x4000))" |
$ printf 'amdgpu.ppfeaturemask=0x%x\n' "$(($(cat /sys/module/amdgpu/parameters/ppfeaturemask) | 0x4000))" |
||
− | ==== 手動(デフォルト) ==== |
+ | ==== 手動 (デフォルト) ==== |
− | {{Note|sysfs では、{{Ic|1=/sys/class/drm/...}} のようなパスはただのシンボリックリンクで、起動するごとに変化するかもしれません。永続的なパスは {{Ic|1=/sys/devices/}} |
+ | {{Note|sysfs では、{{Ic|1=/sys/class/drm/...}} のようなパスはただのシンボリックリンクで、起動するごとに変化するかもしれません。永続的なパスは {{Ic|1=/sys/devices/}} にあります (例: {{Ic|1=/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/}})。信頼性の高い結果を得るには、コマンドを適宜調整してください。}} |
− | 例えば、Polaris GPU で |
+ | 例えば、Polaris GPU で最大 P-state 7 で GPU クロックを 1209MHz、電圧を 900mV に設定するには、以下を実行してください: |
# echo "s 7 1209 900" > /sys/class/drm/card0/device/pp_od_clk_voltage |
# echo "s 7 1209 900" > /sys/class/drm/card0/device/pp_od_clk_voltage |
||
− | 同じ手順を VRAM に対しても適用できます(例えば、Polaris 5xx シリーズカードで最大 P-state 2): |
+ | 同じ手順を VRAM に対しても適用できます (例えば、Polaris 5xx シリーズカードでの最大 P-state 2): |
# echo "m 2 1850 850" > /sys/class/drm/card0/device/pp_od_clk_voltage |
# echo "m 2 1850 850" > /sys/class/drm/card0/device/pp_od_clk_voltage |
||
− | {{Warning|1=入力 |
+ | {{Warning|1=入力した値をダブルチェックしてください。間違うと即座にハードウェアに深刻なダメージを引き起こすかもしれません!}} |
適用するには: |
適用するには: |
||
296行目: | 299行目: | ||
# echo "c" > /sys/class/drm/card0/device/pp_od_clk_voltage |
# echo "c" > /sys/class/drm/card0/device/pp_od_clk_voltage |
||
− | + | 機能していることを確認するには、3D の負荷をかけている状態で、クロックと電圧を見てください: |
|
# watch -n 0.5 cat /sys/kernel/debug/dri/0/amdgpu_pm_info |
# watch -n 0.5 cat /sys/kernel/debug/dri/0/amdgpu_pm_info |
||
304行目: | 307行目: | ||
# echo "r" > /sys/class/drm/card0/device/pp_od_clk_voltage |
# echo "r" > /sys/class/drm/card0/device/pp_od_clk_voltage |
||
− | ドライバに特定の P-state への切り替えを禁止することも可能です(例: チラツキやスタッタリングなどの |
+ | ドライバに特定の P-state への切り替えを禁止することも可能です (例: チラツキやスタッタリングなどのディープ省電力 P-state での問題を回避する)。Polaris RX 5xx カードで最も高い VRAM P-state を強制し、GPU 自体は低いクロックでの動作を許可するには: |
# echo "manual" > /sys/class/drm/card0/device/power_dpm_force_performance_level |
# echo "manual" > /sys/class/drm/card0/device/power_dpm_force_performance_level |
||
313行目: | 316行目: | ||
# echo "5 6 7" > /sys/class/drm/card0/device/pp_dpm_sclk |
# echo "5 6 7" > /sys/class/drm/card0/device/pp_dpm_sclk |
||
− | GPU の最大電力消費量を設定するには(例えば 50 ワット): |
+ | GPU の最大電力消費量を設定するには (例えば 50 ワット): |
# echo '''50'''000000 > /sys/class/drm/card0/device/hwmon/hwmon0/power1_cap |
# echo '''50'''000000 > /sys/class/drm/card0/device/hwmon/hwmon0/power1_cap |
||
− | {{Note|上記の手順は Polaris RX 560 カードでテストされました。 |
+ | {{Note|上記の手順は Polaris RX 560 カードでテストされました。別の GPU では、異なる挙動やバグが存在するかもしれません。}} |
==== アシスト付き ==== |
==== アシスト付き ==== |
||
− | GPU を手動でオーバークロックしたくない場合、AMD GPU |
+ | GPU を手動でオーバークロックしたくない場合、AMD GPU のオーバークロックやモニタリングをアシストするいくつかのツールがコミュニティによって提供されています。 |
===== CLI ツール ===== |
===== CLI ツール ===== |
||
396行目: | 399行目: | ||
=== スクリーンのアーティファクトと周波数の問題 === |
=== スクリーンのアーティファクトと周波数の問題 === |
||
− | [[ATI#動的電源管理|動的電源管理]]は、(60Hz以上の)高いリフレッシュレートでモニタを表示させた際にスクリーンのアーティファクトを発生させる場合があります。GPU のクロック速度の管理法に問題があるためです[https://bugs.freedesktop.org/show_bug.cgi?id=96868][https://gitlab.freedesktop.org/drm/amd/-/issues/234]。 |
+ | [[ATI#動的電源管理|動的電源管理]]は、(60Hz以上の) 高いリフレッシュレートでモニタを表示させた際にスクリーンのアーティファクトを発生させる場合があります。GPU のクロック速度の管理法に問題があるためです [https://bugs.freedesktop.org/show_bug.cgi?id=96868][https://gitlab.freedesktop.org/drm/amd/-/issues/234]。 |
− | 回避策[https://bugs.freedesktop.org/show_bug.cgi?id=96868#c13]は {{ic|/sys/class/drm/card0/device/power_dpm_force_performance_level}} に {{ic|high}} か {{ic|low}} を書き込むことです。 |
+ | 回避策 [https://bugs.freedesktop.org/show_bug.cgi?id=96868#c13] は {{ic|/sys/class/drm/card0/device/power_dpm_force_performance_level}} に {{ic|high}} か {{ic|low}} を書き込むことです。 |
これを永続化するには、[[udev]] ルールを作成することにより可能です: |
これを永続化するには、[[udev]] ルールを作成することにより可能です: |
||
410行目: | 413行目: | ||
$ udevadm info --attribute-walk /sys/class/drm/card0 | grep "KERNEL=" |
$ udevadm info --attribute-walk /sys/class/drm/card0 | grep "KERNEL=" |
||
− | GUI を用いる解決策もあります[https://github.com/marazmista/radeon-profile]: {{aur|radeon-profile-git}} と {{aur|radeon-profile-daemon-git}} で "power_dpm" を管理できます。 |
+ | GUI を用いる解決策もあります [https://github.com/marazmista/radeon-profile]: {{aur|radeon-profile-git}} と {{aur|radeon-profile-daemon-git}} で "power_dpm" を管理できます。 |
==== Chromium でアーティファクト ==== |
==== Chromium でアーティファクト ==== |
||
424行目: | 427行目: | ||
=== "[drm] IP block:gmc_v8_0 is hung!" カーネルエラーでフリーズ === |
=== "[drm] IP block:gmc_v8_0 is hung!" カーネルエラーでフリーズ === |
||
− | GPU が大量の処理を行っている最中にフリーズやカーネルのクラッシュが発生して、 |
+ | GPU が大量の処理を行っている最中にフリーズやカーネルのクラッシュが発生して、"[drm] IP block:gmc_v8_0 is hung!" カーネルエラーが発生する場合 [https://gitlab.freedesktop.org/drm/amd/issues/226]、回避策は [[カーネルパラメータ]] {{ic|1=amdgpu.vm_update_mode=3}} を設定して GPUVM ページテーブルの更新を CPU を用いて行うように強制することです。デメリットはここにリストされています: [https://gitlab.freedesktop.org/drm/amd/-/issues/226#note_308665]。 |
=== カーソルの破損 === |
=== カーソルの破損 === |
||
− | マウスカーソルが時々正しくレンダリングされない問題が発生する場合、{{ic|/etc/X11/xorg.conf.d/20-amdgpu.conf}} 設定ファイルの {{ic|"OutputClass"}} セクション |
+ | マウスカーソルが時々正しくレンダリングされない問題が発生する場合、{{ic|/etc/X11/xorg.conf.d/20-amdgpu.conf}} 設定ファイルの {{ic|"OutputClass"}} セクションで {{ic|Option "SWCursor" "True"}} を設定してください。Wayland においては、グローバルな環境変数 {{ic|1=KWIN_FORCE_SW_CURSOR=1}} を設定してください。 |
スケーリングに {{ic|xrandr}} を使用していて、カーソルがチラついたり消えたりする場合、{{ic|TearFree}} プロパティを設定することで修正できる場合があります: {{ic|xrandr --output HDMI-A-0 --set TearFree on}}。 |
スケーリングに {{ic|xrandr}} を使用していて、カーソルがチラついたり消えたりする場合、{{ic|TearFree}} プロパティを設定することで修正できる場合があります: {{ic|xrandr --output HDMI-A-0 --set TearFree on}}。 |
||
438行目: | 441行目: | ||
=== Vega カード上でのゲーム中にシステムのフリーズ/クラッシュ === |
=== Vega カード上でのゲーム中にシステムのフリーズ/クラッシュ === |
||
− | [[ATI#動的電源管理|動的電源管理]]は、ゲーム中にシステムの完全なフリーズを発生させる場合があります。GPU のクロック速度の管理法に問題があるためです[https://gitlab.freedesktop.org/drm/amd/-/issues/716]。回避策は動的電源管理を無効化することです。詳細は [[ATI#動的電源管理]] を見てください。 |
+ | [[ATI#動的電源管理|動的電源管理]]は、ゲーム中にシステムの完全なフリーズを発生させる場合があります。GPU のクロック速度の管理法に問題があるためです [https://gitlab.freedesktop.org/drm/amd/-/issues/716]。回避策は動的電源管理を無効化することです。詳細は [[ATI#動的電源管理]] を見てください。 |
=== WebRenderer (Firefox) の破損 === |
=== WebRenderer (Firefox) の破損 === |
2023年6月7日 (水) 16:41時点における版
関連記事
AMDGPU は Graphics Core Next ファミリの AMD Radeon グラフィックカード向けのオープンソースグラフィックドライバです。
目次
- 1 適切なドライバーの選択
- 2 インストール
- 3 ロード
- 4 Xorg の設定
- 5 機能
- 6 トラブルシューティング
- 6.1 Xorg やアプリケーションが起動しない
- 6.2 スクリーンのアーティファクトと周波数の問題
- 6.3 R9 390 シリーズで悪いパフォーマンス/不安定
- 6.4 "[drm] IP block:gmc_v8_0 is hung!" カーネルエラーでフリーズ
- 6.5 カーソルの破損
- 6.6 KDE の使用時に画面のちらつき
- 6.7 Vega カード上でのゲーム中にシステムのフリーズ/クラッシュ
- 6.8 WebRenderer (Firefox) の破損
- 6.9 4K@60Hz のデバイスが接続されると音声の速度が2倍になる/音が高くなる/無音
- 6.10 ディスクリート amdgpu グラフィックカードにおける電源管理/動的再アクティブ化の問題
- 6.11 kfd: amdgpu: TOPAZ not supported in kfd
- 7 参照
適切なドライバーの選択
お持ちのカードに応じて、Xorg#AMD で適切なドライバーを見つけてください。 このドライバは Southern Islands (SI) 及びそれ以降のカードをサポートしています。AMD には GCN より前の GPU をサポートする計画はありません。 サポートされない GPU については、オープンソースの ATI ドライバを使用できます。
インストール
mesa パッケージをインストールしてください。3D アクセラレーションのための DRI ドライバーが含まれています。
- 32ビットアプリケーションのサポートに関しては、multilib リポジトリから lib32-mesa パッケージもインストールしてください。
- (Xorg での 2D アクセラレーションを提供する) DDX ドライバに関しては、xf86-video-amdgpu パッケージをインストールしてください。
- Vulkan のサポートに関しては:
- まず vulkan-radeon のみでテストしてください: このパッケージは、(アルファベット順における位置により) vulkan-driver の1番目のプロバイダではありませんが、amdvlk に関して繰り返し報告されている一部の問題を回避できます。
- amdvlk パッケージがインストールされている場合、このパッケージは自身をデフォルトの Vulkan ドライバとして設定します。もし両方のドライバをインストールしておく必要がある場合は (例: vulkan-radeon で 問題が起こる場合)、Vulkan#環境変数で選択する を見てください。
- 任意で、32 ビットアプリケーションサポートのために、インストールされているネイティブなパッケージに合わせて lib32-vulkan-radeon か lib32-amdvlk パッケージをインストールしてください。
ビデオデコードのハードウェア支援のサポートは、VA-API に関しては libva-mesa-driver と lib32-libva-mesa-driver により提供されており、VDPAU に関しては mesa-vdpau と lib32-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 をビルドする場合、これは必要ないはずです。
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 | grep -A 3 -E "(VGA|3D)"
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 バージョンによって異なります。
どのカーネルカードを使用しているか不確かな場合は、両方のパラメータを使うことができます。
カーネルコマンドラインでモジュールパラメータを設定
次のいずれかのカーネルパラメータを設定してください:
- Southern Islands (SI):
radeon.si_support=0 amdgpu.si_support=1
- Sea Islands (CIK):
radeon.cik_support=0 amdgpu.cik_support=1
正しいモジュール順序を指定
amdgpu
が Mkinitcpio#MODULES 配列の1番目のモジュールとして設定されていることを確認してください。例えば、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.conf
の HOOKS
配列にあることを確認し、initramfs を再生成してください。
amdgpu ドライバをサポートするカーネルをコンパイル
カーネルをビルド/コンパイルする場合、CONFIG_DRM_AMDGPU_SI=Y
と CONFIG_DRM_AMDGPU_CIK=Y
の一方/両方を config で設定する必要があります。
起動時の radeon のロードを完全に無効化
特定のグラフィックチップによっては、カーネルが依然として radeon
モジュールをプローブ・ロードする場合があります。しかし、amdgpu
が期待通りに動作することが確認できたならば、radeon
モジュールをロードする必要はありません。以下の手順では、各ステップの後に再起動して、うまく行っていることを確認してください:
- カーネルコマンドラインの方法でモジュールパラメータを使って、
amdgpu
が期待通りに機能することを確認してください MODULES=(amdgpu)
mkinitcpio の方法を使ってください。ただし、radeon
を設定に追加しないでください。- デスクトップにログインし、
modprobe -r radeon
を実行して、対応するカーネルモジュールがきれいに削除されることをテストしてください。 radeon
モジュールをブラックリスト化して、ブートの第2ステージでモジュールがカーネルによってプローブされないようにしてください:
/etc/modprobe.d/radeon.conf
blacklist radeon
これで、lsmod
と dmesg
の出力で、amdgpu ドライバのみがロードされていて、radeon は存在しないと表示されるはずです。/sys/module/radeon
ディレクトリは存在しないはずです。
ACO コンパイラ
ACO コンパイラはオープンソースのシェーダコンパイラであり、LLVM コンパイラや AMDVLK ドライバ、Windows 10 に直接対抗するために Valve Corporation によって作成・開発されています。LLVM と AMDVLK よりも短いコンパイル時間と、ゲームでのより良いパフォーマンスを提供します。
いくつかのベンチマークは GitHub や Phoronix (1) (2) (3) で見られます。
mesa バージョン 20.2 以降、ACO コンパイラはデフォルトで有効になっています。
ロード
amdgpu
カーネルモジュールはシステムの起動時に自動的にロードされることになっています。
ロードされない場合:
- 必要な場合は #Southern Islands (SI) と Sea Islands (CIK) のサポートを有効化していることを確認してください。
- 最新の linux-firmware パッケージがインストールされていることを確認してください。このドライバは、正しくブートするために各モデルの最新のファームウェアを必要とします。
- カーネルパラメータに
nomodeset
やvga=
を指定していないことを確認してください。amdgpu
は KMS を必要とするからです。 - カーネルモジュールのブラックリストで
amdgpu
が無効になっていないことを確認してください。
読み込むことはできるが、X サーバが必要とする時よりも後になってしまう場合:
- カーネルモード設定#KMS の早期開始 を見てください。
Xorg の設定
Xorg は自動的にドライバをロードし、モニタの EDID を使ってネイティブの解像度を設定してくれます。設定が必要になるのは、ドライバをチューニングする場合のみです。
手動で設定したい場合、/etc/X11/xorg.conf.d/20-amdgpu.conf
を作成して、以下を記述してください:
/etc/X11/xorg.conf.d/20-amdgpu.conf
Section "OutputClass" Identifier "AMD" MatchDriver "amdgpu" Driver "amdgpu" EndSection
このセクションを使って、機能を有効化したりドライバの設定を調整したりできます。ドライバオプションを設定する前に、まず amdgpu(4) を見てください。
TearFree レンダリング
TearFree は、ハードウェアのページフリッピング機構を使ってティアリング防止を制御します。デフォルトでは、TearFree は、回転された出力、RandR 変換が適用された出力、RandR 1.4 スレーブ出力に対してオンになり、それら以外ではオフになります。true
か false
を指定することで、常にオンにしたり、常にオフにしたりもできます。
Option "TearFree" "true"
xrandr を使用して TearFree を一時的に有効にすることもできます:
$ xrandr --output output --set TearFree on
output
は DisplayPort-0
や HDMI-A-0
のような形式である必要があります。この値は xrandr -q
で取得できます。
DRI レベル
DRI は、有効にする DRI の最大レベルを設定します。有効な値は、DRI2 の場合は 2、 DRI3 の場合は 3 です。 Xorg バージョンが 1.18.3 以降の場合、DRI3 のデフォルトは 3 です。それ以外の場合、 DRI2 が使用されます:
Option "DRI" "3"
可変リフレッシュレート
可変リフレッシュレート を参照してください。
10 ビットカラー
新しい AMD カードは 10bpc カラーをサポートしていますが、デフォルトは 24 ビットカラーであり、30 ビットカラーは明示的に有効にする必要があります。アプリケーションがこれもサポートしている場合、これを有効にすると、グラデーションの目に見えるバンディング/グラフィックの乱れを減らすことができます。モニターがサポートしているかどうかを確認するには、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 -- -depth 30
を使用してください。永続的に有効にするには、以下を作成または追加してください:
/etc/X11/xorg.conf.d/20-amdgpu.conf
Section "Screen" Identifier "asdf" DefaultDepth 30 EndSection
出力のレイテンシを減らす
レイテンシを最小化したい場合、ページフリッピングや TearFree を無効化できます:
/etc/X11/xorg.conf.d/20-amdgpu.conf
Section "OutputClass" Identifier "AMD" MatchDriver "amdgpu" Driver "amdgpu" Option "EnablePageFlip" "off" Option "TearFree" "false" EndSection
レイテンシを更に減らしたい場合は ゲーム#DRI の遅延を軽減する を見てください。
機能
ビデオアクセラレーション
ハードウェアビデオアクセラレーション を見てください。
モニタリング
GPU の温度や P-state を確認したい場合に GPU のモニタリングはしばしば行われます。
CLI
- amdgpu_top — AMDGPU の使用率を表示するツール
- nvtop — AMD、Intel、NVIDIA で GPU プロセスをモニタリングします。
- radeontop — 合計のアクティビティ率と個々のブロック両方の GPU 使用率ビュアー。
GUI
- amdgpu_top — AMDGPU の使用率を表示するツール
- AmdGuid — 完全に Rust で書かれた、基本的なファンコントロール GUI。
- TuxClocker — Qt5 のモニタリング・オーバークロックツール。
手動
GPU の P-state を確認するには、以下を実行:
$ cat /sys/class/drm/card0/device/pp_od_clk_voltage
GPU をモニタリングするには、以下を実行:
$ watch -n 0.5 cat /sys/kernel/debug/dri/0/amdgpu_pm_info
GPU 使用率を確認するには、以下を実行:
$ cat /sys/class/drm/card0/device/gpu_busy_percent
GPU のクロックを確認するには、以下を実行:
$ cat /sys/class/drm/card0/device/pp_dpm_sclk
GPU 温度を確認するには、以下を実行:
$ cat /sys/class/drm/card0/device/hwmon/hwmon*/temp1_input
VRAM のクロックを確認するには、以下を実行:
$ cat /sys/class/drm/card0/device/pp_dpm_mclk
VRAM の使用率を確認するには、以下を実行:
$ cat /sys/class/drm/card0/device/mem_info_vram_used
VRAM のサイズを確認するには、以下を実行:
$ cat /sys/class/drm/card0/device/mem_info_vram_total
オーバークロック
Linux 4.17 以降、/sys/class/drm/card0/device/pp_od_clk_voltage
を介してグラフィックカードのクロックと電圧を調整できます。
ブートパラメータ
amdgpu.ppfeaturemask=0xffffffff
カーネルパラメータ を追加して、sysfs でクロックと電圧を調整するアクセスをアンロックする必要があります。
すべてのビットが定義されているわけではありません。今後、新しい機能が追加されるかもしれません。32ビットすべてを設定すると、不安定な機能が有効化され、画面のチラツキやサスペンドからの復帰に失敗するなどの問題が発生する場合があります。デフォルトの ppfeaturemask と共に PP_OVERDRIVE_MASK ビット (0x4000) を設定すれば十分なはずです。あなたのシステムにおいて適切なパラメータを計算するには、以下を実行してください:
$ printf 'amdgpu.ppfeaturemask=0x%x\n' "$(($(cat /sys/module/amdgpu/parameters/ppfeaturemask) | 0x4000))"
手動 (デフォルト)
例えば、Polaris GPU で最大 P-state 7 で GPU クロックを 1209MHz、電圧を 900mV に設定するには、以下を実行してください:
# echo "s 7 1209 900" > /sys/class/drm/card0/device/pp_od_clk_voltage
同じ手順を VRAM に対しても適用できます (例えば、Polaris 5xx シリーズカードでの最大 P-state 2):
# echo "m 2 1850 850" > /sys/class/drm/card0/device/pp_od_clk_voltage
適用するには:
# echo "c" > /sys/class/drm/card0/device/pp_od_clk_voltage
機能していることを確認するには、3D の負荷をかけている状態で、クロックと電圧を見てください:
# watch -n 0.5 cat /sys/kernel/debug/dri/0/amdgpu_pm_info
以下でデフォルトの値にリセットできます:
# echo "r" > /sys/class/drm/card0/device/pp_od_clk_voltage
ドライバに特定の P-state への切り替えを禁止することも可能です (例: チラツキやスタッタリングなどのディープ省電力 P-state での問題を回避する)。Polaris RX 5xx カードで最も高い VRAM P-state を強制し、GPU 自体は低いクロックでの動作を許可するには:
# echo "manual" > /sys/class/drm/card0/device/power_dpm_force_performance_level # echo "2" > /sys/class/drm/card0/device/pp_dpm_mclk
上位3つの GPU P-state のみを許可するには:
# echo "5 6 7" > /sys/class/drm/card0/device/pp_dpm_sclk
GPU の最大電力消費量を設定するには (例えば 50 ワット):
# echo 50000000 > /sys/class/drm/card0/device/hwmon/hwmon0/power1_cap
アシスト付き
GPU を手動でオーバークロックしたくない場合、AMD GPU のオーバークロックやモニタリングをアシストするいくつかのツールがコミュニティによって提供されています。
CLI ツール
- amdgpu-clocks — AMD GPU のモニタリングやカスタムの P-state を設定するために使用できるスクリプト。起動時に自動的に設定を適用する systemd サービスもあります。
GUI ツール
- TuxClocker — Qt5 のモニタリング・オーバークロックツール
- CoreCtrl — アプリケーション毎のプロファイルをサポートする、WattMan ライクな UI の GUI オーバークロックツール。
- LACT — AMD GPU の情報を表示し、制御する GTK ツール。
ブート時のスタートアップ
起動時に設定を自動的に適用したい場合、起動時に設定を構成・適用することに関するこの Reddit スレッドを見てみることを検討してください。
電源プロファイル
AMDGPU は電源プロファイルによるいくつかの最適化を提供します。最も一般的に使用されるのは、OpenCL を多用するアプリケーションのためのコンピュートモードです。利用可能な電源プロファイルは以下のように一覧表示できます:
cat /sys/class/drm/card0/device/pp_power_profile_mode
NUM MODE_NAME SCLK_UP_HYST SCLK_DOWN_HYST SCLK_ACTIVE_LEVEL MCLK_UP_HYST MCLK_DOWN_HYST MCLK_ACTIVE_LEVEL 0 BOOTUP_DEFAULT: - - - - - - 1 3D_FULL_SCREEN: 0 100 30 0 100 10 2 POWER_SAVING: 10 0 30 - - - 3 VIDEO: - - - 10 16 31 4 VR: 0 11 50 0 100 10 5 COMPUTE *: 0 5 30 10 60 25 6 CUSTOM: - - - - - -
特定の電源プロファイルを使用するには、まず GPU のマニュアルコントロールを有効化する必要があります:
# echo "manual" > /sys/class/drm/card0/device/power_dpm_force_performance_level
その後、電源プロファイルを選択するには、そのプロファイルと関連付けられた NUM の値を書き込みます。例えば、COMPUTE を有効化するには:
# echo "5" > /sys/class/drm/card0/device/pp_power_profile_mode
GPU ディスプレイスケーリングを有効化
モニタのネイティブ解像度を使用しない場合、ディスプレイに内蔵されているスケーラを用いずに、GPU 自体のスケーラを使うには、以下を実行してください:
$ xrandr --output output --set "scaling mode" scaling_mode
"scaling mode"
に利用できる値は: None
, Full
, Center
, Full aspect
。
- 利用可能な出力と設定を表示するには:
$ xrandr --prop
- 利用可能な出力全てに対してだけ
scaling mode = Full aspect
を設定するには:
$ for output in $(xrandr --prop | grep -E -o -i "^[A-Z\-]+-[0-9]+"); do xrandr --output "$output" --set "scaling mode" "Full aspect"; done
トラブルシューティング
Xorg やアプリケーションが起動しない
- glxgears を開いた後に "(EE) AMDGPU(0): [DRI2] DRI2SwapBuffers: drawable has no back or front?" エラー。Xorg サーバを開くことはできるが、OpenGL アプリケーションはクラッシュする。
- "(EE) AMDGPU(0): Given depth (32) is not supported by amdgpu driver" エラー。Xorg が起動しない。
Xorg でスクリーンの色深度を 16 か 32 に設定すると問題/クラッシュを引き起こします。これを防ぐには、"screen" セクションに以下を追加して標準的なスクリーン色深度である 24 を使う必要があります:
/etc/X11/xorg.conf.d/10-screen.conf
Section "Screen" Identifier "Screen" DefaultDepth 24 SubSection "Display" Depth 24 EndSubSection EndSection
スクリーンのアーティファクトと周波数の問題
動的電源管理は、(60Hz以上の) 高いリフレッシュレートでモニタを表示させた際にスクリーンのアーティファクトを発生させる場合があります。GPU のクロック速度の管理法に問題があるためです [1][2]。
回避策 [3] は /sys/class/drm/card0/device/power_dpm_force_performance_level
に high
か low
を書き込むことです。
これを永続化するには、udev ルールを作成することにより可能です:
/etc/udev/rules.d/30-amdgpu-pm.rules
KERNEL=="card0", SUBSYSTEM=="drm", DRIVERS=="amdgpu", ATTR{device/power_dpm_force_performance_level}="high"
KERNEL
の名前を判断するには以下を実行してください:
$ udevadm info --attribute-walk /sys/class/drm/card0 | grep "KERNEL="
GUI を用いる解決策もあります [4]: radeon-profile-gitAUR と radeon-profile-daemon-gitAUR で "power_dpm" を管理できます。
Chromium でアーティファクト
Chromium でアーティファクトが現れる場合、vulkan ベースのバックエンドの使用を強制すると解決するかもしれません。chrome://flags
を開き、#ignore-gpu-blacklist
と #enable-vulkan
を enable にしてください。
R9 390 シリーズで悪いパフォーマンス/不安定
AMD R9 390 シリーズのグラフィックカードで問題[5]が発生する場合、次のカーネルパラメータを設定して、radeon ではなく amdgpu ドライバの使用を強制してください: radeon.cik_support=0 radeon.si_support=0 amdgpu.cik_support=1 amdgpu.si_support=1 amdgpu.dc=1
これがうまく行かない場合、DPM を無効化すると解決するかもしれません。次をカーネルパラメータに追加してください: radeon.cik_support=0 radeon.si_support=0 amdgpu.cik_support=1 amdgpu.si_support=1
"[drm] IP block:gmc_v8_0 is hung!" カーネルエラーでフリーズ
GPU が大量の処理を行っている最中にフリーズやカーネルのクラッシュが発生して、"[drm] IP block:gmc_v8_0 is hung!" カーネルエラーが発生する場合 [6]、回避策は カーネルパラメータ amdgpu.vm_update_mode=3
を設定して GPUVM ページテーブルの更新を CPU を用いて行うように強制することです。デメリットはここにリストされています: [7]。
カーソルの破損
マウスカーソルが時々正しくレンダリングされない問題が発生する場合、/etc/X11/xorg.conf.d/20-amdgpu.conf
設定ファイルの "OutputClass"
セクションで Option "SWCursor" "True"
を設定してください。Wayland においては、グローバルな環境変数 KWIN_FORCE_SW_CURSOR=1
を設定してください。
スケーリングに xrandr
を使用していて、カーソルがチラついたり消えたりする場合、TearFree
プロパティを設定することで修正できる場合があります: xrandr --output HDMI-A-0 --set TearFree on
。
KDE の使用時に画面のちらつき
解像度を変更したり外部モニタに接続したりしたときに、画面がちらつく、あるいは白くなったままになる場合、カーネルパラメータ amdgpu.sg_display=0
を追加してください。
Vega カード上でのゲーム中にシステムのフリーズ/クラッシュ
動的電源管理は、ゲーム中にシステムの完全なフリーズを発生させる場合があります。GPU のクロック速度の管理法に問題があるためです [8]。回避策は動的電源管理を無効化することです。詳細は ATI#動的電源管理 を見てください。
WebRenderer (Firefox) の破損
WebRenderer がユーザによって強制的に有効化されている場合、アーティファクトやその他の異常が発生する場合があります(例: 拡張機能のオプションを選択できないなど)。回避策は OpenGL コンポジットにフォールバックすることです。
4K@60Hz のデバイスが接続されると音声の速度が2倍になる/音が高くなる/無音
これは、AMDGPU デバイスと、HDMI で接続された 4K ディスプレイとの間の通信の問題により時々発生します。利用可能な回避策は、ディスプレイの組み込み設定から HDR か "Ultra HD Deep Color" を有効化することです。多くの Android ベースのテレビでは、これは "Optimal" ではなく "Standard" を設定することを意味します。
ディスクリート amdgpu グラフィックカードにおける電源管理/動的再アクティブ化の問題
[9] に似た問題が発生する場合、カーネルパラメータ amdgpu.runpm=0
を設定することでこの問題を回避できます。このカーネルパラメータは、dGPU が実行時に動的にオフになることを防止します。
kfd: amdgpu: TOPAZ not supported in kfd
システムのジャーナルやカーネルメッセージキーリングに以下の critical レベルのエラーメッセージが出力される場合があります:
kfd: amdgpu: TOPAZ not supported in kfd
Radeon Open Compute を使用するつもりでないならば、これは安全に無視できます。古い GPU であるため、TOPAZ ではサポートされていません。[10] [11]