コンテンツにスキップ

「AMDGPU」の版間の差分

提供: ArchWiki
削除された内容 追加された内容
Kgx (トーク | 投稿記録)
AshMyzk (トーク | 投稿記録)
同期
 
(4人の利用者による、間の47版が非表示)
1行目: 1行目:
[[Category:グラフィック]]
[[Category:グラフィック]]
[[Category:X サーバー]]
[[Category:X サーバー]]
[[de:AMDGPU]]
[[hu:AMDGPU]]
[[en:AMDGPU]]
[[en:AMDGPU]]
[[ru:AMDGPU]]
[[ru:AMDGPU]]
[[zh-hans:AMDGPU]]
{{Related articles start}}
{{Related articles start}}
{{Related|AMD Catalyst}}
{{Related|ATI}}
{{Related|ATI}}
{{Related|Xorg}}
{{Related|Xorg}}
10行目: 12行目:
{{Related articles end}}
{{Related articles end}}


'''amdgpu'''最新の AMD Radeon グラフィックカードのオープンソースグラフィックドライバです。
[[Wikipedia:AMDGPU|AMDGPU]] [[wikipedia:ja:Graphics Core Next|Graphics Core Next]] ファミリの AMD Radeon グラフィックカード向けのオープンソースグラフィックドライバです。

