AMDGPU

出自 Arch Linux 中文维基

AMDGPUGraphics Core Next 系列 AMD Radeon 圖形卡的開源圖形驅動程序。

選擇正確的驅動[編輯 | 編輯原始碼]

請根據您的顯卡,參考Xorg#AMD選擇合適的顯卡驅動。目前驅動支持從 Southern Islands (SI) 到最新的顯卡,而AMD沒有計劃支持 GCN 架構之前的顯卡。如果您使用的是 AMD 不支持的顯卡,可以選擇使用開源的 ATI 驅動。

安裝[編輯 | 編輯原始碼]

安裝這個mesa 軟件包,它提供用於3D加速的DRI驅動程序。

想要開啟硬件視頻加速,可以安裝libva-mesa-driverlib32-libva-mesa-driver軟件包來支持 VA-API,安裝mesa-vdpaulib32-mesa-vdpau軟件包支持VDPAU。

實驗版本[編輯 | 編輯原始碼]

對於某些用戶來說使用 mesa 的上游實驗構建可能是值得的。

安裝 mesa-gitAUR 軟件包,它提供用於3D加速的DRI驅動程序。

  • 對於32位程序支持,請從 AUR 或者 mesa-git 倉庫安裝 lib32-mesa-gitAUR
  • 對於 DDX 驅動支持(可提供對Xorg的2D加速),安裝xf86-video-amdgpu-gitAUR軟件包。
  • 如果您使用 mesa-git 倉庫並且要啟用 Vulkan 支持,請安裝 vulkan-radeon-git 軟件包。可選安裝 lib32-vulkan-radeon-git 來支持32位應用程序。如果您用的是來自 AUR 的 mesa-gitAUR 軟件包,則不需要進行該操作。
提示:如果您不想用 mesa-gitAUR 編譯安裝驅動(很耗時),您也可以使用 mesa-git 這個非官方用戶倉庫

開啟 Southern Islands (SI) 和 Sea Islands (CIK) 支持[編輯 | 編輯原始碼]

linux 軟件包 可以讓 AMDGPU 支持 the Southern Islands(HD 7000 系列,也被稱作SI,比如 GCN1)和 Sea Islands (HD 8000 系列,也被稱作CIK,比如 GCN2)顯卡。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 內核驅動[編輯 | 編輯原始碼]

amdgpuradeon 兩個模塊都需要設置的內核參數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

指定正確的模塊加載順序[編輯 | 編輯原始碼]

當內核啟用 AMDGPU 對 SI/CIK 顯卡的支持時,radeon驅動可能會在amdgpu驅動之前加載。

確保amdgpuMkinitcpio#MODULES數組中被設置為第一個模塊,例如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=0
/etc/modprobe.d/radeon.conf
options radeon si_support=0
options radeon cik_support=0

確保 modconf 添加到 HOOKS 數組中在 /etc/mkinitcpio.confMkinitcpio#創建和啟用鏡像

編譯支持 amdgpu 驅動的內核[編輯 | 編輯原始碼]

在構建或者編譯內核的時候,需要在配置中設置 CONFIG_DRM_AMDGPU_SI=Y 和/或者 CONFIG_DRM_AMDGPU_CIK=Y

在系統啟動時候完全禁用 radeon 內核驅動模塊[編輯 | 編輯原始碼]

內核可能仍會根據涉及的具體圖形芯片探測並加載 radeon 模塊,但在確認 amdgpu 正常工作後,radeon 模塊就不需要加載了。 在每個步驟之間重新啟動以確認它在移動到下一步之前有效:

  1. 在內核命令行添加模塊參數以確保 amdgpu 按預期工作,
  2. 使用 MODULES=(amdgpu) mkinitcpio 方法但不要將 radeon 添加到配置中,
  3. 在登錄桌面後測試 modprobe -r radeon 命令確保能夠在卸載 radeon 內核模塊後不影響系統圖形界面的運行,
  4. radeon 模塊列入黑名單,以免在第二階段啟動期間被內核探測:
/etc/modprobe.d/radeon.conf
blacklist radeon

當上面的配置生效之後,命令 lsmoddmesg 的輸出現在應該只會顯示 amdgpu 驅動模塊被加載的消息,不會存在 radeon 驅動模塊的消息。系統中的 /sys/module/radeon 目錄應該也不存在。如果存在,則說明配置沒有生效,radeon 驅動模塊仍然被系統加載了。

ACO編譯器[編輯 | 編輯原始碼]

ACO編譯器 是一個由 Valve Corporation開發的開源着色器(shader)編譯器,可直接與LLVM編譯器AMDVLK 驅動程序以及Windows 10競爭。與 LLVM 和 AMDVLK 相比,它提供更短的編譯時間,並且在玩遊戲時表現更好。

一些基準性能測試可以在GitHub和 Phoronix (1) (2) (3)中看到。

mesa20.2版本開始, ACO是默認着色器編譯器。

加載[編輯 | 編輯原始碼]

應該會在系統啟動時自動加載。

如果沒有自動加載:

