AMDGPU (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
AMDGPU
. Дата последней синхронизации: 1 июля 2025. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Ссылки по теме
ATI (Русский)
Xorg (Русский)
Vulkan (Русский)
AMDGPU PRO (Русский)
AMDGPU
— это свободный драйвер для графики AMD Radeon, начиная с поколения
Graphics Core Next
.
Выбор правильного драйвера
Выберите правильный драйвер, соответствующий вашей видеокарте — смотрите раздел
Xorg (Русский)#AMD
. Драйвер AMDGPU поддерживает
Southern Islands
(GCN 1, 2012 год) и более новые семейства. Добавление поддержки старых GPU до поколения GCN не планируется.
Для неподдерживаемых видеокарт можно использовать открытый драйвер
ATI
.
Установка
Установите
пакет
mesa
, который предоставляет драйвер
DRI
для 3D-ускорения, а также драйверы VA-API/VDPAU для
аппаратного декодирования видео
.
Для поддержки 32-битных приложений также установите пакет
lib32-mesa
из репозитория
multilib
.
Для драйвера
DDX
(который обеспечивает 2D-ускорение в
Xorg
) можно установить пакет
xf86-video-amdgpu
, но это необязательно, так как стандартный драйвер modesetting обычно тоже работает без проблем.
Для поддержки
Vulkan
:
сперва попробуйте
только
пакет
vulkan-radeon
: хотя
pacman
не предлагает его в качестве первого пакета, предоставляющего
vulkan-driver
(из-за
сортировки по алфавиту
), он позволяет избежать некоторых проблем, о которых
сообщали
пользователи драйвера
amdvlk
AUR
;
если установлен пакет
amdvlk
AUR
, он назначает себя драйвером Vulkan по умолчанию;
если
вам
необходимо
использовать оба драйвера (например, если есть
проблемы
с драйвером
vulkan-radeon
), переключайте используемый драйвер как описано в разделе
Vulkan (Русский)#Выбор с помощью переменной окружения
;
для поддержки 32-битных приложений также установите
lib32-vulkan-radeon
и/или
lib32-amdvlk
AUR
соответственно.
Экспериментальные версии
Иногда имеет смысл попробовать экспериментальную сборку Mesa.
Установите пакет
mesa-git
AUR
, который предоставляет драйвер DRI для 3D-ускорения.
Для поддержки 32-битных приложений также установите пакет
lib32-mesa-git
AUR
из
AUR
или из неофициального репозитория
mesa-git
.
Для драйвера DDX (который обеспечивает 2D-ускорение в Xorg) установите пакет
xf86-video-amdgpu-git
AUR
.
Для поддержки Vulkan при использовании неофициального репозитория
mesa-git
установите пакет
vulkan-radeon-git
, а также
lib32-vulkan-radeon-git
для поддержки 32-битных приложений. При установке
mesa-git
AUR
из AUR это не требуется.
Совет
Пользователи, которые не хотят самостоятельно собирать пакет
mesa-git
AUR
, могут подключить неофициальный репозиторий
mesa-git
.
Включение поддержки Southern Islands (SI) и Sea Islands (CIK)
В
официально поддерживаемых ядрах
включена поддержка AMDGPU для карт Southern Islands (GCN 1, 2012 год) и Sea Islands (GCN 2, 2013 год). Драйвер ядра
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
не используется (не указан в строке
Kernel driver in use
), выполните описанные ниже шаги.
Загрузка драйвера amdgpu
Параметры модулей ядра
amdgpu
и
radeon
—
cik_support=
и
si_support=
.
Их нужно прописать в параметрах ядра или в файле настроек
modprobe
, а конкретные значения зависят от версии GCN.
Можно использовать оба параметра, если вы не знаете версию 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
Кроме того, если вы используете APU AMD A10 с интегрированной графикой Sea Island (GCN 1.1), вам может понадобиться отключить Radeon Dynamic Power Management для обеспечения нормальной загрузки. Эта функция управляет частотой графического ядра, что позволяет контролировать температуру и шум, однако она может привести к бесконечному циклу перезагрузки. Чтобы отключить её, добавьте
radeon.dpm=0
в дополнение к указанным выше параметрам ядра.
Установка правильного порядка загрузки модулей
Убедитесь, что
amdgpu
является первым модулем в массиве
mkinitcpio (Русский)#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=1
/etc/modprobe.d/radeon.conf
options radeon si_support=0
options radeon cik_support=0
Убедитесь, что в
/etc/mkinitcpio.conf
в массиве
HOOKS
есть
modconf
, и
пересоберите образ initramfs
.
Компиляция ядра с поддержкой драйвера amdgpu
При
компиляции собственного ядра
укажите параметры
CONFIG_DRM_AMDGPU_SI=Y
и/или
CONFIG_DRM_AMDGPU_CIK=Y
.
Компилятор ACO
ACO
— открытый компилятор шейдеров, разработанный компанией компанией
Valve
. По сравнению с
LLVM
и
AMDVLK
он компилирует шейдеры быстрее и работает лучше.
Бенчмарки:
GitHub
, Phoronix
(1)
(2)
(3)
.
Начиная с версии
20.2
,
mesa
использует компилятор ACO по умолчанию.
Загрузка
Модуль ядра
amdgpu
должен загрузиться автоматически.
Если он не загружается:
проверьте
#Включение поддержки Southern Islands (SI) и Sea Islands (CIK)
, если это требуется для вашей видеокарты;
убедитесь, что пакет
linux-firmware-amdgpu
установлен и обновлён, так как он содержит необходимые прошивки;
убедитесь, что вы
не
используете
параметры ядра
nomodeset
или
vga=
, которые отключают
KMS
, так как он необходим для работы
amdgpu
;
убедитесь, что загрузка модуля
amdgpu
не запрещена
.
Возможно, модуль загружается, но слишком поздно. В таком случае проверьте, включен ли у вас
ранний запуск KMS
.
Настройка Xorg
Xorg
автоматически загрузит нужный драйвер и выставит правильное разрешение монитора по информации из EDID. Изменение конфигурации Xorg требуется лишь для тонкой настройки драйвера.
Для ручной настройки создайте такой файл:
/etc/X11/xorg.conf.d/20-amdgpu.conf
Section "OutputClass"
     Identifier "AMD"
     MatchDriver "amdgpu"
     Driver "amdgpu"
EndSection
Информация о параметрах драйвера, которые можно менять в этой секции, доступна в документации:
amdgpu(4)
.
Избавление от разрывов
Параметр
TearFree
управляет предотвращением разрывов (тиринга) с помощью аппаратного механизма переключения страниц (page flipping). По умолчанию TearFree будет включен для повёрнутых выходов, выходов с применёнными преобразованиями RandR и для вторичных (slave) выходов RandR 1.4 и выключен для всего остального. Вы также можете настроить его так, чтобы он был всегда включен или всегда выключен, с помощью значений
true
или
false
соответственно.
Option "TearFree" "true"
Можно включить TearFree временно с помощью
xrandr
:
$ xrandr --output
название-выхода
--set TearFree on
Список доступных видеовыходов можно получить командой
xrandr -q
.
Уровень DRI
Параметр
DRI
устанавливает максимальный уровень DRI для использования. Доступные значения —
2
для DRI2 и
3
для DRI3. По умолчанию используется DRI3 в
Xorg
версий >= 1.18.3 и DRI2 в более старых версиях:
Option "DRI" "3"
Переменная частота обновления
Смотрите статью
Variable refresh rate
.
10-битный цвет
Важно
При включении 10-битного цвета многие приложения могут давать графические артефакты или аварийно завершать работу. К таким приложениям, в частности, относится
Steam
, при запуске которого возникает ошибка X Error.
Новые карты AMD поддерживают 10-битную глубину цвета, но по умолчанию используется 24-битный цвет (глубина 8 бит), а 30-битный цвет должен быть явно включен. Включение этой функции может сделать полосы в градиентах менее видимыми, если приложения поддерживают это. Чтобы проверить, поддерживает ли ваш монитор эту функцию, ищите «EDID» в
журнале Xorg
(например,
/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-битного цвета.
Чтобы проверить, работает ли 10-битный цвет, остановите Xorg, если он у вас запущен, и запустите
Xorg -retro
, который отобразит чёрно-белую сетку, затем нажмите
Ctrl-Alt-F1
и
Ctrl-C
, чтобы выйти из X, и запустите
Xorg -depth 30 -retro
. Если всё работает нормально, значит, 10-битный цвет работает.
Чтобы включить 10-битный цвет через
startx
, используйте
startx -- -depth 30
. Для постоянного включения отредактируйте настройки Xorg:
/etc/X11/xorg.conf.d/20-amdgpu.conf
Section "Screen"
	Identifier "asdf"
	DefaultDepth 30
EndSection
Снижение задержки вывода
Для минимизации задержек можно выключить page flipping и 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
Смотрите также
Gaming#Reducing DRI latency
.
Примечание
Это может привести к появлению тиринга и других подобных артефактов.
Возможности
Аппаратное ускорение видео
Смотрите раздел
Аппаратное ускорение видео#AMD/ATI
.
Мониторинг
Можно следить за температурой и P-state видеокарты.
Консольные инструменты
amdgpu_top
— Инструмент для отображения использования AMDGPU.
https://github.com/Umio-Yasuno/amdgpu_top
||
amdgpu_top
nvtop
— Мониторинг видеокарт AMD, Intel и NVIDIA.
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_top
AmdGuid
— Базовый графический интерфейс управления вентиляторами, полностью написанный на Rust.
https://github.com/Eraden/amdgpud
||
amdguid-wayland-bin
AUR
,
amdguid-glow-bin
AUR
Radeon Profile
— Инструмент для чтения и изменения частот видеокарт AMD Radeon, использующий Qt 5.
https://github.com/emerge-e-world/radeon-profile
||
radeon-profile-git
AUR
TuxClocker
— Инструмент для мониторинга и разгона, использующий Qt 5.
https://github.com/Lurkki14/tuxclocker
||
tuxclocker
AUR
Вручную
Проверка P-state:
$ cat /sys/class/drm/card0/device/pp_od_clk_voltage
Мониторинг видеокарты:
# watch -n 0.5 cat /sys/kernel/debug/dri/0/amdgpu_pm_info
Процент нагрузки:
$ 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
.
Некоторые биты ещё не используются и могут быть задействованы в будущем. Включение всего сразу может привести к включению нестабильных функций, вызывающих проблемы вроде мерцания экрана или поломки ждущего режима. Достаточно установить бит PP_OVERDRIVE_MASK, 0x4000 в сочетании со стандартным значением ppfeaturemask. Чтобы вычислить разумное значение параметра для вашей системы, выполните:
$ 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 thermal control
.
Для включения ручного управления разгоном выберите уровень производительности
manual
как описано в разделе
#Уровни производительности
.
Например, чтобы задать для максимального P-state 7 частоту видеокарты 1209 МГц и напряжение 900 мВ, выполните:
# echo "s 7 1209 900" > /sys/class/drm/card0/device/pp_od_clk_voltage
Аналогично для максимального 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, такие как мерцания или подвисания. Чтобы принудительно установить максимальный P-state видеопамяти, но при этом позволить видеочипу работать на пониженных частотах, сначала найдите максимально возможный 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
А для видеокарты разрешите только три последних P-state:
# echo "5 6 7" > /sys/class/drm/card0/device/pp_dpm_sclk
Чтобы выставить ограничение потребления энергии в 50 Вт, выполните:
# echo
50
000000 > /sys/class/drm/card0/device/hwmon/hwmon0/power1_cap
Примечание
Приведённые выше команды тестировались на видеокарте Polaris RX 560. На других видеокартах диапазон доступных значений, поведение и баги могут отличаться.
С помощью вспомогательных программ
Если вы не хотите вписывать параметры разгона вручную, есть поддерживаемые сообществом программы, которые упрощают это.
Консольные
amdgpu-clocks
— Скрипт, который можно использовать для мониторинга и установки пользовательских режимов питания для видеокарт AMD. Он также предлагает службу systemd для автоматического применения настроек при загрузке системы.
https://github.com/sibradzic/amdgpu-clocks
||
amdgpu-clocks-git
AUR
ruby-amdgpu_fan
— Интерфейс командной строки для взаимодействия с Linux-драйвером amdgpu, написанный на Ruby.
https://github.com/HarlemSquirrel/amdgpu-fan-rb
||
ruby-amdgpu_fan
AUR
Графические
TuxClocker
— Инструмент для мониторинга и разгона, использующий Qt 5.
https://github.com/Lurkki14/tuxclocker
||
tuxclocker
AUR
CoreCtrl
— Инструмент для разгона с графическим интерфейсом, похожим на WattMan, с поддержкой профилей для отдельных приложений.
https://gitlab.com/corectrl/corectrl
||
corectrl
LACT
— GTK-инструмент для просмотра информации и управления видеокартой AMD. Конфликтует с
power-profiles-daemon
; отключите
amdgpu_dpm
в параметрах последнего во избежание конфликтов.
[1]
https://github.com/ilya-zlobintsev/LACT
||
lact
Radeon Profile
— Инструмент для чтения и изменения текущих частот видеокарт AMD Radeon, использующий Qt 5.
https://github.com/emerge-e-world/radeon-profile
||
radeon-profile-git
AUR
Применение параметров при загрузке системы
Один из способов — использовать юниты systemd для выполнения нужных вам команд управления разгоном. Подробнее в
посте на Reddit
.
Другой способ — использовать правила
udev
для некоторых значений. Например, задать уровень производительности
low
для экономии энергии можно так:
/etc/udev/rules.d/30-amdgpu-low-power.rules
ACTION=="add", SUBSYSTEM=="drm", DRIVERS=="amdgpu", ATTR{device/power_dpm_force_performance_level}="low"
Уровни производительности
AMDGPU предлагает несколько уровней производительности (performance levels). Для выбора уровня используется файл
power_dpm_force_performance_level
. Доступны следующие уровни:
auto
: динамический выбор оптимального профиля питания для текущих условий в драйвере.
low
: принудительно минимальные частоты.
high
: принудительно максимальные частоты.
manual
: ручная настройка пользователем (
#Профили питания
или
#Разгон
).
profile_standard
,
profile_min_sclk
,
profile_min_mclk
,
profile_peak
: отключаются power и clock gating, а частоты устанавливаются для различных случаев профилирования. Этот режим рекомендуется для профилирования специфических рабочих нагрузок.
Например, включить уровень производительности
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
указывает на одну конкретную видеокарту; если у вас их несколько, убедитесь, что вы смотрите параметры правильной видеокарты.
Чтобы использовать определённый профиль питания, сначала включите уровень производительности
manual
:
# 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
Примечание
После перезагрузки профиль сбрасывается и его нужно будет выбрать заново; автоматизация этого действия описана в разделе
#Применение параметров при загрузке системы
.
Масштабирование экрана
Чтобы избежать масштабирования картинки монитором на неродных разрешениях, можно использовать масштабирование видеокартой. Для его включения используйте
xrandr
:
$ xrandr --output
название-выхода
--set "scaling mode"
режим-масштабирования
Доступные режимы масштабирования:
None
,
Full
,
Center
,
Full aspect
.
Узнать список доступных выводов и параметров:
$ xrandr --prop
Команда для включения режима
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 позволяет использовать виртуальные мониторы на headless-установках без применения заглушек. Это полезно для RDP и программ для стриминга игр вроде
sunshine
AUR
.
Найдите GPU AMD, который вы хотите использовать:
$ lspci -Dd ::03xx
1234:56:78.9
VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI]
МаркетинговоеИмя
Добавьте
параметр модуля ядра
virtual_display=
1234:56:78.9
,
x
для модуля
amdgpu
, где
1234:56:78.9
— это PCI-адрес нужного GPU, а
x
— количество создаваемых виртуальных мониторов. Имейте в виду, что при использовании этого параметра физические мониторы будут отключены.
[2]
Можно указать несколько GPU через точку с запятой:
amdgpu.virtual_display=1234:56:78.9,
x
;9876:54:32.1,
y
Решение проблем
Параметры модуля
Модуль ядра amdgpu прячет некоторые параметры в битовых масках (
modinfo amdgpu | grep mask
), информация о которых есть только в
исходном коде ядра
.
Xorg или приложения не запускаются
glxgears
не запускается с ошибкой «(EE) AMDGPU(0): [DRI2] DRI2SwapBuffers: drawable has no back or front?».
Xorg не запускается с ошибкой «(EE) AMDGPU(0): Given depth (32) is not supported by amdgpu driver».
Установка глубины цвета в Xorg на 16 или 32 бита может приводить к подобным проблемам. Чтобы избежать их, следует использовать стандартную глубину цвета 24 бита:
/etc/X11/xorg.conf.d/10-screen.conf
Section "Screen"
       Identifier     "Screen"
       DefaultDepth    24
       SubSection      "Display"
               Depth   24
       EndSubSection
EndSection
Проблемы с артефактами и частотой экрана
Динамическое управление питанием
может привести к появлению артефактов на экране при использовании мониторов с высокой частотой обновления (более 60 Гц) из-за проблем с управлением частотой
[3]
[4]
.
Обходным решением
[5]
является установка фиксированного уровня производительности
high
или
low
как описано в разделе
#Уровни производительности
.
Изменение версии ядра также может помочь решить эту проблему (похоже, что она исправлена в Linux 6.12.9).
Артефакты в Chromium
Если в
Chromium
есть артефакты, попробуйте использовать бэкенд Vulkan. Откройте
chrome://flags
и включите
#ignore-gpu-blocklist
и
#enable-vulkan
.
Низкая производительность и/или нестабильность на R9 390 series
Если у вас возникли проблемы
[6]
на AMD R9 390 series, укажите
параметры ядра
radeon.cik_support=0 radeon.si_support=0 amdgpu.cik_support=1 amdgpu.si_support=1 amdgpu.dc=1
, чтобы использовать драйвер amdgpu вместо драйвера radeon.
Если всё равно не работает, отключение 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!»
Если при интенсивном использовании видеокарты возникают зависания и сбои ядра с ошибкой
[drm] IP block:gmc_v8_0 is hung!
[7]
, в качестве обходного пути можно добавить
параметр ядра
amdgpu.vm_update_mode=3
, чтобы заставить обновление GPUVM page tables выполняться на процессоре. Недостатки перечислены здесь
[8]
.
Экран мерцает белым/серым
Если при изменении разрешения или подключении внешнего монитора экран мерцает или остаётся белым, добавьте
параметр ядра
amdgpu.sg_display=0
.
Зависание или крах системы в играх на видеокартах Vega
Динамическое управление питанием
может привести к полному зависанию системы во время игры из-за проблем с управлением частотой.
[9]
Обходным решением является установка фиксированного уровня производительности
high
как описано в разделе
#Уровни производительности
.
Артефакты в WebRender (Firefox)
Принудительно включенный
WebRender
в настройках Firefox может приводить к артефактам и другим проблемам (например, невозможности выбирать пункты в выпадающих списках). В качестве обходного пути можно вернуться на OpenGL-композитинг.
Ускоренный звук или отсутствие звука при подключении устройства 4K@60Hz
Это иногда вызвано проблемой связи между устройством AMDGPU и 4K-дисплеем, подключенным по HDMI. Возможным решением проблемы является включение HDR или «Ultra HD Deep Color» через встроенные настройки дисплея. На многих Android-телевизорах это означает установку «Standard» вместо «Optimal».
Проблемы с управлением питанием / динамическое включение дискретной видеокарты amdgpu
Если вы столкнулись с проблемой, когда драйвер ядра загружается, но дискретная видеокарта по-прежнему недоступна для игр или отключается во время работы (аналогично
[10]
), вы можете обойти эту проблему, добавив
параметр ядра
amdgpu.runpm=0
, который предотвращает динамическое отключение питания дискретной видеокарты во время работы системы.
Зависание дисплея (flip_done timed out)
В драйвере amdgpu есть баг, из-за которого перестаёт обновляться изображение на дисплее
[11]
. В качестве обходного пути можно добавить
параметр ядра
amdgpu.dcdebugmask=0x10
или
amdgpu.dcdebugmask=0x12
.
kfd: amdgpu: TOPAZ not supported in kfd
В журнале вы можете увидеть такое сообщение:
kfd: amdgpu: TOPAZ not supported in kfd
Если вы не планируете использовать
Radeon Open Compute
, это сообщение можно игнорировать (TOPAZ относится к старому поколению видеокарт и поэтому не поддерживается).
[12]
[13]
Высокое потребление энергии при бездействии из-за максимального MCLK (1000 МГц) или низкая производительность в играх из-за минимального MCLK (96 МГц)
При высоких разрешениях и частоте обновления MCLK (vram / memory clock) может быть заблокирован на самой высокой частоте (1000 МГц)
[14]
[15]
, что приводит к повышенному потреблению энергии видеокартой при бездействии. В ядре Linux 6.4.x MCLK заблокирован на самой низкой частоте (96 МГц), что приводит к низкой производительности в играх
[16]
[17]
.
Вероятно, это связано с тем, что монитор не использует Coordinated Video Timings (CVT) с низким значением V-Blank для соответствующих разрешений и частот обновления. Обходной путь описан в
этом gist
.
Не удаётся перейти в ждущий режим
При переходе в ждущий режим (S3) модуль ядра
amdgpu
пытается сохранить содержимое видеопамяти в оперативной памяти.
Если у вас занято много видеопамяти и при этом мало свободной оперативной памяти,
это может не сработать
даже при наличии подкачки, поскольку подсистема ввода-вывода могла быть приостановлена ранее.
В журнале вы увидите что-то вроде:
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]
В качестве обходного пути можно использовать
пользовательскую службу
, которая обеспечивает выделение достаточного объёма оперативной памяти для сохранения видеопамяти перед переходом в ждущий режим, вытесняя занятую оперативную память в подкачку.
Смотрите также
Gentoo:AMDGPU
Баг-трекер AMDGPU