現在のところ、''amdgpu'' がサポートしているのは [https://www.x.org/wiki/RadeonFeature/ Volcanic Islands] と [https://www.phoronix.com/scan.php?page=news_item&px=AMD-AMDGPU-Released Sea Islands] と [https://www.phoronix.com/scan.php?page=news_item&px=AMDGPU-SI-Experimental-Code Southern Islands] ファミリー以降のカードだけです。Southern Islands は実験的にサポートしています。GCN 以前の GPU をサポートする計画はありません。

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


== 適切なドライバーの選択 ==
== 適切なドライバーの選択 ==


お持ちードに応じて [https://wiki.archlinux.jp/index.php/Xorg#AMD Xorg#AMD] で適切なドライバ見つけてください。 このには、'''AMDGPU''' '''AMDGPUPRO''' の説明がありま
自身ードウェアを確認し、[[画像処理装置#インストール]] を読んで適切なドライバを探してください。このドライバは [https://www.x.org/wiki/RadeonFeature/ Southern Islands] (GCN 1。2012年リリス。) 及びそれ以降のカードをサポートしています。AMD には GCN り前の GPU をサポートする計画はありません

現在、Southern Islands(AI)カードを介した[https://www.x.org/wiki/RadeonFeature/ Southern Islands(SI)] のXorg [[radeon]] ドライバーサポートがあります。 AMD は GCN 以前の GPU をサポートする予定はありません。
サポートされていない GPU の所有者は、オープンソースの [[radeon]] または [[AMD Catalyst]] ドライバを使用できます。
サポートされない GPU については、オープンソースの [[ATI]] ドライバを使用できます。


== インストール ==
== インストール ==


{{Pkg|mesa}} パッケージを[[インストール]]してください。これには、3D アクセラレーションのための DRI ドライバーと、[[#ビデオアクセラレーション|動画デコードのアクセラレーション]]のための VA-API/VDPAU ドライバの両方が含まれています。
{{Note|プロプライエタリの Catalyst ドライバーから移行する場合、先に [[AMD Catalyst#アンインストール]] を読んでください。}}


{{Pkg|mesa}} パッケージを[[インストール]]してください。3D アクセラレーションのための DRI ドライバーが含まれています
* 32ビットアプリケーションのサポートに関しては、[[multilib]] リポジトリから {{Pkg|lib32-mesa}} パッケージインストールしてください。
* [[Xorg]] における 2D アクセラレーションに関しては、AMD 固有の DDX ドライバを提供する {{Pkg|xf86-video-amdgpu}} パッケージを任意でインストールしてもよいです。{{ic|amdgpu}} カーネルドライバを使用するほとんどの Xorg システムは、{{Pkg|xorg-server}} に組み込まれている汎用の ''modesetting'' DDX で正常に動作します。しかし、{{Pkg|xf86-video-amdgpu}} は、{{ic|TearFree}} などの機能を使用する場合や、''Southern Islands'' などの一部の AMD ハードウェアでのハードウェア固有の問題を解決するために、必要となることがあります。[[インテルグラフィックス#インストール]] に書かれているノートを参照してください。
* [[Vulkan]]をサポートするには、{{Pkg|vulkan-radeon}} (32ビットアプリケーションの場合は {{Pkg|lib32-vulkan-radeon}}) をインストールしてください。


=== 試験的 ===
* x86_64 環境で32ビットのサポートが必要な場合、[[multilib]] リポジトリから {{Pkg|lib32-mesa}} パッケージもインストールしてください。
* {{Pkg|xf86-video-amdgpu}} パッケージには [[Xorg]] の 2D アクセラレーションのための DDX ドライバーが含まれています。
* [[Vulkan]] のサポートが必要な場合は {{Pkg|vulkan-radeon}} パッケージをインストールしてください。


一部のユーザーにとっては、mesa の上流の試験的ビルドを使用する価値があるかもしれません。
[[#ビデオアクセラレーションの有効化|ビデオデコードのハードウェア支援]]機能は VA-API を使用する場合 {{Pkg|libva-mesa-driver}} と {{Pkg|lib32-libva-mesa-driver}} パッケージ、または {{Pkg|libva-vdpau-driver}} をインストールすることで使えます。VDPAU を使用する場合は {{Pkg|mesa-vdpau}} と {{Pkg|lib32-mesa-vdpau}} パッケージをインストールすることで使えます。


{{AUR|mesa-git}} パッケージをインストールしてください。これは 3D アクセラレーション用の DRI ドライバーを提供します。
=== 実験的 ===


* 32 ビットアプリケーションのサポートに関しては、''mesa-git'' リポジトリ、または [[AUR]] から {{AUR|lib32-mesa-git}} もインストールしてください。
一部のユーザーにとっては、 mesa のアップストリーム実験ビルドを使用して、標準の mesa パッケージに含まれていない AMDNavi の改善などの機能を有効にする価値があるかもしれません。
* ([[Xorg]] で 2D アクセラレーションを提供する) DDX ドライバに関しては、{{AUR|xf86-video-amdgpu-git}} パッケージをインストールしてください。
* ''mesa-git'' リポジトリを使用する [[Vulkan]] サポートに関しては、''vulkan-radeon-git'' パッケージをインストールしてください。任意で、32 ビットアプリケーションをサポートするために ''lib32-vulkan-radeon-git'' パッケージもインストールしてください。AUR から {{AUR|mesa-git}} をビルドする場合、これは必要ないはずです。


{{AUR|mesa-git}} パッケージをイストーします。これ 3D アクセラレション用の DRI ドライバーを提供します。
{{Tip|{{AUR|mesa-git}} パッケージのコパイを行いたくない場合、[[非公式ユリポジトリ#mesa-git|mesa-git]] 非公式リポジトリ使用できます。}}


=== Southern Islands (SI) と Sea Islands (CIK) のサポートを有効化 ===
* 32 ビットアプリケーションをサポートする場合は、 ''mesa-git'' リポジトリまたは [[AUR]] から {{AUR|lib32-mesa-git}} パッケージもインストールします。
* DDX ドライバー ([[Xorg]] で 2D アクセラレーションを提供) の場合は、 {{AUR|xf86-video-amdgpu-git}} パッケージをインストールします。
*以下の ''mesa-git'' リポジトリを使用した [[Vulkan]] サポートについては、''vulkan-radeon-git'' パッケージをインストールしてください。オプションで、32 ビットアプリケーションをサポートするために ''lib32-vulkan-radeon-git '' パッケージをインストールします。 AUR から {{AUR|mesa-git}} をビルドする場合、これは必要ありません。


[[カーネル#公式サポートカーネル|公式サポートカーネル]]では、Southern Islands (GCN 1。2012年リリース。) 及び Sea Islands (GCN 2。2013年リリース。) のカードの AMDGPU サポートが有効化されています。{{ic|amdgpu}} カーネルドライバは [[ATI|radeon]] ドライバより前にロードされる必要があります。どのカーネルドライバがロードされているかは {{ic|lspci -k}} で確認できます。以下のように出力されるはずです:
{{Note|X を起動するには、 LibLLVM をシンボリックリンクする必要がある場合があります。例:{{ic|ln -s /usr/lib/libLLVM-10git.so /usr/lib/libLLVM-10svn.so}}}}


{{hc|$ lspci -k -d ::03xx|
{{Tip| {{AUR|mesa-git}} パッケージのコンパイルプロセスを実行したくないユーザーは、[[非公式ユーザーリポジトリ#mesa-git|mesa-git]] 非公式リポジトリを使用できます。}}
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}} ドライバが使用されていない場合、次のセクションの指示に従ってください。
=== Southern Islands (SI) と Sea Islands (CIK) のサポートの有効化 ===


==== amdgpu ドライバをロード ====
{{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}} を構成で設定する必要があります。


{{ic|amdgpu}} モジュールと {{ic|radeon}} モジュールの両方の[[モジュールパラメータ]]は {{ic|1=cik_support=}} と {{ic|1=si_support=}} です。
==== 正しいモジュール順序を指定してください ====


これらは、カーネルパラメータまたは ''modprobe'' 設定ファイルで設定する必要があり、カードの GCN バージョンによって異なります。
カーネルによって SI/CIK の AMDGPU サポートが有効になっている場合でも、[[radeon]] ドライバーが {{ic|amdgpu}} ドライバーの前にロードされる場合があります。


どのカーネルカードを使用しているか不確かな場合は、両方のパラメータを使うことができます。
{{ic|amdgpu}} が [[Mkinitcpio#MODULES]] 配列の最初のモジュールとして設定されていることを確認してください。
例えば {{ic|1=MODULES=(amdgpu radeon)}}


{{Tip|[[dmesg]] は、使用すべき正しい方のカーネルパラメータを示してくれる場合があります: {{ic|1=[..] amdgpu 0000:01:00.0: Use radeon.cik_support=0 amdgpu.cik_support=1 to override}}}}
==== 必要なモジュールパラメータを設定します ====


{{ic|amdgpu}} モジュールと {{ic|radeon}} モジュールの両方の [[モジュールパラメータ]] は {{ic|1=cik_support=}} と {{ic|1=si_support=}} です。
===== コマンドラインでモジュールパラメータを設定 =====


らは、カーネルパラメータまたは ''modprobe'' 構成ファイルで設定する必要があり、カードの GCN バージョンによっ異なります。
次のいずかの[[カーネルパラメータ]]を設定ください:

{{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}}


さらに、統合 Sea Island (GCN 1.1) カードと AMD A10 APU を使用する場合、正しくブートさせるには Radeon Dynamic Power Management を無効化しておく必要がある場合があります。この機能には、グラフィックコアのクロックを動的に調整することで、APU の温度を下げ、静音性を高める目的があります。しかし、この機能のせいで再起動の無限ループに陥ることがあります。無効化するには、上記の手順に従い、{{ic|1=radeon.dpm=0}} をブートオプションに追加してください。
===== modprobe.d でモジュールパラメータを設定します =====


==== 正しいモジュール順序を指定 ====
{{ic|/etc/modprobe.d/}} に構成 [[modprobe]] ファイルを作成します。構文の詳細については、 {{man|5|modprobe.d}} を参照してください。


{{ic|amdgpu}} が [[Mkinitcpio#MODULES]] 配列の1番目のモジュールとして設定されていることを確認してください。例えば、{{ic|1=MODULES=(amdgpu radeon)}}。
Southern Islands(SI)の場合はオプション {{ic|1=si_support=1}} を使用し、Sea Islands(CIK)の場合はオプション {{ic|1=cik_support=1}} を使用します。例:

===== カーネルモジュールパラメータを設定 =====

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=
90行目: 90行目:
}}
}}


{{ic|modconf}} が {{ic|/etc/mkinitcpio.conf}} の {{ic|HOOKS}} 配列にあ[[initramfs]] を再生成すること確認してください。
{{ic|modconf}} が {{ic|/etc/mkinitcpio.conf}} の {{ic|HOOKS}} 配列にあることを確認し、[[Initramfs を再生成する|initramfs 再生成]]してください。


=== Vega 以前のカーで AMD DC 有効にする ===
===== amdgpuライバサポートするカーネルをコンパイル =====
{{Note|AMD DC はカーネル 4.15 以上で使用できます。}}
AMD DC (ディスプレイコード) はアトミックなモードセッティングや HDMI/DP オーディオをサポートする新しいディスプレイスタックです。GCN5/Vega 以降のカードではデフォルトで有効になります。


[[カーネル]]をビルド/コンパイルする場合、{{ic|1=CONFIG_DRM_AMDGPU_SI=Y}} と {{ic|1=CONFIG_DRM_AMDGPU_CIK=Y}} の一方/両方を config で設定する必要があります。
旧式のカード (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 こちらの記事] を参照。


=== AMDGPU PRO ===
=== ACO コンパイラ ===
{{Warning|Arch Linux は公式にはサポートされていません。}}
{{Note|
*プロプライエタリな OpenCL コンポーネントだけを使いたい場合は {{AUR|opencl-amd}} パッケージをインストールしてください。
*AMDGPU PRO 17.10 を使うには {{pkg|linux}} (4.9) と [[Xorg]] (1.18) パッケージの[[ダウングレード]]が必要になります。
}}


[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 よりも短いコンパイル時間と、ゲームでのより良いパフォーマンスを提供します。
AMD はオープンソースの AMDGPU カーネルドライバーの上で動作するバイナリのユーザーランドドライバー ''AMDGPU PRO'' を提供しています。AMDGPU PRO ドライバーは OpenGL, [[OpenCL]], [[Vulkan]], [[VDPAU]] をサポートしており、オープンソースドライバーよりも高い性能を発揮します。詳しくは [http://support.amd.com/en-us/kb-articles/Pages/AMDGPU-PRO-Driver-for-Linux-Release-Notes.aspx 最初のリリースノート] と [https://www.phoronix.com/forums/forum/linux-graphics-x-org-drivers/amd-linux/855699-amd-representative-says-their-vulkan-linux-driver-will-be-here-soon/page6 Phoronix フォーラムでのアナウンス] を参照してください。


いくつかのベンチマークは [https://gist.github.com/pendingchaos/aba1e4c238cf039d17089f29a8c6aa63 GitHub] や Phoronix [https://www.phoronix.com/scan.php?page=article&item=radv-aco-llvm&num=1][https://www.phoronix.com/scan.php?page=article&item=radv-aco-gcn10&num=1] で見られます。
公式の AMDGPU PRO ドライバーにパッチを適用したバージョンが {{AUR|amdgpu-pro}}{{Broken package link|パッケージが存在しません}} パッケージでインストールできます。

{{Pkg|mesa}} バージョン [https://docs.mesa3d.org/relnotes/20.2.0.html#new-features 20.2] から、ACO はデフォルトのシェーダコンパイラとなっています。


== ロード ==
== ロード ==


{{ic|amdgpu}} カーネルモジュールはシステムの起動時に自動的にロードされます。
{{ic|amdgpu}} カーネルモジュールはシステムの起動時に自動的にロードされることになっています。


ロードされない場合:
ロードされない場合:


* 最新の {{Pkg|linux-firmware}} パッケジがインスールされていることを確認してください。AMDGPU ドライバーは各モデルの最新ファームウェアがないと起動できません
* 必要な場合は [[#Southern Islands (SI) と Sea Islands (CIK) のサポートを有効化]]していることを確認してください。
* [[カーネルパラメータ]]に {{ic|nomodeset}} や {{ic|1=vga=}} を指定していないことを確認してください。{{ic|amdgpu}} [[KMS]] を必要とします。
* 最新の {{Pkg|linux-firmware-amdgpu}} パッケージがインストールされていことを確認してください。このドライバ、正しくブートするために各モデルの最新のファームウェアを必要とします。
* [[カーネルモジュール#ブックリスト|カーネルモジュルのブラックリスト]] {{ic|amdgpu}} が無効になっていない確認してください。
* [[カーネル]] {{ic|nomodeset}} や {{ic|1=vga=}} を指定し'''いない'''ことを確認してください。{{ic|amdgpu}} は [[KMS]] を必要とするからです
* [[カーネルモジュール#ブラックリスト|カーネルモジュールのブラックリスト]]で {{ic|amdgpu}} が無効になっていないことを確認してください。

=== Early KMS の有効化 ===

{{Tip|解像度に問題が発生する場合、[[Kernel Mode Setting#モードの強制と EDID]] を読んでください。}}

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

普通 KMS は [[Arch ブートプロセス#initramfs|initramfs]] の後に初期化されます。ただし、initramfs の段階で KMS を有効化することも可能です。{{ic|/etc/mkinitcpio.conf}} の {{ic|MODULES}} 行に {{ic|amdgpu}} モジュールを追加してください:

MODULES="... amdgpu ..."

そして、initramfs を再生成してください:

# mkinitcpio -p linux


読み込むことはできるが、X サーバが必要とする時よりも後になってしまう場合、[[カーネルモード設定#KMS の早期開始]] を見てください。
変更は再起動後に適用されます。


== Xorg の設定 ==
== Xorg の設定 ==


Xorg は自動的にドライバをロードしモニタの EDID を認識し最大解像度を設定します。必要な設定はドライバーのチューニングだけです。
[[Xorg]] は自動的にドライバをロードしモニタの EDID を使っネイティブの解像度を設定してくれます。設定が必要るのドライバチューニングする場合のみです。


手動で設定したい場合、{{ic|/etc/X11/xorg.conf.d/20-amdgpu.conf}} を作成して、以下を記述してください:
手動で設定したい場合、{{ic|/etc/X11/xorg.conf.d/20-amdgpu.conf}} を作成して、以下を記述してください:


{{hc|/etc/X11/xorg.conf.d/20-amdgpu.conf|2=
Section "Device"
Section "OutputClass"
Identifier "AMD"
Identifier "AMD"
MatchDriver "amdgpu"
Driver "amdgpu"
Driver "amdgpu"
EndSection
EndSection
}}


上記のセクションを使って、ドライバの設定を変更したり機能を有効にすることができます。
のセクションを使って、機能を有効化したりドライバの設定を調整したりできます。ドライバオプションを設定する前に、まず {{man|4|amdgpu}} を見てください


=== TearFree レンダリング ===
=== TearFree レンダリング ===


''TearFree'' は、ハードウェアのページめくりメカニズムを使用しティアリングを制御します。 このオプションが設定されている場合、プロパティのデフォルトそれに応じて ''オン'' または ''オフ'' になります。 このオプションが設定されていない場合プロパティのデフォルト値は auto です。これは、回転出力、 RandR 変換が適用された出力、および RandR 1.4スレーブ出力の場合は TearFree がオンになり、それ以外の場合はオフになります。
''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|HDMI-A-0}} のようなり {{ic|xrandr-q}} を実行して取得できます。
{{ic|''output''}} は {{ic|DisplayPort-0}} {{ic|HDMI-A-0}} のような形式である必要があます。この値は {{ic|xrandr -q}} 取得できます。


=== DRI レベル ===
=== DRI レベル ===


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


Option "DRI" "3"
Option "DRI" "3"
171行目: 155行目:
[[可変リフレッシュレート]] を参照してください。
[[可変リフレッシュレート]] を参照してください。


=== 10-bit カラー ===
=== 10 ビットカラー ===


{{Warning|10 ビットカラーを有効化すると、多くのアプリケーションでグラフィックの乱れやクラッシュを引き起こす場合があります。これには特に [[Steam/トラブルシューティング#Steam: An X Error occurred|Steam]] が含まれ、X Error によりクラッシュします。}}
新しい AMD カードは 10bpc カラーをサポートしていますが、デフォルトは 24 ビットカラーであり、30 ビットカラーを明示的に有効にする必要があります。 アプリケーションがこれもサポートしている場合、これを有効にすると、グラデーションの目に見える banding/artifacts を減らすことができます。 モニターがサポートしているかどうかを確認するには、 [https://wiki.archlinux.jp/index.php/Xorg#.E5.85.B1.E9.80.9A Xorgログファイル] で ''EDID'' を検索します (例:{{ic|/var/log/Xorg.0.log}} または {{ic|~/.local/share/xorg/Xorg.0.log}}):

新しい 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
182行目: 168行目:
[ 336.695] (II) AMDGPU(0): Digital Display Input
[ 336.695] (II) AMDGPU(0): Digital Display Input
'''[ 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バイトに格納されていると表示されます
デフォルトの設定では、24 であると表示されます (24 ビットが 4 バイトに格納されている)


10ビットが機能するかどうかを確認するには、 Xorg を実行している場合は終了し、 {{ic|Xorg -retro}} を実行して白黒のグリッドを表示し、 {{ic|Ctrl-Alt-F1}} と {を押します {{ic|Ctrl-C}} X を終了し、 {{ic|Xorg -depth 30 -retro}} を実行します これが正常に機能する場合は、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 -- -depth30}} を使用します 永続的に有効にするには、以下を作成または追加します。
{{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=
201行目: 187行目:
}}
}}


=== 出力のレイテンシを減らす ===
10 bpc カラーでは、さまざまなソフトウェアでグラフィックが表示されたりクラッシュすることがあります。


レイテンシを最小化したい場合、ページフリッピングや TearFree を無効化できます:
== パフォーマンスチューニング ==
=== ビデオアクセラレーションの有効化 ===
[[VA-API]] や [[VDPAU]] をインストールすることでハードウェアアクセラレーションによる動画のエンコード・デコードを行うことができます。


{{hc|/etc/X11/xorg.conf.d/20-amdgpu.conf|2=
=== ドライバーオプション ===
Section "OutputClass"
以下のオプションは {{ic|/etc/X11/xorg.conf.d/''20-amdgpu.conf''}} で設定します。
Identifier "AMD"
MatchDriver "amdgpu"
Driver "amdgpu"
Option "EnablePageFlip" "off"
Option "TearFree" "false"
EndSection
}}


ドラバーオプショの設定ついて詳{{man|4|amdgpu}}読んでください。
シを更減らたい場合[[ゲーム#DRI の遅延軽減する]] を見てください。


{{Note|これらのオプションを設定すると、ティアリングや短時間のアーティファクトが発生する場合があります。}}
'''DRI''' は有効にする DRI のレベルを設定します。DRI2 の場合は ''2''、DRI3 の場合は ''3'' と設定します。Xorg バージョン 1.18.3 以上ではデフォルト値は ''3'' となっており、古いバージョンでは DRI2 が使われます:


== 機能 ==
Option "DRI" "3"


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


[[ハードウェアビデオアクセラレーション#AMD/ATI]] を見てください。
Option "TearFree" "true"


== トラブルシューティング ==
=== モニタリング ===


GPU の温度や P-state を確認したい場合に GPU のモニタリングはしばしば行われます。CLI ツールと GUI ツールのリストは [[画像処理装置#モニタリング]] を見てください。
=== HDMI/DP の音声が出力されない ===


個々のパーツを手動でモニタリングしたい場合は (例えば、スクリプト内で使いたい場合)、情報は全て {{ic|/sys/}} で入手できます。その他のパーツや詳細については、[https://docs.kernel.org/gpu/amdgpu/thermal.html The Linux Kernel - GPU Power/Thermal Controls and Monitoring] を参照してください。
オープンソースの AMDGPU ドライバーはカーネル 4.15 でマージされた [[#Vega 以前のカードで AMD DC を有効にする|DC]] (旧 ''DAL'') のコードを使用します [https://www.phoronix.com/scan.php?page=news_item&px=AMDGPU-DC-Accepted]。カーネル 4.15 が[[公式リポジトリ]]から使用できるようになるまでは、HDMI や DisplayPort の音声サポートは利用できません。HDMI や DisplayPort から音声出力を使用するには [[#AMDGPU PRO|AMDGPU PRO]] ドライバーを使用するか {{AUR|linux-amd-staging-drm-next-git}} (または linux-amd-*) カーネルを使用する必要があります。


以下のコマンドでは、システム内にある GPU の数によっては {{ic|card0}} の部分を他の値 (例: {{ic|card1}}) に置き換える必要があるかもしれません。
=== HDMI で表示位置がおかしい ===


GPU の P-state を確認するには、以下を実行:
{{ic|1=amdgpu.audio=0}} [[カーネルパラメータ]]を使うことで (問題のある) HDMI の音声サポートを有効にしないようにできます [https://bugzilla.kernel.org/show_bug.cgi?id=195737]。

$ 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 温度 (ミリ°C) を確認するには、以下を実行:

$ 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 以降、以下の機能をブート時に有効化すると、{{ic|/sys/class/drm/card0/device/pp_od_clk_voltage}} を介してグラフィックカードのクロックと電圧を調整できるようになります。

==== ブートパラメータ ====

{{ic|1=amdgpu.ppfeaturemask=0xffffffff}} [[カーネルパラメータ]] を追加して、sysfs でクロックと電圧を調整するアクセスをアンロックする必要があります。

すべてのビットが定義されているわけではありません。今後、新しい機能が追加されるかもしれません。32ビットすべてを設定すると、不安定な機能が有効化され、画面のチラツキやサスペンドからの復帰に失敗するなどの問題が発生する場合があります。デフォルトの ppfeaturemask と共に PP_OVERDRIVE_MASK ビット (0x4000) を設定すれば十分なはずです。あなたのシステムにおいて適切なパラメータを計算するには、以下を実行してください:

$ printf 'amdgpu.ppfeaturemask=0x%x\n' "$(($(cat /sys/module/amdgpu/parameters/ppfeaturemask) | 0x4000))"

==== 手動 ====

{{Note|sysfs では、{{ic|/sys/class/drm/...}} のようなパスはただのシンボリックリンクで、起動するごとに変化するかもしれません。永続的なパスは {{ic|/sys/devices/}} にあります (例: {{ic|/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/}})。信頼性の高い結果を得るには、コマンドを適宜調整してください。}}

利用可能なオプションに関する詳細は、カーネルドキュメントの [https://docs.kernel.org/gpu/amdgpu/thermal.html#pp-od-clk-voltage amdgpu サーマルコントロール]に関する部分を読んでください。

手動オーバークロックを有効にするには、[[#パフォーマンスレベル]] で説明されているように {{ic|manual}} パフォーマンスレベルを選択してください。

例えば、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

{{Warning|入力した値をダブルチェックしてください。間違うと即座にハードウェアに深刻なダメージを引き起こすかもしれません!}}

適用するには:

# 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 へ切り替えるのを禁止することも可能です。最も高い VRAM P-state を強制し、GPU 自体は引き続き低いクロックで動作できるようにするには、まず利用可能な最も高い P-state を調べ、それを設定してください:

{{hc|$ cat /sys/class/drm/card0/device/pp_dpm_mclk|
0: 96Mhz *
1: 456Mhz
2: 675Mhz
3: 1000Mhz
}}

# echo "manual" > /sys/class/drm/card0/device/power_dpm_force_performance_level
# echo "3" > /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 '''50'''000000 > /sys/class/drm/card0/device/hwmon/hwmon0/power1_cap

{{Note|上記の手順は Polaris RX 560 カードでテストされました。別の GPU では、異なる挙動やバグが存在するかもしれません。}}

==== アシスト付き ====

GPU を手動でオーバークロックしたくない場合、AMD GPU のオーバークロックやモニタリングをアシストするいくつかのツールがコミュニティによって提供されています。

===== CLI ツール =====

* {{App|amdgpu-clocks|AMD GPU のモニタリングやカスタムの P-state を設定するために使用できるスクリプト。起動時に自動的に設定を適用する systemd サービスもあります。|https://github.com/sibradzic/amdgpu-clocks|{{AUR|amdgpu-clocks-git}}}}
* {{App|ruby-amdgpu_fan|amdgpu Linux ドライバと対話するための Ruby で書かれた CLI ツール|https://github.com/HarlemSquirrel/amdgpu-fan-rb|{{AUR|ruby-amdgpu_fan}}}}

===== GUI ツール =====

* {{App|TuxClocker|Qt5 のモニタリング・オーバークロックツール|https://github.com/Lurkki14/tuxclocker|{{AUR|tuxclocker}}}}
* {{App|CoreCtrl|アプリケーション毎のプロファイルをサポートする、WattMan ライクな UI の GUI オーバークロックツール。|https://gitlab.com/corectrl/corectrl|{{Pkg|corectrl}}}}
* {{App|LACT|AMD GPU の情報を見たり制御したりするための GTK ツール。|https://github.com/ilya-zlobintsev/LACT|{{Pkg|lact}}}}
* {{App|Radeon Profile|AMD Radeon カードの現在のクロックを読み込んだり変更したりする Qt5 ツール。|https://github.com/emerge-e-world/radeon-profile|{{AUR|radeon-profile-git}}}}

==== ブート時のスタートアップ ====

方法としては、一つは systemd ユニットを使うことです。起動時に設定を自動的に適用したい場合、起動時に設定を構成・適用することに関するこの [https://www.reddit.com/r/Amd/comments/agwroj/how_to_overclock_your_amd_gpu_on_linux/ Reddit スレッド]を見てみることを検討してください。

もう一つの方法は udev ルールです。例えば、パフォーマンスレベルを落とす値を設定して電力消費量を削減するには:

{{hc|/etc/udev/rules.d/30-amdgpu-low-power.rules|2=
ACTION=="add", SUBSYSTEM=="drm", DRIVERS=="amdgpu", ATTR{device/power_dpm_force_performance_level}="low"
}}

=== パフォーマンスレベル ===

AMDGPU にはいくつかのパフォーマンスレベルがあります。このレベルは power_dpm_force_performance_level ファイルで調整/確認することができます。以下のレベルから選択できます:

* '''auto''': 現在の条件に合わせて、ドライバー内で最適な電源プロファイルを動的に選択します。
* '''low''': クロック数は最低のパワーステートに強制されます。
* '''high''': クロック数は最高のパワーステートに強制されます。
* '''manual''': ユーザーは、各クロックドメインに対してどのパワーステートを有効化するかを手動で選択することができます ([[#電源プロファイル]]を設定する際に使用します)。
* '''profile_standard'''、'''profile_min_sclk'''、'''profile_min_mclk'''、'''profile_peak''': クロックとパワーのゲーティングが無効化され、クロックはそれぞれのプロファイルに応じて設定されます。このモードは、特定のワークロードに対してプロファイルする際に推奨されます。

以下のコマンドを実行すると、AMDGPU デバイスをパフォーマンスレベル low に設定します:

# echo "low" > /sys/class/drm/card0/device/power_dpm_force_performance_level

{{Note|パフォーマンスレベルは起動のたびに再設定する必要があります。設定を自動化する方法は [[#ブート時のスタートアップ]] を見てください。}}

=== 電源プロファイル ===

AMDGPU は電源プロファイルによるいくつかの最適化を提供します。最も一般的に使用されるのは、OpenCL を多用するアプリケーションのためのコンピュートモードです。利用可能な電源プロファイルは以下のように一覧表示できます:

{{hc|$ 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: - - - - - -
}}

{{Note|{{ic|card0}} はマシンの特定の GPU を示します。複数の GPU が搭載されている場合、正しい GPU を選ぶように気をつけてください。}}

特定の電源プロファイルを使用するには、まず 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

電源プロファイルの正確な値と制限は、''powerplay table'' システムを通して管理されています。サポートされているモデル (Polaris から Navi2x まで。Navi3x と Navi4x はカーネルにバグがあります。) でこのテーブルを変更するには {{AUR|upliftpowerplay}} を使用してください。

{{Note|電源プロファイルの変更は起動するたびに適用する必要があります。これを自動化するには [[#ブート時のスタートアップ]] を見てください。}}

=== GPU ディスプレイスケーリングを有効化 ===

モニタのネイティブ解像度を使用しない場合、ディスプレイに内蔵されているスケーラを用いずに、GPU 自体のスケーラを使うには、以下を実行してください:
$ xrandr --output ''output'' --set "scaling mode" ''scaling_mode''

{{ic|"scaling mode"}} に利用できる値は: {{ic|None}}, {{ic|Full}}, {{ic|Center}}, {{ic|Full aspect}}。

* 利用可能な出力と設定を表示するには: {{bc|$ xrandr --prop}}
* 利用可能な全ての出力に {{ic|1=scaling mode = Full aspect}} を設定するには: {{bc|$ for output in $(xrandr --prop {{!}} grep -E -o -i "^[A-Z\-]+-[0-9]+"); do xrandr --output "$output" --set "scaling mode" "Full aspect"; done}}

=== ヘッドレス環境での仮想ディスプレイ ===

AMDGPU はヘッドレス環境向けに、ダミープラグを使用しない、GPU アクセラレートされた仮想モニターを提供しています。これは RDP や {{AUR|sunshine}} といったゲームストリーミングソフトウェアで便利です。

使用する AMD GPU を選択してください:

{{hc|$ lspci -Dd ::03xx|
'''1234:56:78.9''' VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] ''CommercialModelName''
}}

{{ic|amdgpu}} に対して {{ic|1=virtual_display=''1234:56:78.9'',''x''}} [[カーネルモジュールパラメータ]]を追加してください。{{ic|''1234:56:78.9''}} の部分は GPU の PCI アドレスで、{{ic|''x''}} は公開する crtc (仮想モニター) の番号です。このパラメータを使用すると物理出力は無効化されます。[https://bugzilla.kernel.org/show_bug.cgi?id=203339]

以下のように PCI アドレスをセミコロンで区切ることで、複数の GPU を使用することも可能です:

amdgpu.virtual_display=1234:56:78.9,''x'';9876:54:32.1,''y''

=== ユーザーキュー ===

AMDGPU ドライバはユーザーキューをサポートしています。これにより、カーネルドライバのコマンドサブミッション ioctl を介さずに、ジョブを直接 GPU ハードウェアにサブミットすることができます。
この機能を有効化することで、カーネルドライバのオーバヘッドがいくらか回避され、レイテンシを軽減し効率を向上させることができます。

ユーザーキューを有効化するには、以下の環境変数を設定してください:

export AMD_USERQ=1

=== SDMA による転送のみの専用キュー ===

Mesa 26.0 にマージされたコードは、GFX9 (Vega) 及びそれより新しい GPU で動作する、RADV の専用転送キューのサポートが含まれています。現在、この機能を有効化するには {{ic|RADV_PERFTEST{{=}}transfer_queue}} [[環境変数]]を設定する必要があります。DXVK Direct3D-on-Vulkan レイヤーは、Vulkan の転送キューのサポートを活用するためにソフトウェアないに存在しています。しかし、この新しい機能を正当化するようなパフォーマンス/ベンチマークの数値が[https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25594 マージリクエスト]には含まれていません。

== トラブルシューティング ==

=== モジュールパラメータ ===

amdgpu モジュールは、いくつかの設定パラメータ ({{ic|modinfo amdgpu {{!}} grep mask}}) を[https://raw.githubusercontent.com/torvalds/linux/master/drivers/gpu/drm/amd/include/amd_shared.h カーネルのソースコード]でしかドキュメント化していないマスク内に隠しています。


=== Xorg やアプリケーションが起動しない ===
=== Xorg やアプリケーションが起動しない ===


* ''glxgears'' を開いた後に "(EE) AMDGPU(0): [DRI2] DRI2SwapBuffers: drawable has no back or front?" エラー。Xorg サーバを開くことはできるが、OpenGL アプリケーションはクラッシュする。
Xorg の色深度を 16 や 32 に設定すると以下のような問題が発生します:
* "(EE) AMDGPU(0): Given depth (32) is not supported by amdgpu driver" エラー。Xorg が起動しない。

Xorg でスクリーンの色深度を 16 か 32 に設定すると問題/クラッシュを引き起こします。これを防ぐには、"screen" セクションに以下を追加して標準的なスクリーン色深度である 24 を使う必要があります:

{{hc|/etc/X11/xorg.conf.d/10-screen.conf|
Section "Screen"
Identifier "Screen"
DefaultDepth 24
SubSection "Display"
Depth 24
EndSubSection
EndSection
}}

=== スクリーンのアーティファクトと周波数の問題 ===

[[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|high}} あるいは {{ic|low}} に設定することです。

カーネルのバージョンを変更することでもこの問題を解決できる場合があります。例えば、バージョン 6.12.9 では問題は解決されているようです。

==== Chromium でアーティファクト ====

[[Chromium]] でアーティファクトが現れる場合、vulkan ベースのバックエンドの使用を強制すると解決するかもしれません。{{ic|chrome://flags}} を開き、{{ic|#ignore-gpu-blocklist}} と {{ic|#enable-vulkan}} を ''enable'' にしてください。

=== R9 390 シリーズで悪いパフォーマンス/不安定 ===

AMD R9 390 シリーズのグラフィックカードで問題[https://gitlab.freedesktop.org/mesa/mesa/-/issues/1222]が発生する場合、次の[[カーネルパラメータ]]を設定して、radeon ではなく amdgpu ドライバの使用を強制してください: {{ic|1=radeon.cik_support=0 radeon.si_support=0 amdgpu.cik_support=1 amdgpu.si_support=1 amdgpu.dc=1}}

これがうまく行かない場合、DPM を無効化すると解決するかもしれません。次を[[カーネルパラメータ]]に追加してください: {{ic|1=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!" カーネルエラーが発生する場合 [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|1=amdgpu.sg_display=0}} を追加してください。

=== Vega カード上でのゲーム中にシステムのフリーズ/クラッシュ ===

[[ATI#動的電源管理|動的電源管理]]は、ゲーム中にシステムの完全なフリーズを発生させる場合があります。GPU のクロック速度の管理法に問題があるためです [https://gitlab.freedesktop.org/drm/amd/-/issues/716]。回避策は、[[#パフォーマンスレベル]] で説明されているようにパフォーマンスレベルを {{ic|high}} に設定することです。。

=== WebRenderer (Firefox) の破損 ===

[[:en:Firefox/Tweaks#WebRender|WebRenderer]] がユーザによって強制的に有効化されている場合、アーティファクトやその他の異常が発生する場合があります(例: 拡張機能のオプションを選択できないなど)。回避策は OpenGL コンポジットにフォールバックすることです。

=== 4K@60Hz のデバイスが接続されると音声の速度が2倍になる/音が高くなる/無音 ===

これは、AMDGPU デバイスと、HDMI で接続された 4K ディスプレイとの間の通信の問題により時々発生します。利用可能な回避策は、ディスプレイの組み込み設定から HDR か "Ultra HD Deep Color" を有効化することです。多くの Android ベースのテレビでは、これは "Optimal" ではなく "Standard" を設定することを意味します。

=== ディスクリート amdgpu グラフィックカードにおける電源管理/動的再アクティブ化の問題 ===

カーネルドライバはロードされたが、ゲームでディスクリートグラフィックカードを利用できない、または使用中に無効化されてしまう問題が発生する場合 ([https://gitlab.freedesktop.org/drm/amd/-/issues/1820] に似た問題)、[[カーネルパラメータ]] {{ic|1=amdgpu.runpm=0}} を設定することでこの問題を回避できます。このカーネルパラメータは、dGPU が実行時に動的にオフになることを防止します。

=== ディスプレイが固まる、または応答しなくなる (flip_done timed out) ===

amdgpu ドライバのバグにより、ディスプレイが更新されなくなることがあります[https://gitlab.freedesktop.org/drm/amd/-/issues/4141]。回避策として、{{ic|1=amdgpu.dcdebugmask=0x10}} か {{ic|1=amdgpu.dcdebugmask=0x12}} [[カーネルパラメータ]]を追加することが提案されています。

=== kfd が初期化に失敗する ===

GPU のアーキテクチャによっては、kfd が初期化に失敗することがあります。gfx803 (GCN 4) は PCIe atomics のサポートを必要とします。一方、gfx9xx (Vega) 及びそれ以降のデバイスは、PCIe atomics が必要ありません。kfd は GCN 3 及びそれより古いデバイスをサポートしていません。

[[GPGPU#ROCm|ROCm]] を使用するつもりがないならば、このエラーは安全に無視できます。

==== "[GPU Core Name] not supported in kfd" ====

システムのジャーナルやカーネルのメッセージに、kfd 関連の critical レベルのエラーメッセージが現れることがあります:

{{hc|# dmesg {{!}} grep kfd|
kfd kfd: amdgpu: BONAIRE not supported in kfd
}}

(BONAIRE の部分は GPU 内のコアの名前によって変わります (TOPAZ、HAWAII など)。コア名は GPU を見たり、{{pkg|amdgpu_top}} などのGPU の診断ユーティリティを使うことで分かります。)

このエラーは、kfd は使用中の GPU をサポートしておらず、ROCm で動作しないことを意味しています。[https://github.com/RadeonOpenCompute/ROCm/issues/1148#issuecomment-747849592][https://www.reddit.com/r/linuxquestions/comments/yhbbiz/kfd_kfd_amdgpu_topaz_not_supported_in_kfd/]

==== "PCI rejects atomics" ====

GCN 4 GPU では、CPU が PCIe atomics をサポートしている必要があり、GPU のあるスロットは少なくとも PCIe 3.0 をサポートしている必要があります。[https://github.com/ROCm/ROCm/issues/2224#issuecomment-2299689450] これらの要件が満たされない場合、以下のメッセージが出力されます:

{{hc|# dmesg {{!}} grep kfd|
kfd kfd: amdgpu: skipped device 1002:67e3, PCI rejects atomics 730<0
}}

使用中の CPU が PCIe atomics をサポートしているかどうかは、以下のコマンドで分かります:

grep flags /sys/class/kfd/kfd/topology/nodes/*/io_links/0/properties

使用中の CPU が PCIe atomics をサポートしている (つまり、先の出力が {{ic|1}}) がエラーが発生する場合、GPU のあるスロットを変更してください。そのスロットは、CPU からではなく、チップセットから来ているレーンなのかもしれません。

=== MCLK が MAX (1000Mhz) に固定されてアイドル時に高い電力消費、または MIN (96MHz) に固定されてゲームのパフォーマンスが悪化 (カーネル 6.4) ===

高解像度かつ高リフレッシュレートの場合、MCLK (vram / メモリのクロック) が最も高いクロックレート (1000MHz) に固定されてしまい [https://gitlab.freedesktop.org/drm/amd/-/issues/1403] [https://gitlab.freedesktop.org/drm/amd/-/issues/2646]、アイドル時に GPU の電力消費が増加してしまう場合があります。Linux カーネル 6.4.x では、MCLK クロックが最低値 (96MHz) になって、ゲームのパフォーマンスが低下してしまいます [https://gitlab.freedesktop.org/drm/amd/-/issues/2657] [https://gitlab.freedesktop.org/drm/amd/-/issues/2611]。

これは、モニタが Coordinated Video Timings (CVT) を使用しておらず、影響を受ける解像度とリフレッシュレートに対する V-Blank 値が低いことが原因である可能性があります。回避策は[https://gist.github.com/Rend0e/3bddac4285dc1f4fbe303f326f36f6cc この gist] を見てください。

=== Suspend to RAM に失敗する ===

十分にリフレッシュされない VRAM のデータ消失を防ぐために、{{ic|amdgpu}} カーネルモジュールはシステムが S3 スリープに入るときに VRAM の内容を RAM 内に保存します。

大量の VRAM を使用していて RAM に十分な空き容量がない場合、たとえ十分なスワップメモリが存在していたとしても、[https://gitlab.freedesktop.org/drm/amd/-/issues/2125 このプロセスが失敗する可能性があります] (IO サブシステムがすでにサスペンドされているかもしれないため)。

このとき、以下のようなメッセージが出力されます:

kernel: systemd-sleep: page allocation failure: order:0, mode:0x100c02(GFP_NOIO|__GFP_HIGHMEM|__GFP_HARDWALL), nodemask=(null),cpuset=/,mems_allowed=0
kernel: Call Trace:
kernel: <TASK>
kernel: dump_stack_lvl+0x47/0x60
kernel: warn_alloc+0x165/0x1e0
kernel: __alloc_pages_slowpath.constprop.0+0xd7d/0xde0
kernel: __alloc_pages+0x32d/0x350
kernel: ttm_pool_alloc+0x19f/0x600 [ttm 0bd92a9d9dccc3a4f19554535860aaeda76eb4f4]

回避策としては、システムがサスペンドする前に十分な RAM 領域をスワップアウトして VRAM を格納できるのに十分な空き領域を RAM に確保しておく[https://git.dolansoft.org/lorenz/memreserver ユーザー空間のサービス]を使うというものがります。

=== 間違った GPU クロックにより複数の問題が発生する ===

{{Accuracy|
* Users provide unreliable reports and operate under wrong assumptions. See [https://gitlab.freedesktop.org/drm/amd/-/issues/3131#note_3007563 explanation].
* If you carefully read through the related issues, the problem appear to be caused by some internal setup of GPU power profiles. Which means the shader clock frequency is not the actual issue here, lowering it is more of a workaround, and it decreases performance.
* Patches addressing the problem were already merged a few major kernel releases back.
* If you are still getting crashes with similar dmesg logs, consider disabling GFXOFF (see [https://gitlab.freedesktop.org/drm/amd/-/issues/3067#note_2959002])
}}

amdgpu モジュールにはバグがあり、ビデオコアの周波数が製造業者によって設定された値よりも高くなることがあります。これにより、ゲーム中やスリープからの復帰時、再起動時にシステムが不安定になることがあります。

この問題は、RDNA 3 GPU (7XXX モデル) で報告されています[https://www.reddit.com/r/linux_gaming/comments/1dyhizb/fyi_for_amd_card_owners_the_linux_kernel_is/] [https://wiki.gentoo.org/wiki/AMDGPU#Frequent_and_Sporadic_Crashes] [https://gitlab.freedesktop.org/drm/amd/-/issues/3131]。

dmesg に以下のようなログが出てきます:

amdgpu: [gfxhub] page fault (src_id:0 ring:40 vmid:6 pasid:32830)
amdgpu: in process GameThread pid 100056 thread vkd3d_queue pid 100468)
amdgpu: in page starting at address 0x0000000218a36000 from client 10
amdgpu: GCVM_L2_PROTECTION_FAULT_STATUS:0x00641051
amdgpu: Faulty UTCL2 client ID: TCP (0x8)
amdgpu: MORE_FAULTS: 0x1
amdgpu: WALKER_ERROR: 0x0
amdgpu: PERMISSION_FAULTS: 0x5
amdgpu: MAPPING_ERROR: 0x0
amdgpu: RW: 0x1

似たような問題が発生する場合は、システムのビデオコアの最大周波数と製造業者の公式の周波数とを比較してください。最大周波数を下げる方法は、[[#オーバークロック]] を見てください。

=== AMD の専用 GPU の HDMI が Wayland でフリーズする ===

具体例として、AMD CPU と専用 AMD GPU を搭載している ASUS G14 2022 ノート PC があります。最も成功しやすい方法では、dGPU Ultimate power オプションを強制するために Windows で armor crate を使う必要があります。これにより、GPU の順序とノート PC の内部電源ポリシーが切り替わります。これにより HDMI が機能するようになるはずですが、統合 GPU (SDDM と Wayland はこちらをデフォルトで選択します) と専用 GPU とでレンダリングが別々になります。アプリケーションの起動前に {{ic|1=DRI_PRIME=0}} 環境変数を設定することでレンダリングを行う GPU を選択できますが、これは簡便ではありません。以下のように設定を変更することで環境変数を設定できますが、バッテリー駆動時にバッテリーの持ちが悪くなります:

{{hc|/etc/sddm.conf.d/hardware.conf|2=
[General]
DisplayServer=wayland
[Wayland]
CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts
Environment=DRI_PRIME=0
}}

これに加えて、以下のカーネルパラメータを追加する必要があります:

amdgpu.runpm=0 amdgpu.modeset=1

=== ノート PC で色があせて薄い ===

{{Pkg|power-profiles-daemon}} や {{Pkg|tuned}} などの省電力アプリケーションは、Panel Power Savings (PPS) として知られる機能を[https://www.phoronix.com/news/Power-Profiles-Daemon-0.20 有効にする]ようになりました。

PPS はノート PC でサポートされている機能で、ノート PC の GPU に色精度を犠牲にする代わりに省電力にするように命令します。しかし、この機能を使うと、前述の power-profiles-daemon や tuned でより強力な省電力モードを選択すると色があせてしまう傾向にあります。そのため、この機能を完全に無効化する人もいます。

以下の[[カーネルパラメータ]]をゼロに設定することで無効化できます:

amdgpu.abmlevel=0

=== アイドル時にシステムがフリーズしたり再起動したりする ===

いくつかの PowerPlay 機能 ([https://www.phoronix.com/news/AMDGPU-GFXOFF-Patches GFXOFF] など) の問題により、高頻度の回復不可能なドライバのクラッシュが発生することがあります[https://forum.endeavouros.com/t/random-crashes-amdgpu/70453]。これは、複数モニターの環境で GPU のアイドル時、とくにスリープモードからの復帰時に発生します。


よく知られた解決法は、([[#ブートパラメータ]] で説明されているように) PP_GFXOFF_MASK を無効化するカーネルパラメータを追加することです (例: {{ic|1=amdgpu.ppfeaturemask=0xffff7fff}}。これは、他の PowerPlay 機能 (実装されているものも未実装のものも含む) を有効化したままにします)。
* {{ic|(EE) AMDGPU(0): [DRI2] DRI2SwapBuffers: drawable has no back or front?" error after opening glxgears}} で OpenGL アプリがクラッシュする。
* {{ic|(EE) AMDGPU(0): Given depth (32) is not supported by amdgpu driver}} エラーで Xorg が起動しない。


もう一つの方法は、GFXOFF 以外の機能も無効化する方法を利用することです:
({{ic|/etc/X11/xorg.conf.d/10-screen.conf}} ファイルの) "screen" セクションに以下を追加して標準的な色深度である 24 を使うようにしてください:


* {{ic|0xfffd7fff}} で [https://www.reddit.com/r/linux4noobs/comments/1ahb8pf/comment/koppio6/ PP_GFXOFF_MASK と PP_STUTTER_MODE] を無効化する。
Section "Screen"
* {{ic|0xfffd3fff}} で [https://forum.endeavouros.com/t/random-crashes-amdgpu/70453/7?u=krzeszny PP_GFXOFF_MASK、PP_STUTTER_MODE、PP_OVERDRIVE_MASK] を無効化する。
Identifier "Screen"
* {{ic|0xfff73fff}} で [https://forum.endeavouros.com/t/random-crashes-amdgpu/70453/15?u=krzeszny PP_GFXOFF_MASK、PP_GFX_DCS_MASK、PP_OVERDRIVE_MASK] を無効化する。
DefaultDepth 24
* {{ic|0}} (あるいは {{ic|0x0}}) で全ての機能を無効化する。ドライバのクラッシュの原因が分からない場合はこれを使うことができます。
SubSection "Display"
Depth 24
EndSubSection
EndSection


[https://miniwebtool.com/bitwise-calculator/?data_type=16&number1=ffffffff&number2=8000&operator=XOR 16進数のビット計算機] (リンク先に例あり) で計算して、{{ic|1=amdgpu.ppfeaturemask=0x}} の後にその計算した8文字のマスクを加えることで自分で機能マスクを作ることができます。{{ic|ffffffff}} (全ビット1) から初めて、[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/amd/include/amd_shared.h#n185 マスクしたい機能]を '''XOR''' してください。計算結果に機能を XOR していくことができます。最初のゼロでない文字は全て省略できます。例えば、0x8000 と 0x00008000 は等価です。
=== 周波数を上げたときに画面が崩れる問題が起こる ===


カーネルの更新時にパラメータが消されないように注意してください。
ディスプレイの周波数を 120Hz 以上に設定したときにディスプレイに乱れが発生する場合、メモリクロックや GPU クロックが低すぎてディスプレイに応答できていません。


=== HDMI 4K が 120Hz までしか上がらない ===
以下を実行することで解決できます [https://bugs.freedesktop.org/show_bug.cgi?id=96868#c13]:


[https://www.phoronix.com/news/HDMI-2.1-OSS-Rejected ライセンス上の問題]により、{{pkg|mesa}} ドライバは HDMI 2.1 をサポートできません。DisplayPort を使う必要があります。ディスプレイが DisplayPort をサポートしていない場合、DisplayPort の入力を HDMI 2.1 の信号に変換する[https://www.reddit.com/r/linux_gaming/comments/1nh5y0f/hdmi_21_works_on_amd_gpu_with_this_converter/ コンバータを使って HDMI 2.1 を使うことができたというユーザがいます]。
# echo high > /sys/class/drm/card0/device/power_dpm_force_performance_level


== 参照 ==
または:


* [[Gentoo:AMDGPU]]
# echo low > /sys/class/drm/card0/device/power_dpm_force_performance_level
* [https://gitlab.freedesktop.org/drm/amd AMDGPU イシュートラッカー]


{{TranslationStatus|AMDGPU|2026-02-14|862509}}
{{aur|radeon-profile-git}} や {{aur|radeon-profile-daemon-git}} を使うことで GUI で "power_dpm" を管理することもできます [https://github.com/marazmista/radeon-profile]。

2026年2月14日 (土) 06:57時点における最新版

関連記事

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

適切なドライバーの選択

自身のハードウェアを確認し、画像処理装置#インストール を読んで適切なドライバを探してください。このドライバは Southern Islands (GCN 1。2012年リリース。) 及びそれ以降のカードをサポートしています。AMD には GCN より前の GPU をサポートする計画はありません。

サポートされない GPU については、オープンソースの ATI ドライバを使用できます。

インストール

mesa パッケージをインストールしてください。これには、3D アクセラレーションのための DRI ドライバーと、動画デコードのアクセラレーションのための VA-API/VDPAU ドライバの両方が含まれています。

  • 32ビットアプリケーションのサポートに関しては、multilib リポジトリから lib32-mesa パッケージもインストールしてください。
  • Xorg における 2D アクセラレーションに関しては、AMD 固有の DDX ドライバを提供する xf86-video-amdgpu パッケージを任意でインストールしてもよいです。amdgpu カーネルドライバを使用するほとんどの Xorg システムは、xorg-server に組み込まれている汎用の modesetting DDX で正常に動作します。しかし、xf86-video-amdgpu は、TearFree などの機能を使用する場合や、Southern Islands などの一部の AMD ハードウェアでのハードウェア固有の問題を解決するために、必要となることがあります。インテルグラフィックス#インストール に書かれているノートを参照してください。
  • Vulkanをサポートするには、vulkan-radeon (32ビットアプリケーションの場合は lib32-vulkan-radeon) をインストールしてください。

試験的

一部のユーザーにとっては、mesa の上流の試験的ビルドを使用する価値があるかもしれません。

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 をビルドする場合、これは必要ないはずです。
ヒント mesa-gitAUR パッケージのコンパイルを行いたくない場合は、mesa-git 非公式リポジトリを使用できます。

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

公式サポートカーネルでは、Southern Islands (GCN 1。2012年リリース。) 及び Sea Islands (GCN 2。2013年リリース。) のカードの AMDGPU サポートが有効化されています。amdgpu カーネルドライバは radeon ドライバより前にロードされる必要があります。どのカーネルドライバがロードされているかは lspci -k で確認できます。以下のように出力されるはずです:

$ lspci -k -d ::03xx
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

さらに、統合 Sea Island (GCN 1.1) カードと AMD A10 APU を使用する場合、正しくブートさせるには Radeon Dynamic Power Management を無効化しておく必要がある場合があります。この機能には、グラフィックコアのクロックを動的に調整することで、APU の温度を下げ、静音性を高める目的があります。しかし、この機能のせいで再起動の無限ループに陥ることがあります。無効化するには、上記の手順に従い、radeon.dpm=0 をブートオプションに追加してください。

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

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

カーネルモジュールパラメータを設定

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=YCONFIG_DRM_AMDGPU_CIK=Y の一方/両方を config で設定する必要があります。

ACO コンパイラ

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

いくつかのベンチマークは GitHub や Phoronix [1][2] で見られます。

mesa バージョン 20.2 から、ACO はデフォルトのシェーダコンパイラとなっています。

ロード

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 スレーブ出力に対してオンになり、それら以外ではオフになります。truefalse を指定することで、常にオンにしたり、常にオフにしたりもできます。

Option "TearFree" "true"

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

$ xrandr --output output --set TearFree on

outputDisplayPort-0HDMI-A-0 のような形式である必要があります。この値は xrandr -q で取得できます。

DRI レベル

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

Option "DRI" "3"

可変リフレッシュレート

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

10 ビットカラー

警告 10 ビットカラーを有効化すると、多くのアプリケーションでグラフィックの乱れやクラッシュを引き起こす場合があります。これには特に Steam が含まれ、X Error によりクラッシュします。

新しい 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-F1Ctrl-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 の遅延を軽減する を見てください。

ノート これらのオプションを設定すると、ティアリングや短時間のアーティファクトが発生する場合があります。

機能

ビデオアクセラレーション

ハードウェアビデオアクセラレーション#AMD/ATI を見てください。

モニタリング

GPU の温度や P-state を確認したい場合に GPU のモニタリングはしばしば行われます。CLI ツールと GUI ツールのリストは 画像処理装置#モニタリング を見てください。

個々のパーツを手動でモニタリングしたい場合は (例えば、スクリプト内で使いたい場合)、情報は全て /sys/ で入手できます。その他のパーツや詳細については、The Linux Kernel - GPU Power/Thermal Controls and Monitoring を参照してください。

以下のコマンドでは、システム内にある GPU の数によっては card0 の部分を他の値 (例: card1) に置き換える必要があるかもしれません。

GPU の P-state を確認するには、以下を実行:

$ cat /sys/class/drm/card0/device/pp_od_clk_voltage

GPU をモニタリングするには、以下を実行:

  1. 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 温度 (ミリ°C) を確認するには、以下を実行:

$ 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))"

手動

ノート sysfs では、/sys/class/drm/... のようなパスはただのシンボリックリンクで、起動するごとに変化するかもしれません。永続的なパスは /sys/devices/ にあります (例: /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/)。信頼性の高い結果を得るには、コマンドを適宜調整してください。

利用可能なオプションに関する詳細は、カーネルドキュメントの amdgpu サーマルコントロールに関する部分を読んでください。

手動オーバークロックを有効にするには、#パフォーマンスレベル で説明されているように manual パフォーマンスレベルを選択してください。

例えば、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 へ切り替えるのを禁止することも可能です。最も高い VRAM P-state を強制し、GPU 自体は引き続き低いクロックで動作できるようにするには、まず利用可能な最も高い P-state を調べ、それを設定してください:

$ cat /sys/class/drm/card0/device/pp_dpm_mclk
0: 96Mhz *
1: 456Mhz
2: 675Mhz
3: 1000Mhz
# echo "manual" > /sys/class/drm/card0/device/power_dpm_force_performance_level
# echo "3" >  /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
ノート 上記の手順は Polaris RX 560 カードでテストされました。別の GPU では、異なる挙動やバグが存在するかもしれません。

アシスト付き

GPU を手動でオーバークロックしたくない場合、AMD GPU のオーバークロックやモニタリングをアシストするいくつかのツールがコミュニティによって提供されています。

CLI ツール
  • amdgpu-clocks — AMD GPU のモニタリングやカスタムの P-state を設定するために使用できるスクリプト。起動時に自動的に設定を適用する systemd サービスもあります。
https://github.com/sibradzic/amdgpu-clocks || amdgpu-clocks-gitAUR
  • ruby-amdgpu_fan — amdgpu Linux ドライバと対話するための Ruby で書かれた CLI ツール
https://github.com/HarlemSquirrel/amdgpu-fan-rb || ruby-amdgpu_fanAUR
GUI ツール
  • TuxClocker — Qt5 のモニタリング・オーバークロックツール
https://github.com/Lurkki14/tuxclocker || tuxclockerAUR
  • CoreCtrl — アプリケーション毎のプロファイルをサポートする、WattMan ライクな UI の GUI オーバークロックツール。
https://gitlab.com/corectrl/corectrl || corectrl
  • LACT — AMD GPU の情報を見たり制御したりするための GTK ツール。
https://github.com/ilya-zlobintsev/LACT || lact
  • Radeon Profile — AMD Radeon カードの現在のクロックを読み込んだり変更したりする Qt5 ツール。
https://github.com/emerge-e-world/radeon-profile || radeon-profile-gitAUR

ブート時のスタートアップ

方法としては、一つは systemd ユニットを使うことです。起動時に設定を自動的に適用したい場合、起動時に設定を構成・適用することに関するこの Reddit スレッドを見てみることを検討してください。

もう一つの方法は udev ルールです。例えば、パフォーマンスレベルを落とす値を設定して電力消費量を削減するには:

/etc/udev/rules.d/30-amdgpu-low-power.rules
ACTION=="add", SUBSYSTEM=="drm", DRIVERS=="amdgpu", ATTR{device/power_dpm_force_performance_level}="low"

パフォーマンスレベル

AMDGPU にはいくつかのパフォーマンスレベルがあります。このレベルは power_dpm_force_performance_level ファイルで調整/確認することができます。以下のレベルから選択できます:

  • auto: 現在の条件に合わせて、ドライバー内で最適な電源プロファイルを動的に選択します。
  • low: クロック数は最低のパワーステートに強制されます。
  • high: クロック数は最高のパワーステートに強制されます。
  • manual: ユーザーは、各クロックドメインに対してどのパワーステートを有効化するかを手動で選択することができます (#電源プロファイルを設定する際に使用します)。
  • profile_standardprofile_min_sclkprofile_min_mclkprofile_peak: クロックとパワーのゲーティングが無効化され、クロックはそれぞれのプロファイルに応じて設定されます。このモードは、特定のワークロードに対してプロファイルする際に推奨されます。

以下のコマンドを実行すると、AMDGPU デバイスをパフォーマンスレベル low に設定します:

# echo "low" > /sys/class/drm/card0/device/power_dpm_force_performance_level
ノート パフォーマンスレベルは起動のたびに再設定する必要があります。設定を自動化する方法は #ブート時のスタートアップ を見てください。

電源プロファイル

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:        -                -                -                -                -                -
ノート card0 はマシンの特定の GPU を示します。複数の GPU が搭載されている場合、正しい GPU を選ぶように気をつけてください。

特定の電源プロファイルを使用するには、まず 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

電源プロファイルの正確な値と制限は、powerplay table システムを通して管理されています。サポートされているモデル (Polaris から Navi2x まで。Navi3x と Navi4x はカーネルにバグがあります。) でこのテーブルを変更するには upliftpowerplayAUR を使用してください。

ノート 電源プロファイルの変更は起動するたびに適用する必要があります。これを自動化するには #ブート時のスタートアップ を見てください。

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

ヘッドレス環境での仮想ディスプレイ

AMDGPU はヘッドレス環境向けに、ダミープラグを使用しない、GPU アクセラレートされた仮想モニターを提供しています。これは RDP や sunshineAUR といったゲームストリーミングソフトウェアで便利です。

使用する AMD GPU を選択してください:

$ lspci -Dd ::03xx
1234:56:78.9 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] CommercialModelName

amdgpu に対して virtual_display=1234:56:78.9,x カーネルモジュールパラメータを追加してください。1234:56:78.9 の部分は GPU の PCI アドレスで、x は公開する crtc (仮想モニター) の番号です。このパラメータを使用すると物理出力は無効化されます。[3]

以下のように PCI アドレスをセミコロンで区切ることで、複数の GPU を使用することも可能です:

amdgpu.virtual_display=1234:56:78.9,x;9876:54:32.1,y

ユーザーキュー

AMDGPU ドライバはユーザーキューをサポートしています。これにより、カーネルドライバのコマンドサブミッション ioctl を介さずに、ジョブを直接 GPU ハードウェアにサブミットすることができます。 この機能を有効化することで、カーネルドライバのオーバヘッドがいくらか回避され、レイテンシを軽減し効率を向上させることができます。

ユーザーキューを有効化するには、以下の環境変数を設定してください:

export AMD_USERQ=1

SDMA による転送のみの専用キュー

Mesa 26.0 にマージされたコードは、GFX9 (Vega) 及びそれより新しい GPU で動作する、RADV の専用転送キューのサポートが含まれています。現在、この機能を有効化するには RADV_PERFTEST=transfer_queue 環境変数を設定する必要があります。DXVK Direct3D-on-Vulkan レイヤーは、Vulkan の転送キューのサポートを活用するためにソフトウェアないに存在しています。しかし、この新しい機能を正当化するようなパフォーマンス/ベンチマークの数値がマージリクエストには含まれていません。

トラブルシューティング

モジュールパラメータ

amdgpu モジュールは、いくつかの設定パラメータ (modinfo amdgpu | grep mask) をカーネルのソースコードでしかドキュメント化していないマスク内に隠しています。

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 のクロック速度の管理法に問題があるためです [4][5]

回避策[6]は、#パフォーマンスレベル で説明されているようにパフォーマンスレベルを high あるいは low に設定することです。

カーネルのバージョンを変更することでもこの問題を解決できる場合があります。例えば、バージョン 6.12.9 では問題は解決されているようです。

Chromium でアーティファクト

Chromium でアーティファクトが現れる場合、vulkan ベースのバックエンドの使用を強制すると解決するかもしれません。chrome://flags を開き、#ignore-gpu-blocklist#enable-vulkanenable にしてください。

R9 390 シリーズで悪いパフォーマンス/不安定

AMD R9 390 シリーズのグラフィックカードで問題[7]が発生する場合、次のカーネルパラメータを設定して、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!" カーネルエラーが発生する場合 [8]、回避策は カーネルパラメータ amdgpu.vm_update_mode=3 を設定して GPUVM ページテーブルの更新を CPU を用いて行うように強制することです。デメリットはここにリストされています: [9]

画面が白く/灰色に点滅する

解像度を変更したり外部モニタに接続したりしたときに、画面がちらつく、あるいは白くなったままになる場合、カーネルパラメータ amdgpu.sg_display=0 を追加してください。

Vega カード上でのゲーム中にシステムのフリーズ/クラッシュ

動的電源管理は、ゲーム中にシステムの完全なフリーズを発生させる場合があります。GPU のクロック速度の管理法に問題があるためです [10]。回避策は、#パフォーマンスレベル で説明されているようにパフォーマンスレベルを high に設定することです。。

WebRenderer (Firefox) の破損

WebRenderer がユーザによって強制的に有効化されている場合、アーティファクトやその他の異常が発生する場合があります(例: 拡張機能のオプションを選択できないなど)。回避策は OpenGL コンポジットにフォールバックすることです。

4K@60Hz のデバイスが接続されると音声の速度が2倍になる/音が高くなる/無音

これは、AMDGPU デバイスと、HDMI で接続された 4K ディスプレイとの間の通信の問題により時々発生します。利用可能な回避策は、ディスプレイの組み込み設定から HDR か "Ultra HD Deep Color" を有効化することです。多くの Android ベースのテレビでは、これは "Optimal" ではなく "Standard" を設定することを意味します。

ディスクリート amdgpu グラフィックカードにおける電源管理/動的再アクティブ化の問題

カーネルドライバはロードされたが、ゲームでディスクリートグラフィックカードを利用できない、または使用中に無効化されてしまう問題が発生する場合 ([11] に似た問題)、カーネルパラメータ amdgpu.runpm=0 を設定することでこの問題を回避できます。このカーネルパラメータは、dGPU が実行時に動的にオフになることを防止します。

ディスプレイが固まる、または応答しなくなる (flip_done timed out)

amdgpu ドライバのバグにより、ディスプレイが更新されなくなることがあります[12]。回避策として、amdgpu.dcdebugmask=0x10amdgpu.dcdebugmask=0x12 カーネルパラメータを追加することが提案されています。

kfd が初期化に失敗する

GPU のアーキテクチャによっては、kfd が初期化に失敗することがあります。gfx803 (GCN 4) は PCIe atomics のサポートを必要とします。一方、gfx9xx (Vega) 及びそれ以降のデバイスは、PCIe atomics が必要ありません。kfd は GCN 3 及びそれより古いデバイスをサポートしていません。

ROCm を使用するつもりがないならば、このエラーは安全に無視できます。

"[GPU Core Name] not supported in kfd"

システムのジャーナルやカーネルのメッセージに、kfd 関連の critical レベルのエラーメッセージが現れることがあります:

# dmesg | grep kfd
kfd kfd: amdgpu: BONAIRE  not supported in kfd

(BONAIRE の部分は GPU 内のコアの名前によって変わります (TOPAZ、HAWAII など)。コア名は GPU を見たり、amdgpu_top などのGPU の診断ユーティリティを使うことで分かります。)

このエラーは、kfd は使用中の GPU をサポートしておらず、ROCm で動作しないことを意味しています。[13][14]

"PCI rejects atomics"

GCN 4 GPU では、CPU が PCIe atomics をサポートしている必要があり、GPU のあるスロットは少なくとも PCIe 3.0 をサポートしている必要があります。[15] これらの要件が満たされない場合、以下のメッセージが出力されます:

# dmesg | grep kfd
kfd kfd: amdgpu: skipped device 1002:67e3, PCI rejects atomics 730<0

使用中の CPU が PCIe atomics をサポートしているかどうかは、以下のコマンドで分かります:

grep flags /sys/class/kfd/kfd/topology/nodes/*/io_links/0/properties

使用中の CPU が PCIe atomics をサポートしている (つまり、先の出力が 1) がエラーが発生する場合、GPU のあるスロットを変更してください。そのスロットは、CPU からではなく、チップセットから来ているレーンなのかもしれません。

MCLK が MAX (1000Mhz) に固定されてアイドル時に高い電力消費、または MIN (96MHz) に固定されてゲームのパフォーマンスが悪化 (カーネル 6.4)

高解像度かつ高リフレッシュレートの場合、MCLK (vram / メモリのクロック) が最も高いクロックレート (1000MHz) に固定されてしまい [16] [17]、アイドル時に GPU の電力消費が増加してしまう場合があります。Linux カーネル 6.4.x では、MCLK クロックが最低値 (96MHz) になって、ゲームのパフォーマンスが低下してしまいます [18] [19]

これは、モニタが Coordinated Video Timings (CVT) を使用しておらず、影響を受ける解像度とリフレッシュレートに対する V-Blank 値が低いことが原因である可能性があります。回避策はこの gist を見てください。

Suspend to RAM に失敗する

十分にリフレッシュされない VRAM のデータ消失を防ぐために、amdgpu カーネルモジュールはシステムが S3 スリープに入るときに VRAM の内容を RAM 内に保存します。

大量の VRAM を使用していて RAM に十分な空き容量がない場合、たとえ十分なスワップメモリが存在していたとしても、このプロセスが失敗する可能性があります (IO サブシステムがすでにサスペンドされているかもしれないため)。

このとき、以下のようなメッセージが出力されます:

kernel: systemd-sleep: page allocation failure: order:0, mode:0x100c02(GFP_NOIO|__GFP_HIGHMEM|__GFP_HARDWALL), nodemask=(null),cpuset=/,mems_allowed=0
kernel: Call Trace:
kernel:  <TASK>
kernel:  dump_stack_lvl+0x47/0x60
kernel:  warn_alloc+0x165/0x1e0
kernel:  __alloc_pages_slowpath.constprop.0+0xd7d/0xde0
kernel:  __alloc_pages+0x32d/0x350
kernel:  ttm_pool_alloc+0x19f/0x600 [ttm 0bd92a9d9dccc3a4f19554535860aaeda76eb4f4]

回避策としては、システムがサスペンドする前に十分な RAM 領域をスワップアウトして VRAM を格納できるのに十分な空き領域を RAM に確保しておくユーザー空間のサービスを使うというものがります。

間違った GPU クロックにより複数の問題が発生する

この記事またはセクションの正確性には問題があります。
理由:
  • Users provide unreliable reports and operate under wrong assumptions. See explanation.
  • If you carefully read through the related issues, the problem appear to be caused by some internal setup of GPU power profiles. Which means the shader clock frequency is not the actual issue here, lowering it is more of a workaround, and it decreases performance.
  • Patches addressing the problem were already merged a few major kernel releases back.
  • If you are still getting crashes with similar dmesg logs, consider disabling GFXOFF (see [20])
(議論: トーク:AMDGPU#)

amdgpu モジュールにはバグがあり、ビデオコアの周波数が製造業者によって設定された値よりも高くなることがあります。これにより、ゲーム中やスリープからの復帰時、再起動時にシステムが不安定になることがあります。

この問題は、RDNA 3 GPU (7XXX モデル) で報告されています[21] [22] [23]

dmesg に以下のようなログが出てきます:

amdgpu: [gfxhub] page fault (src_id:0 ring:40 vmid:6 pasid:32830)
amdgpu:  in process GameThread pid 100056 thread vkd3d_queue pid 100468)
amdgpu:   in page starting at address 0x0000000218a36000 from client 10
amdgpu: GCVM_L2_PROTECTION_FAULT_STATUS:0x00641051
amdgpu:          Faulty UTCL2 client ID: TCP (0x8)
amdgpu:          MORE_FAULTS: 0x1
amdgpu:          WALKER_ERROR: 0x0
amdgpu:          PERMISSION_FAULTS: 0x5
amdgpu:          MAPPING_ERROR: 0x0
amdgpu:          RW: 0x1

似たような問題が発生する場合は、システムのビデオコアの最大周波数と製造業者の公式の周波数とを比較してください。最大周波数を下げる方法は、#オーバークロック を見てください。

AMD の専用 GPU の HDMI が Wayland でフリーズする

具体例として、AMD CPU と専用 AMD GPU を搭載している ASUS G14 2022 ノート PC があります。最も成功しやすい方法では、dGPU Ultimate power オプションを強制するために Windows で armor crate を使う必要があります。これにより、GPU の順序とノート PC の内部電源ポリシーが切り替わります。これにより HDMI が機能するようになるはずですが、統合 GPU (SDDM と Wayland はこちらをデフォルトで選択します) と専用 GPU とでレンダリングが別々になります。アプリケーションの起動前に DRI_PRIME=0 環境変数を設定することでレンダリングを行う GPU を選択できますが、これは簡便ではありません。以下のように設定を変更することで環境変数を設定できますが、バッテリー駆動時にバッテリーの持ちが悪くなります:

/etc/sddm.conf.d/hardware.conf
[General]
DisplayServer=wayland
[Wayland]
CompositorCommand=kwin_wayland --drm --no-lockscreen --no-global-shortcuts
Environment=DRI_PRIME=0

これに加えて、以下のカーネルパラメータを追加する必要があります:

amdgpu.runpm=0 amdgpu.modeset=1

ノート PC で色があせて薄い

power-profiles-daemontuned などの省電力アプリケーションは、Panel Power Savings (PPS) として知られる機能を有効にするようになりました。

PPS はノート PC でサポートされている機能で、ノート PC の GPU に色精度を犠牲にする代わりに省電力にするように命令します。しかし、この機能を使うと、前述の power-profiles-daemon や tuned でより強力な省電力モードを選択すると色があせてしまう傾向にあります。そのため、この機能を完全に無効化する人もいます。

以下のカーネルパラメータをゼロに設定することで無効化できます:

amdgpu.abmlevel=0

アイドル時にシステムがフリーズしたり再起動したりする

いくつかの PowerPlay 機能 (GFXOFF など) の問題により、高頻度の回復不可能なドライバのクラッシュが発生することがあります[24]。これは、複数モニターの環境で GPU のアイドル時、とくにスリープモードからの復帰時に発生します。

よく知られた解決法は、(#ブートパラメータ で説明されているように) PP_GFXOFF_MASK を無効化するカーネルパラメータを追加することです (例: amdgpu.ppfeaturemask=0xffff7fff。これは、他の PowerPlay 機能 (実装されているものも未実装のものも含む) を有効化したままにします)。

もう一つの方法は、GFXOFF 以外の機能も無効化する方法を利用することです:

16進数のビット計算機 (リンク先に例あり) で計算して、amdgpu.ppfeaturemask=0x の後にその計算した8文字のマスクを加えることで自分で機能マスクを作ることができます。ffffffff (全ビット1) から初めて、マスクしたい機能XOR してください。計算結果に機能を XOR していくことができます。最初のゼロでない文字は全て省略できます。例えば、0x8000 と 0x00008000 は等価です。

カーネルの更新時にパラメータが消されないように注意してください。

HDMI 4K が 120Hz までしか上がらない

ライセンス上の問題により、mesa ドライバは HDMI 2.1 をサポートできません。DisplayPort を使う必要があります。ディスプレイが DisplayPort をサポートしていない場合、DisplayPort の入力を HDMI 2.1 の信号に変換するコンバータを使って HDMI 2.1 を使うことができたというユーザがいます

参照

翻訳ステータス: このページは en:AMDGPU の翻訳バージョンです。最後の翻訳日は 2026-02-14 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。