這一章節正在考慮移除。

原因:mkinitcpio v32版本,默認使用kms鈎子,因此大多數設置默認早期加載。 (在 Talk: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使用硬件翻頁機制控制撕裂預防。默認情況下,如果旋轉畫面輸出、使用RandR變換和RandR 1.4 從屬輸出時,TearFree會被啟用,其他情況下默認關閉。你可以通過指定truefalse來控制此配置保持啟用/關閉:

Option "TearFree" "true"

DRI 級別[編輯 | 編輯原始碼]

DRI 設置要啟用的最大 DRI 級別。DRI2 的有效值為「2」,DRI3 的有效值為「3」。如果 Xorg 版本 >= 1.18.3,則 DRI3 的默認值為「3」,否則使用 DRI2:

Option "DRI" "3"

可變刷新率[編輯 | 編輯原始碼]

參考可變刷新率

10-bit 色深[編輯 | 編輯原始碼]

警告: 當啟用 10 位深度顏色時,許多應用程序可能會出現圖形瑕疵或崩潰。尤其是 Steam,它因 X 錯誤而崩潰。

較新的 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)

使用默認配置,log 會顯示 depth 為 24,並且 24 位色彩存儲在 4 個字節中。

要檢查 10 bits色深是否工作,請退出 Xorg(如果它正在運行)並運行 Xorg -retro 這將顯示黑白網格,然後按 Ctrl-Alt-F1 和 { {ic|Ctrl-C}} 退出 X,然後運行 Xorg -depth 30 -retro。 如果這些命令能正常執行,那麼就說明10位色深生效了。

要通過 startx 以 10 位色深啟動,請使用 startx -- -depth 30。 要永久啟用它,請添加到(如果沒有指定文件則新建):

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

降低輸出延遲[編輯 | 編輯原始碼]

如果您想最大程度地減少延遲,您可以禁用翻頁(page fliping)和無撕裂(tear free):

/etc/X11/xorg.conf.d/20-amdgpu.conf
Section "OutputClass"
     Identifier "AMD"
     MatchDriver "amdgpu"
     Driver "amdgpu"
     Option "EnablePageFlip" "off"
     Option "TearFree" "false"
EndSection

參考遊戲#降低_DRI_延遲來降低顯示延遲。

注意: 設置這些選項可能會導致出現撕裂和短暫的瑕疵。

特性[編輯 | 編輯原始碼]

視頻加速[編輯 | 編輯原始碼]

參考硬件視頻加速.

性能監控[編輯 | 編輯原始碼]

GPU性能監控通常用於檢查溫度以及 GPU 的 P-states。

命令行界面[編輯 | 編輯原始碼]

  • 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

圖形用戶界面[編輯 | 編輯原始碼]

  • amdgpu_top — 顯示AMDGPU使用率的工具
https://github.com/Umio-Yasuno/amdgpu_top || amdgpu_topAUR
  • AmdGuid — 完全用Rust編寫的一個基本的圖形用戶界面風扇控制工具
https://github.com/Eraden/amdgpud || amdguid-wayland-binAUR, amdguid-glow-binAUR
  • TuxClocker — Qt5監控和超頻工具。
https://github.com/Lurkki14/tuxclocker || tuxclockerAUR


手動[編輯 | 編輯原始碼]

檢查GPU的P-states,執行:

$ 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

檢查顯存頻率,執行:

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

檢查顯存占用,執行:

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

檢查顯存大小,執行:

$ 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功耗與發熱控制內核文檔。

可以為最大 P-state 7 設置 GPU 核心頻率, 以 Polaris 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-states 引起的閃爍、偽影和卡頓之類的問題,也可以禁止驅動程序切換到某些 P-states。要讓顯卡強制使用最高的 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

僅允許三個最高的 GPU pstates:

# 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 顯卡。

命令行工具[編輯 | 編輯原始碼]
  • amdgpu-clocks — 用於監控和設置 AMD GPU 自定義電源狀態的腳本。它還提供了一個 Systemd 服務,可以在系統啟動時自動置。
https://github.com/sibradzic/amdgpu-clocks || amdgpu-clocks-gitAUR
圖形界面工具[編輯 | 編輯原始碼]
  • TuxClocker — Qt5 監控和超頻工具。
https://github.com/Lurkki14/tuxclocker || tuxclockerAUR
  • CoreCtrl — 一個 GUI 超頻工具,具有類似 WattMan 的 UI,支持每個應用程序配置文件。
https://gitlab.com/corectrl/corectrl || corectrl
  • LACT — 一個GTK工具,可顯示信息和控制你的AMD GPU。
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,要確保找到正確的路徑。

要使用特定的電源配置文件,首先應該啟用對它們的手動控制:

# 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

