「AMDGPU」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
355行目: 355行目:
 
== トラブルシューティング ==
 
== トラブルシューティング ==
   
=== HDMI/DP の音声出力されない ===
+
=== Xorg やアプリケーション起動しない ===
   
  +
* ''glxgears'' を開いた後に "(EE) AMDGPU(0): [DRI2] DRI2SwapBuffers: drawable has no back or front?" エラー。Xorg サーバを開くことはできるが、OpenGL アプリケーションはクラッシュする。
オープンソースの 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-*) カーネルを使用する必要があります。
 
  +
* "(EE) AMDGPU(0): Given depth (32) is not supported by amdgpu driver" エラー。Xorg が起動しない。
   
  +
Xorg でスクリーンの色深度を 16 か 32 に設定すると問題/クラッシュを引き起こします。これを防ぐには、"screen" セクションに以下を追加して標準的なスクリーン色深度である 24 を使う必要があります:
=== HDMI で表示位置がおかしい ===
 
   
  +
{{hc|/etc/X11/xorg.conf.d/10-screen.conf|
{{ic|1=amdgpu.audio=0}} [[カーネルパラメータ]]を使うことで (問題のある) HDMI の音声サポートを有効にしないようにできます [https://bugzilla.kernel.org/show_bug.cgi?id=195737]。
 
  +
Section "Screen"
  +
Identifier "Screen"
  +
DefaultDepth 24
  +
SubSection "Display"
  +
Depth 24
  +
EndSubSection
  +
EndSection
  +
}}
   
=== Xorg やアプショが起動しない ===
+
=== スクリーンの乱れと周波数の問題 ===
  +
  +
[[ATI#Dynamic power management|Dynamic power management]] may cause screen artifacts to appear when displaying to monitors at higher frequencies (anything above 60Hz) due to issues in the way GPU clock speeds are managed[https://bugs.freedesktop.org/show_bug.cgi?id=96868][https://gitlab.freedesktop.org/drm/amd/-/issues/234].
  +
  +
A workaround [https://bugs.freedesktop.org/show_bug.cgi?id=96868#c13] is saving {{ic|high}} or {{ic|low}} in {{ic|/sys/class/drm/card0/device/power_dpm_force_performance_level}}.
  +
  +
To make it persistent, you may create a [[udev]] rule:
  +
  +
{{hc|/etc/udev/rules.d/30-amdgpu-pm.rules|<nowiki>
  +
KERNEL=="card0", SUBSYSTEM=="drm", DRIVERS=="amdgpu", ATTR{device/power_dpm_force_performance_level}="high"
  +
</nowiki>}}
  +
  +
To determine the {{ic|KERNEL}} name execute:
  +
  +
$ udevadm info --attribute-walk /sys/class/drm/card0 | grep "KERNEL="
  +
  +
There is also a GUI solution [https://github.com/marazmista/radeon-profile] where you can manage the "power_dpm" with {{aur|radeon-profile-git}} and {{aur|radeon-profile-daemon-git}}.
  +
  +
==== Chromium でグラフィックの乱れ ====
  +
  +
If you see artifacts in [[Chromium]], try to force the vulkan based backend. Go to {{ic|chrome://flags}} and ''enable'' {{ic|#ignore-gpu-blacklist}} and {{ic|#enable-vulkan}}.
  +
  +
=== R9 390 シリーズで悪いパフォーマンス/不安定 ===
  +
  +
If you experience issues [https://gitlab.freedesktop.org/mesa/mesa/-/issues/1222] with a AMD R9 390 series graphics card, set {{ic|1=radeon.cik_support=0 radeon.si_support=0 amdgpu.cik_support=1 amdgpu.si_support=1 amdgpu.dc=1}} as [[kernel parameters]] to force the use of amdgpu driver instead of radeon.
  +
  +
If it still does not work, try disabling DPM, by setting the [[kernel parameters]] to: {{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!" カーネルエラーでフリーズ ===
  +
  +
If you experience freezes and kernel crashes during a GPU intensive task with the kernel error " [drm] IP block:gmc_v8_0 is hung!" [https://gitlab.freedesktop.org/drm/amd/issues/226], a workaround is to set {{ic|1=amdgpu.vm_update_mode=3}} as [[kernel parameters]] to force the GPUVM page tables update to be done using the CPU. Downsides are listed here [https://gitlab.freedesktop.org/drm/amd/-/issues/226#note_308665].
   
  +
=== カーソルの破損 ===
Xorg の色深度を 16 や 32 に設定すると以下のような問題が発生します:
 
   
  +
If you experience issues with the mouse cursor sometimes not rendering properly, set {{ic|Option "SWCursor" "True"}} in the {{ic|"Device"}} section of the {{ic|/etc/X11/xorg.conf.d/20-amdgpu.conf}} configuration file.
* {{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 が起動しない。
 
   
  +
If you are using {{ic|xrandr}} for scaling and the cursor is flickering or disappearing, you may be able to fix it by setting the {{ic|TearFree}} property: {{ic|xrandr --output HDMI-A-0 --set TearFree on}}.
({{ic|/etc/X11/xorg.conf.d/10-screen.conf}} ファイルの) "screen" セクションに以下を追加して標準的な色深度である 24 を使うようにしてください:
 
   
  +
=== Vega カード上でのゲーム中にシステムのフリーズ/クラッシュ ===
Section "Screen"
 
Identifier "Screen"
 
DefaultDepth 24
 
SubSection "Display"
 
Depth 24
 
EndSubSection
 
EndSection
 
   
  +
[[ATI#Dynamic power management|Dynamic power management]] may cause a complete system freeze whilst gaming due to issues in the way GPU clock speeds are managed. [https://gitlab.freedesktop.org/drm/amd/-/issues/716] A workaround is to disable dynamic power management, see [[ATI#Dynamic power management]] for details.
=== 周波数を上げたときに画面が崩れる問題が起こる ===
 
   
  +
=== WebRenderer (Firefox) の破損 ===
ディスプレイの周波数を 120Hz 以上に設定したときにディスプレイに乱れが発生する場合、メモリクロックや GPU クロックが低すぎてディスプレイに応答できていません。
 
   
  +
Artifacts and other anomalies may present themselves (e.g. inability to select extension options) when [[Firefox/Tweaks#WebRender|WebRenderer]] is force enabled by the user. Workaround is to fall back to OpenGL compositing.
以下を実行することで解決できます [https://bugs.freedesktop.org/show_bug.cgi?id=96868#c13]:
 
   
  +
=== 4K@60Hz のデバイスが接続されると音声の速度が2倍になる/音が高くなる/無音 ===
# echo high > /sys/class/drm/card0/device/power_dpm_force_performance_level
 
   
  +
This is sometimes caused by a communication issue between an AMDGPU device and a 4K display connected over HDMI. A possible workaround is to enable HDR or "Ultra HD Deep Color" via the display's built-in settings. On many Android based TVs, this means setting this to "Standard" instead of "Optimal".
または:
 
   
  +
=== ディスクリート amdgpu グラフィックカードにおける電源管理/動的再アクティブ化の問題 ===
# echo low > /sys/class/drm/card0/device/power_dpm_force_performance_level
 
   
  +
If you encounter issues similar to [https://gitlab.freedesktop.org/drm/amd/-/issues/1820], you can workaround the issue by setting the [[kernel parameter]] {{ic|1=amdgpu.runpm=0}}, which prevents the dGPU from being powered down dynamically at runtime.
{{aur|radeon-profile-git}} や {{aur|radeon-profile-daemon-git}} を使うことで GUI で "power_dpm" を管理することもできます [https://github.com/marazmista/radeon-profile]。
 
   
 
== 参照 ==
 
== 参照 ==

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

関連記事

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

目次

適切なドライバーの選択

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

インストール

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

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

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

実験的

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

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

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

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

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

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

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

amdgpu ドライバをロード

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ACO コンパイラ

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

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

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

ロード

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

ロードされない場合:

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

Xorg の設定

Xorg は自動的にドライバーをロードしてモニターの EDID を認識して最大解像度を設定します。必要な設定はドライバーのチューニングだけです。

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

/etc/X11/xorg.conf.d/20-amdgpu.conf
Section "Device"
     Identifier "AMD"
     Driver "amdgpu"
EndSection

このセクションを使って、ドライバーの設定を変更したり機能を有効にすることができます。ドライバオプションを設定する前に、まず amdgpu(4) を見てください。

TearFree レンダリング

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

Option "TearFree" "true"

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

$ xrandr --output output --set TearFree on

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

DRI レベル

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

Option "DRI" "3"

可変リフレッシュレート

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

10-bit カラー

警告: 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(デフォルト)

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

radeontop ユーティリティを使えば、全体のアクティビティと個々のブロックの両方でGPU の使用率を表示できます。radeontop パッケージでインストールできます。ユーティリティが GPU を認識しない場合、radeontop-gitAUR を試してください。

GUI

  • WattmanGTK — GPU の温度 P-state をモニタリングする GTK GUI ツール。
https://github.com/BoukeHaarsma23/WattmanGTK || wattman-gtk-gitAUR.
  • TuxClocker — Qt5 のモニタリング・オーバークロックツール。
https://github.com/Lurkki14/tuxclocker || tuxclockerAUR
  • AmdGuid — 完全に Rust で書かれた、基本的なファンコントロール GUI。
https://github.com/Eraden/amdgpud || amdguid-wayland-binAUR, amdguid-glow-binAUR

オーバークロック

Linux 4.17 以降、/sys/class/drm/card0/device/pp_od_clk_voltage によりグラフィックカードのクロックと電圧を調整できます。

ブートパラメータ

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

手動(デフォルト)

ノート: 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

Linux カーネル 4.20 以降、値を減らすことしかできず、増やすことはできませn。

ノート: 上記の手順は 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 || corectrlAUR

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

起動時に設定を自動的に適用したい場合、起動時に設定を構成・適用することに関するこの 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 ディスプレイスケーリングを有効化

この記事あるいはセクションは xrandr と合併することが議論されています。
ノート: Not specific to AMDGPU. (議論: トーク:AMDGPU#Moving "Enable GPU display scaling" to xrandr)

モニタのネイティブ解像度を使用しない場合、ディスプレイに内蔵されているスケーラを用いずに、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

スクリーンの乱れと周波数の問題

Dynamic power management may cause screen artifacts to appear when displaying to monitors at higher frequencies (anything above 60Hz) due to issues in the way GPU clock speeds are managed[1][2].

A workaround [3] is saving high or low in /sys/class/drm/card0/device/power_dpm_force_performance_level.

To make it persistent, you may create a udev rule:

/etc/udev/rules.d/30-amdgpu-pm.rules
KERNEL=="card0", SUBSYSTEM=="drm", DRIVERS=="amdgpu", ATTR{device/power_dpm_force_performance_level}="high"

To determine the KERNEL name execute:

$ udevadm info --attribute-walk /sys/class/drm/card0 | grep "KERNEL="

There is also a GUI solution [4] where you can manage the "power_dpm" with radeon-profile-gitAUR and radeon-profile-daemon-gitAUR.

Chromium でグラフィックの乱れ

If you see artifacts in Chromium, try to force the vulkan based backend. Go to chrome://flags and enable #ignore-gpu-blacklist and #enable-vulkan.

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

If you experience issues [5] with a AMD R9 390 series graphics card, set radeon.cik_support=0 radeon.si_support=0 amdgpu.cik_support=1 amdgpu.si_support=1 amdgpu.dc=1 as kernel parameters to force the use of amdgpu driver instead of radeon.

If it still does not work, try disabling DPM, by setting the kernel parameters to: radeon.cik_support=0 radeon.si_support=0 amdgpu.cik_support=1 amdgpu.si_support=1

"[drm] IP block:gmc_v8_0 is hung!" カーネルエラーでフリーズ

If you experience freezes and kernel crashes during a GPU intensive task with the kernel error " [drm] IP block:gmc_v8_0 is hung!" [6], a workaround is to set amdgpu.vm_update_mode=3 as kernel parameters to force the GPUVM page tables update to be done using the CPU. Downsides are listed here [7].

カーソルの破損

If you experience issues with the mouse cursor sometimes not rendering properly, set Option "SWCursor" "True" in the "Device" section of the /etc/X11/xorg.conf.d/20-amdgpu.conf configuration file.

If you are using xrandr for scaling and the cursor is flickering or disappearing, you may be able to fix it by setting the TearFree property: xrandr --output HDMI-A-0 --set TearFree on.

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

Dynamic power management may cause a complete system freeze whilst gaming due to issues in the way GPU clock speeds are managed. [8] A workaround is to disable dynamic power management, see ATI#Dynamic power management for details.

WebRenderer (Firefox) の破損

Artifacts and other anomalies may present themselves (e.g. inability to select extension options) when WebRenderer is force enabled by the user. Workaround is to fall back to OpenGL compositing.

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

This is sometimes caused by a communication issue between an AMDGPU device and a 4K display connected over HDMI. A possible workaround is to enable HDR or "Ultra HD Deep Color" via the display's built-in settings. On many Android based TVs, this means setting this to "Standard" instead of "Optimal".

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

If you encounter issues similar to [9], you can workaround the issue by setting the kernel parameter amdgpu.runpm=0, which prevents the dGPU from being powered down dynamically at runtime.

参照