「AMDGPU」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(テンプレート:Marge を削除)
(同期)
14行目: 14行目:
 
== 適切なドライバーの選択 ==
 
== 適切なドライバーの選択 ==
   
お持ちのカードに応じて、[[Xorg#AMD]] で適切なドライバーを見つけてください。今の所、[https://www.x.org/wiki/RadeonFeature/ Southern Islands (SI)] から Arctic Islands (AI) カード向けの Xorg [[radeon]] ドライバサポートがあります。AMD には GCN 以前の GPU をサポートする計画はありません
+
お持ちのカードに応じて、[[Xorg#AMD]] で適切なドライバーを見つけてください。
  +
このドライバは [https://www.x.org/wiki/RadeonFeature/ Southern Islands (SI)] 及びそれ以降のカードをサポートしています。AMD には GCN 以前の GPU をサポートする計画はありません。
サポートされない GPU を持っているユーザはオープンソースの [[radeon]] ドライバを使用できます。
 
  +
サポートされない GPU を持っているユーザはオープンソースの [[ATI]] ドライバを使用できます。
   
 
== インストール ==
 
== インストール ==
23行目: 24行目:
 
* 32ビットアプリケーションのサポートに関しては、[[multilib]] リポジトリから {{Pkg|lib32-mesa}} パッケージもインストールしてください。
 
* 32ビットアプリケーションのサポートに関しては、[[multilib]] リポジトリから {{Pkg|lib32-mesa}} パッケージもインストールしてください。
 
* ([[Xorg]] での 2D アクセラレーションを提供する) DDX ドライバに関しては、{{Pkg|xf86-video-amdgpu}} パッケージをインストールしてください。
 
* ([[Xorg]] での 2D アクセラレーションを提供する) DDX ドライバに関しては、{{Pkg|xf86-video-amdgpu}} パッケージをインストールしてください。
  +
* [[Vulkan]] のサポートに関しては:
* [[Vulkan]] のサポートに関しては、{{Pkg|vulkan-radeon}} か {{Pkg|amdvlk}} パッケージをインストールしてください。オプションで、32ビットアプリケーションのサポートのための {{Pkg|lib32-vulkan-radeon}} か {{Pkg|lib32-amdvlk}} パッケージをインストールしてください。Wine/Proton をつかって DirectX12 のゲームを実行する用途においては、{{Pkg|vulkan-radeon}} を優先してください。{{Pkg|amdvlk}} はその用途においては壊れているからです。
 
  +
** '''まず {{Pkg|vulkan-radeon}} のみ'''でテストしてください: このパッケージは、([[Pacman#仮想パッケージ|アルファベット順における位置]]により) ''vulkan-driver'' の1番目のプロバイダではありませんが、{{Pkg|amdvlk}} に関し繰り返し[[Vulkan#AMDGPU - DirectX Vulkan ゲームでクラッシュする|報告されている]]一部の問題を回避できます。
  +
** {{Pkg|amdvlk}} パッケージがインストールされている場合、このパッケージは自身をデフォルトの Vulkan ドライバとして設定します。もし両方のドライバをインストールしておく必要がある場合は (例: {{Pkg|vulkan-radeon}} で [[Vulkan#AMDGPU - DirectX Vulkan ゲームのプレイ中にがハングする|問題]]が起こる場合)、[[Vulkan#環境変数で選択する]] を見てください。
  +
** 任意で、32 ビットアプリケーションサポートのために、インストールされているネイティブなパッケージに合わせて {{Pkg|lib32-vulkan-radeon}} か {{Pkg|lib32-amdvlk}} パッケージをインストールしてください。
   
 
[[#ビデオアクセラレーション|ビデオデコードのハードウェア支援]]のサポートは、VA-API に関しては {{Pkg|libva-mesa-driver}} と {{Pkg|lib32-libva-mesa-driver}} により提供されており、VDPAU に関しては {{Pkg|mesa-vdpau}} と {{Pkg|lib32-mesa-vdpau}} により提供されています。
 
[[#ビデオアクセラレーション|ビデオデコードのハードウェア支援]]のサポートは、VA-API に関しては {{Pkg|libva-mesa-driver}} と {{Pkg|lib32-libva-mesa-driver}} により提供されており、VDPAU に関しては {{Pkg|mesa-vdpau}} と {{Pkg|lib32-mesa-vdpau}} により提供されています。
43行目: 47行目:
 
=== 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)のカードの AMDGPU サポートを有効にします。{{ic|amdgpu}} カーネルドライバは [[radeon]] より前にロードされる必要があります。どのカーネルドライバがロードされているかは {{ic|lspci -k}} で確認できます。以下のように出力されるはずです:
+
{{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)"|
233行目: 237行目:
 
==== CLI ====
 
==== CLI ====
   
  +
* {{App|amdgpu_top|AMDGPU の使用率を表示するツール|https://github.com/Umio-Yasuno/amdgpu_top|{{AUR|amdgpu_top}}}}
 
* {{App|nvtop|AMD、Intel、NVIDIA で GPU プロセスをモニタリングします。|https://github.com/Syllo/nvtop|{{Pkg|nvtop}}}}
 
* {{App|nvtop|AMD、Intel、NVIDIA で GPU プロセスをモニタリングします。|https://github.com/Syllo/nvtop|{{Pkg|nvtop}}}}
 
* {{App|radeontop|合計のアクティビティ率と個々のブロック両方の GPU 使用率ビュアー。|https://github.com/clbr/radeontop|{{Pkg|radeontop}}}}
 
* {{App|radeontop|合計のアクティビティ率と個々のブロック両方の GPU 使用率ビュアー。|https://github.com/clbr/radeontop|{{Pkg|radeontop}}}}
238行目: 243行目:
 
==== GUI ====
 
==== GUI ====
   
* {{App|TuxClocker|Qt5モニタリング・オーバークロックツール|https://github.com/Lurkki14/tuxclocker|{{AUR|tuxclocker}}}}
+
* {{App|amdgpu_top|AMDGPU使用率を表示するツール|https://github.com/Umio-Yasuno/amdgpu_top|{{AUR|amdgpu_top}}}}
 
* {{App|AmdGuid|完全に Rust で書かれた、基本的なファンコントロール GUI。|https://github.com/Eraden/amdgpud|{{AUR|amdguid-wayland-bin}}, {{AUR|amdguid-glow-bin}}}}
 
* {{App|AmdGuid|完全に Rust で書かれた、基本的なファンコントロール GUI。|https://github.com/Eraden/amdgpud|{{AUR|amdguid-wayland-bin}}, {{AUR|amdguid-glow-bin}}}}
  +
* {{App|TuxClocker|Qt5 のモニタリング・オーバークロックツール。|https://github.com/Lurkki14/tuxclocker|{{AUR|tuxclocker}}}}
   
 
==== 手動 ====
 
==== 手動 ====
277行目: 283行目:
   
 
例えば、Polaris GPU で GPU クロックを最大の P-state 7 1209MHz、900mV に設定するには:
 
例えば、Polaris GPU で GPU クロックを最大の P-state 7 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=入力する値をダブルチェックしてください。間違うと即座にハードウェアの深刻なダメージを引き起こすかもしれません!}}
  +
 
適用するには:
 
適用するには:
  +
 
# echo "c" > /sys/class/drm/card0/device/pp_od_clk_voltage
 
# echo "c" > /sys/class/drm/card0/device/pp_od_clk_voltage
  +
 
これが機能しているかどうかを確認するには、3D ロード下でクロックと電圧を読み取ってください:
 
これが機能しているかどうかを確認するには、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
  +
 
以下でデフォルトの値にリセットできます:
 
以下でデフォルトの値にリセットできます:
  +
 
# 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 での問題を回避する)。Polaris RX 5xx カードで最も高い VRAM P-state を強制し、GPU 自体は低いクロックでの動作を許可するには:
 
ドライバに特定の 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
 
# echo "2" > /sys/class/drm/card0/device/pp_dpm_mclk
 
# echo "2" > /sys/class/drm/card0/device/pp_dpm_mclk
  +
 
上位3つの GPU P-state のみを許可するには:
 
上位3つの GPU P-state のみを許可するには:
  +
 
# 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 50000000 > /sys/class/drm/card0/device/hwmon/hwmon0/power1_cap
 
   
  +
# echo '''50'''000000 > /sys/class/drm/card0/device/hwmon/hwmon0/power1_cap
Linux カーネル 4.20 以降、値を減らすことしかできず、増やすことはできませn。
 
   
 
{{Note|上記の手順は Polaris RX 560 カードでテストされました。異なる GPU では、異なる挙動やバグが存在するかもしれません。}}
 
{{Note|上記の手順は Polaris RX 560 カードでテストされました。異なる GPU では、異なる挙動やバグが存在するかもしれません。}}
313行目: 331行目:
 
* {{App|TuxClocker|Qt5 のモニタリング・オーバークロックツール|https://github.com/Lurkki14/tuxclocker|{{AUR|tuxclocker}}}}
 
* {{App|TuxClocker|Qt5 のモニタリング・オーバークロックツール|https://github.com/Lurkki14/tuxclocker|{{AUR|tuxclocker}}}}
 
* {{App|CoreCtrl|アプリケーション毎のプロファイルをサポートする、WattMan ライクな UI の GUI オーバークロックツール。|https://gitlab.com/corectrl/corectrl|{{Pkg|corectrl}}}}
 
* {{App|CoreCtrl|アプリケーション毎のプロファイルをサポートする、WattMan ライクな UI の GUI オーバークロックツール。|https://gitlab.com/corectrl/corectrl|{{Pkg|corectrl}}}}
  +
* {{App|LACT|AMD GPU の情報を表示し、制御する GTK ツール。|https://github.com/ilya-zlobintsev/LACT|{{AUR|lact}}}}
   
 
==== ブート時のスタートアップ ====
 
==== ブート時のスタートアップ ====
395行目: 414行目:
 
==== Chromium でアーティファクト ====
 
==== Chromium でアーティファクト ====
   
[[Chromium]] でアーティファクトが現れる場合、vulkan ベースのバックエンドの使用を強制してみてください。{{ic|chrome://flags}} を開き、{{ic|#ignore-gpu-blacklist}} と {{ic|#enable-vulkan}} を ''enable'' にしてください。
+
[[Chromium]] でアーティファクトが現れる場合、vulkan ベースのバックエンドの使用を強制すると解決するかもれません。{{ic|chrome://flags}} を開き、{{ic|#ignore-gpu-blacklist}} と {{ic|#enable-vulkan}} を ''enable'' にしてください。
   
 
=== R9 390 シリーズで悪いパフォーマンス/不安定 ===
 
=== R9 390 シリーズで悪いパフォーマンス/不安定 ===
401行目: 420行目:
 
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}}
 
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}}
+
これがうまく行かない場合、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!" カーネルエラーでフリーズ ===
 
=== "[drm] IP block:gmc_v8_0 is hung!" カーネルエラーでフリーズ ===
412行目: 431行目:
   
 
スケーリングに {{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}}。
  +
  +
=== KDE の使用時に画面のちらつき ===
  +
  +
解像度を変更したり外部モニタに接続したりしたときに、画面がちらつく、あるいは白くなったままになる場合、[[カーネルパラメータ]] {{ic|1=amdgpu.sg_display=0}} を追加してください。
   
 
=== Vega カード上でのゲーム中にシステムのフリーズ/クラッシュ ===
 
=== Vega カード上でのゲーム中にシステムのフリーズ/クラッシュ ===
439行目: 462行目:
 
* [[Gentoo:AMDGPU]]
 
* [[Gentoo:AMDGPU]]
   
{{TranslationStatus|AMDGPU|2023-02-22|768217}}
+
{{TranslationStatus|AMDGPU|2023-06-07|780243}}

2023年6月7日 (水) 15:11時点における版

関連記事

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

目次

適切なドライバーの選択

お持ちのカードに応じて、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-radeonlib32-amdvlk パッケージをインストールしてください。

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

実験的

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

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

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

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

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

$ lspci -k | 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 バージョンによって異なります。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ACO コンパイラ

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

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

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

ロード

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

ロードされない場合:

読み込むことはできるが、X サーバが必要とする時よりも後になってしまう場合:

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-0 または HDMI-A-0 のようになり、 xrandr-q を実行して取得できます。

DRI レベル

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

Option "DRI" "3"

可変リフレッシュレート

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

10-bit カラー

警告: 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 -- -depth30 を使用します。 永続的に有効にするには、以下を作成または追加します:

/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 "Device"
     Identifier "AMD"
     Driver "amdgpu"
     Option "EnablePageFlip" "off"
     Option "TearFree" "false"
EndSection

連天使を更に減らしたい場合は en:Gaming#Reducing DRI latency を見てください。

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

機能

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

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

モニタリング

GPU の温度や P-state を確認したい場合に GPU のモニタリングはしばしば行われます。

CLI

  • amdgpu_top — AMDGPU の使用率を表示するツール
https://github.com/Umio-Yasuno/amdgpu_top || amdgpu_topAUR
  • nvtop — AMD、Intel、NVIDIA で GPU プロセスをモニタリングします。
https://github.com/Syllo/nvtop || nvtop
  • radeontop — 合計のアクティビティ率と個々のブロック両方の GPU 使用率ビュアー。
https://github.com/clbr/radeontop || radeontop

GUI

  • amdgpu_top — AMDGPU の使用率を表示するツール
https://github.com/Umio-Yasuno/amdgpu_top || amdgpu_topAUR
  • AmdGuid — 完全に Rust で書かれた、基本的なファンコントロール GUI。
https://github.com/Eraden/amdgpud || amdguid-wayland-binAUR, amdguid-glow-binAUR
  • TuxClocker — Qt5 のモニタリング・オーバークロックツール。
https://github.com/Lurkki14/tuxclocker || tuxclockerAUR

手動

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

手動(デフォルト)

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

例えば、Polaris GPU で GPU クロックを最大の P-state 7 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
ノート: 上記の手順は Polaris RX 560 カードでテストされました。異なる GPU では、異なる挙動やバグが存在するかもしれません。

アシスト付き

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

CLI ツール
  • amdgpu-clocks — AMD GPU のモニタリングやカスタムの P-state を設定するために使用できるスクリプト。起動時に自動的に設定を適用する systemd サービスもあります。
https://github.com/sibradzic/amdgpu-clocks || amdgpu-clocks-gitAUR
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 || lactAUR

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

起動時に設定を自動的に適用したい場合、起動時に設定を構成・適用することに関するこの 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:        -                -                -                -                -                -
ノート: 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
ノート: 電源プロファイルの変更は起動するたびに適用する必要があります。これを自動化するには #ブート時のスタートアップ を見てください。

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_levelhighlow を書き込むことです。

これを永続化するには、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-gitAURradeon-profile-daemon-gitAUR で "power_dpm" を管理できます。

Chromium でアーティファクト

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

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]

参照

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