附註: 不特定於 AMDGPU。(在 Talk:AMDGPU#將 "啟用 GPU 顯示縮放" 移動到 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 或應用程序無法啟動[編輯 | 編輯原始碼]

  • "(EE) AMDGPU(0): [DRI2] DRI2SwapBuffers: drawable has no back or front?" error after opening glxgears, can open Xorg server but OpenGL apps crash.
  • "(EE) AMDGPU(0): Given depth (32) is not supported by amdgpu driver" error, Xorg won't start.

在 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

屏幕偽影和頻率問題[編輯 | 編輯原始碼]

由於 GPU 時鐘速度的管理方式存在問題,動態電源管理 可能會在顯示器運行高刷新率(120+hz)時導致屏幕偽影 .org/show_bug.cgi?id=96868[1]

一個規避的辦法 [2] 是手動將 /sys/class/drm/card0/device/power_dpm_force_performance_level 設置為 highlow

要使設置持久化生效,可以創建一個 udev 規則:

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

本文或本章節的事實準確性存在爭議。

原因: 命令總是返回/sys/class/drm/card0的結果card0(或者由於沒有對於設備返回結果為空)。下面的命令意義是什麼?(在 Talk:AMDGPU 中討論)


執行下面的命令檢查 KERNEL 參數名稱:

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

另一個圖形界面的解決方案 [3]是用 radeon-profile-gitAURradeon-profile-daemon-gitAUR 來管理 power_dpm

Chromium 偽影[編輯 | 編輯原始碼]

如果在使用 Chromium 時看到偽影,可以嘗試強制使用基於 vulkan 的後端。在 chrome://flags啟用 #ignore-gpu-blocklist#enable-vulkan

R9 390 系列性能不佳或不穩定[編輯 | 編輯原始碼]

如果在使用 AMD R9 390 系列顯卡時遇到問題 [4],可以在內核參數中設置radeon.cik_support=0 radeon.si_support=0 amdgpu .cik_support=1 amdgpu.si_support=1 amdgpu.dpm=1 amdgpu.dc=1 來強制使用 amdgpu 驅動模塊而不是 radeon 驅動模塊。

如果還不起作用,請嘗試通過在內核參數中設置:radeon.cik_support=0 radeon.si_support=0 amdgpu.cik_support=1 amdgpu.si_support=1 來禁用動態電源管理(DPM)。

因內核錯誤"[drm] IP block:gmc_v8_0 is hung!"畫面凍結[編輯 | 編輯原始碼]

如果在執行 GPU 密集型任務期間遇到凍結和內核崩潰,並出現內核錯誤"[drm] IP block:gmc_v8_0 is hung!" [5]時,一個規避的方法是在內核參數中設置 amdgpu.vm_update_mode=3 來強制使用 CPU 完成 GPUVM 頁面表更新。 這裡列出了這個方法的缺點 [6]

光標損壞[編輯 | 編輯原始碼]

這一章節正在考慮移除。

原因: 光標顏色/伽馬值錯誤已經在6.5-rc6修復[7]。 (在 Talk:AMDGPU 討論)


如果遇到鼠標光標有時無法正確顯示的問題,可以在 /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 損壞[編輯 | 編輯原始碼]

當用戶強制啟用 WebRenderer 時,可能會出現偽影和其他異常(例如無法選擇擴展選項)。解決方法是回退到 OpenGL 合成。

兩倍速或花栗鼠(chipmunk)音頻,或連接 4K@60Hz 設備時無音頻[編輯 | 編輯原始碼]

這有時是由 AMDGPU 設備和通過 HDMI 連接的 4K 顯示器之間的通信問題引起的。一種可能的規避方法是通過顯示器的內置設置啟用 HDR 或「超高清深色」。在許多基於 Android 的電視上,這對應着將相關選項設置為「標準」(Standard)而不是「最佳」(Optimal)。

獨立顯卡的電源管理/動態重新激活問題[編輯 | 編輯原始碼]

如果遇到內核驅動已經加載,但遊戲時獨立顯卡不可用或在使用時獨立顯卡被禁用(類似於 [9]) 的問題,可以通過設置內核參數 amdgpu.runpm=0 來防止獨顯在運行時動態斷電。

kfd: amdgpu: TOPAZ not supported in kfd[編輯 | 編輯原始碼]

在系統日誌或內核消息密鑰環中打印危急級別的錯誤消息

kfd: amdgpu: TOPAZ not supported in kfd

如果沒有使用 Radeon Open Compute 的計劃,可以安全的忽略這個問題。因為舊顯卡不支持 TOPAZ。[10] [11]

MCLK鎖定在最大(1000MHz)或最小(96MHz)頻率導致的高待機功耗或低遊戲性能問題(6.4內核)[編輯 | 編輯原始碼]

在高分辨率和刷新率的設置下,MCLK(vram,顯存頻率)可能會鎖定在最高值(1000MHz)[12] [13] ,造成GPU待機功耗過高。使用Linux 6.4.x內核,MCLK鎖定在最低頻率(96MHz)影響遊戲性能[14] [15]

這可能是因為顯示器沒有為受影響的分辨率和刷新率設置使用一個低V-Blank值的協調視頻時序(Coordinated Video Timings, CVT),參考這篇內容來解決。

參考資料[編輯 | 編輯原始碼]