Jump to content

ATI (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи ATI. Дата последней синхронизации: 13 июня 2025. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Данная статья описывает открытый драйвер radeon, который поддерживает старые видеокарты AMD (ранее ATI).

Выбор правильного драйвера

Выберите правильный драйвер, соответствующий вашей видеокарте — смотрите раздел Xorg (Русский)#AMD. Данная статья описывает ATI.

Если не уверены, попробуйте сначала драйвер AMDGPU, который походит для большинства карт, выпущенных с 2015 года. Смотрите таблицу возможностей, чтобы узнать, что поддерживается драйвером radeon, и таблицу, сопоставляющую маркетинговые названия видеокарт (например, Radeon HD4330) с названиями чипов (например, R700).

Установка

Установите пакет mesa, который предоставляет драйвер DRI для 3D-ускорения, а также драйверы VA-API/VDPAU для аппаратного декодирования видео, или mesa-amber для очень старых видеокарт (R200 и более старые).

  • Для поддержки 32-битных приложений также установите пакет lib32-mesa (lib32-mesa-amber) из репозитория multilib.
  • Для драйвера DDX (который обеспечивает 2D-ускорение в Xorg) можно установить пакет xf86-video-ati, но это необязательно, так как стандартный драйвер modesetting обычно тоже работает без проблем.

Загрузка

Модуль ядра radeon должен загрузиться автоматически.

Если он не загружается:

  • убедитесь, что вы не используете параметры ядра nomodeset или vga=, которые отключают KMS, так как он необходим для работы radeon;
  • убедитесь, что загрузка модуля radeon не запрещена.

Настройка Xorg

Xorg автоматически загрузит нужный драйвер и выставит правильное разрешение монитора по информации из EDID. Изменение конфигурации Xorg требуется лишь для тонкой настройки драйвера.

Для ручной настройки создайте такой файл:

/etc/X11/xorg.conf.d/20-radeon.conf
Section "OutputClass"
    Identifier "Radeon"
    MatchDriver "radeon"
    Driver "radeon"
EndSection

Информация о параметрах драйвера, которые можно менять в этой секции, доступна в документации: radeon(4).

Настройка производительности

Аппаратное ускорение видео

Смотрите Аппаратное ускорение видео#AMD/ATI.

Графические инструменты

  • Radeon Profile — Инструмент для чтения и изменения частот видеокарт AMD Radeon, использующий Qt 5.
https://github.com/emerge-e-world/radeon-profile || radeon-profile-gitAUR
  • CoreCtrl — Инструмент для разгона с графическим интерфейсом, похожим на WattMan, с поддержкой профилей для отдельных приложений.
https://gitlab.com/corectrl/corectrl || corectrl

Параметры драйвера

Эти параметры задаются в файле /etc/X11/xorg.conf.d/20-radeon.conf.

Перед их изменением прочитайте radeon(4) и RadeonFeature.

Метод ускорения; Glamor (реализует ускорение 2D с помощью OpenGL) используется по умолчанию для R600 (Radeon HD2000 series) и более новых видеокарт. Для старых видеокарт используется EXA.

Option "AccelMethod" "glamor"

DRI3 включен по умолчанию начиная с xf86-video-ati 7.8.0.

TearFree предотвращает горизонтальные разрывы изображения (тиринг) с помощью аппаратного механизма переключения страниц:

Option "TearFree" "on"

ColorTiling и ColorTiling2D должны быть включены по умолчанию. Плиточный режим может обеспечить значительный прирост производительности в 3D-приложениях. Он отключается, если модуль DRM слишком старый или если текущая конфигурация дисплея его не поддерживает. KMS ColorTiling2D поддерживается только на R600 (Radeon HD2000 series) и более новых чипах:

Option "ColorTiling" "on"
Option "ColorTiling2D" "on"

При использовании метода ускорения Glamor можно включить ShadowPrimary, который позволяет использовать так называемый «shadow primary» буфер для быстрого доступа процессора к пиксельным данным, а также отдельные scanout-буферы для каждого контроллера дисплея (CRTC). Это может повысить производительность для некоторых 2D-нагрузок, но потенциально за счёт других (например, 3D, видео) нагрузок. Имейте в виду, что включение этого параметра в настоящее время отключает Option "EnablePageFlip":

Option "ShadowPrimary" "on"

EXAVSync доступен только при использовании метода ускорения EXA и может быть включен для предотвращения тиринга путём приостановки работы движка до тех пор, пока контроллер дисплея не пройдёт регион назначения. Это уменьшает разрывы ценой снижения производительности и, как известно, может привести к нестабильности на некоторых чипах:

Option "EXAVSync" "yes"

Пример файла настроек /etc/X11/xorg.conf.d/20-radeon.conf:

Section "OutputClass"
  Identifier "Radeon"
  MatchDriver "radeon"
  Driver "radeon"
  Option "AccelMethod" "glamor"
  Option "DRI" "3"
  Option "TearFree" "on"
  Option "ColorTiling" "on"
  Option "ColorTiling2D" "on"
EndSection

Параметры ядра

Совет: Для отладки параметров можно использовать systool как описано в разделе Модуль ядра#Получение информации.

Если значение gartsize не определилось автоматически, можно задать его вручную, добавив параметр ядра radeon.gartsize=32.

Примечание: Для современных видеокарт AMD указывать этот параметр скорее всего не нужно:
[drm] Detected VRAM RAM=2048M, BAR=256M
[drm] radeon: 2048M of VRAM memory ready
[drm] radeon: 2048M of GTT memory ready.

Перезагрузитесь для применения изменений.

Отключение PCIe 2.0

Начиная с версии ядра 3.6, в драйвере radeon включено по умолчанию использование PCI Express 2.0.

На некоторых материнских платах это приводит к проблемам. Для отключения добавьте параметр ядра radeon.pcie_gen2=0.

Смотрите статью на Phoronix для более подробной информации.

Оверлей Gallium

Драйвер radeon позволяет включить оверлей (heads-up display, HUD), который может рисовать прозрачные графики и текст поверх приложений, выполняющих рендеринг, например игр. Эти графики могут показывать такие значения, как текущая частота кадров или загрузка процессора (средняя или по ядрам). Оверлей управляется переменной окружения GALLIUM_HUD, в которой можно указать желаемые графики через запятую или точку с запятой. Некоторые из доступных графиков:

  • fps — текущая частота кадров в секунду
  • cpu — средняя загрузка процессора
  • cpu0 — загрузка первого ядра процессора
  • cpu0+cpu1 — загрузка первых двух ядер процессора
  • draw-calls — сколько раз каждый материал объекта отрисовывается на экране
  • requested-VRAM — сколько используется видеопамяти
  • samples-passed — сколько пикселей отрисовывается

Чтобы увидеть полный список параметров, а также некоторые заметки по работе с GALLIUM_HUD, можно указать параметр help, запустить какое-нибудь простое приложение вроде glxgears и посмотреть вывод в терминале:

$ GALLIUM_HUD="help" glxgears

Более подробная информация есть в этом письме и в этой статье.

Гибридная графика/AMD Dynamic Switchable Graphics

Эта технология используется в последних моделях ноутбуков, оснащённых двумя графическими процессорами: энергоэффективным (как правило, встроенная графика Intel) и более мощным и требовательным к питанию (как правило, дискретная графика Radeon или NVIDIA). Есть два способа работать с ними:

  • Если запускать нагружающие видеокарту приложения не требуется, можно отключить дискретную графику (смотрите Ubuntu wiki):
    # echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
  • PRIME: Является правильным способом использования гибридной графики в Linux, но требует некоторого ручного вмешательства со стороны пользователя.

Энергосбережение

Примечание: Управление питанием поддерживается на всех чипах, которые содержат соответствующие таблицы состояния питания в vbios (R1xx и новее). «dpm» поддерживается только на чипах R6xx и более новых.

Есть три метода управления питанием на выбор:

  1. dpm (по умолчанию с версии ядра 3.13)
  2. dynpm
  3. profile

Подробнее: https://www.x.org/wiki/RadeonFeature/#index3h2

Динамическое управление питанием

Начиная с версии ядра 3.13, DPM включен по умолчанию для большого количества видеокарт AMD Radeon. Если вы хотите отключить его и использовать другой метод, добавьте параметр ядра radeon.dpm=0.

Совет: DPM работает на видеокартах R6xx, но по умолчанию не включен (только для R7xx и новее). Добавьте параметр ядра radeon.dpm=1, чтобы включить dpm.

В отличие от dynpm, метод dpm использует аппаратные методы для динамического изменения частот и напряжений в зависимости от нагрузки на видеокарту. Он также позволяет регулировать тактовую частоту и мощность.

Доступны 3 режима работы:

  • battery — минимальное энергопотребление
  • balanced — разумные параметры по умолчанию
  • performance — максимальная производительность

Изменить режим можно через sysfs:

# echo battery > /sys/class/drm/card0/device/power_dpm_state

Для тестирования или отладки можно заставить видеокарту работать в заданном режиме производительности:

  • auto — по умолчанию; использует все доступные уровни
  • low — минимальный уровень производительности
  • high — максимальный уровень производительности
# echo low > /sys/class/drm/card0/device/power_dpm_force_performance_level

Консольные инструменты

  • radcard - скрипт для переключения режимов DPM

Старые методы

Динамическое переключение частоты

Этот метод динамически изменяет частоту в зависимости от нагрузки на видеокарту, поэтому производительность повышается при работе приложений, интенсивно использующих видеокарту, и снижается при бездействии. Момент изменения частоты пытается подстраиваться под вертикальную синхронизацию, но из-за особенностей работы успевает не всегда, что может приводить к мерцанию изображения на экране. В связи с этим динамическое управление питанием работает только если активен один монитор.

Включить этот метод можно командой:

# echo dynpm > /sys/class/drm/card0/device/power_method

Переключение частоты с помощью профилей

Этот метод позволяет выбрать один из пяти профилей. Профили в основном меняют частоты и напряжения видеокарты. Этот метод не такой агрессивный, но более стабильный, без мерцания и работает с несколькими мониторами.

Включить этот метод можно командой:

# echo profile > /sys/class/drm/card0/device/power_method

Доступные профили:

  • default — использует частоты по умолчанию и не изменяет состояние питания. Это поведение по умолчанию.
  • auto — выбирает между средним и максимальным энергопотреблением в зависимости от того, работает ли система от батареи или нет.
  • low — минимальное энергопотребление. На некоторых ноутбуках приводит к проблемам с изображением, поэтому профиль auto переключается на минимальное энергопотребление только когда все мониторы выключены. Выбирается в других профилях, когда мониторы находятся в состоянии DPMS-off.
  • mid — среднее энергопотребление.
  • high — максимальное энергопотребление.

Включить определённый профиль (например low) можно командой:

# echo low > /sys/class/drm/card0/device/power_profile

Постоянная конфигурация

Изменения параметров питания не сохраняются и сбрасываются после перезагрузки. Чтобы сделать изменения постоянными, можно создать правило udev для их применения. Пример, настраивающий #Переключение частоты с помощью профилей:

/etc/udev/rules.d/30-radeon-pm.rules
KERNEL=="card0", SUBSYSTEM=="drm", DRIVERS=="radeon", ATTR{device/power_method}="profile", ATTR{device/power_profile}="low"

Пример, настраивающий #Динамическое управление питанием на определённый режим производительности:

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

Примечания

Посмотреть текущие частоты видеокарты можно командой:

# cat /sys/kernel/debug/dri/0/radeon_pm_info
state: PM_STATE_ENABLED
default engine clock: 300000 kHz
current engine clock: 300720 kHz
default memory clock: 200000 kHz

Список доступных параметров зависит от модели видеокарты и версии ядра.

Термодатчики реализуются через внешние чипы i2c или через внутренний термодатчик (только для rv6xx-evergreen). Чтобы получить температуру на asics с чипами i2c нужно загрузить соответствующий драйвер hwmon для датчика, используемого на вашей плате (lm63, lm64 и т. д.). drm попытается загрузить соответствующий драйвер hwmon. На платах, использующих внутренний термодатчик, drm настроит интерфейс hwmon автоматически. Когда соответствующий драйвер загружен, доступ к температурам можно получить с помощью lm_sensors или через sysfs в /sys/class/hwmon.

Скорость вентилятора

Хотя описанные выше функции энергосбережения должны достаточно хорошо справляться со скоростью вращения вентиляторов, некоторые карты всё же могут быть слишком шумными при бездействии. В этом случае можно изменить скорость вращения вентиляторов вручную, если видеокарта поддерживает это.

Важно:
  • После изменения скорости вращения вентиляторов на фиксированное значение она не будет подстраиваться под текущую нагрузку, что может привести к перегреву при большой нагрузке.
  • При установки скорости ниже стандартной контролируйте температуру видеокарты.

Управление вентиляторами видеокарты описано в разделе Fan speed control#AMDGPU sysfs fan control (драйверы amdgpu и radeon имеют одинаковый интерфейс управления).

Сделать изменения постоянными можно как описано в разделе #Постоянная конфигурация.

Если фиксированное значение нежелательно, можно придумать свою кривую управления вентиляторами, например, написав скрипт, в котором скорость вентиляторов устанавливается в зависимости от текущей температуры (узнать её можно из файла /sys/class/drm/card0/device/hwmon/hwmon0/temp1_input).

radeon-profile-gitAUR предоставляет графический интерфейс.

ТВ-выход

Проверить наличие вывода S-Video можно командой xrandr, которая должна вывести что-то вроде:

Screen 0: minimum 320x200, current 1024x768, maximum 1280x1200
...
S-video disconnected (normal left inverted right x axis y axis)

Уведомляем Xorg, что он подключен:

xrandr --output S-video --set "load detection" 1

Изменение используемого ТВ-стандарта:

xrandr --output S-video --set "tv standard" ntsc

Добавление режима (на данный момент поддерживается только 800x600):

xrandr --addmode S-video 800x600

Включение дублирования изображения из основного монитора на S-Video:

xrandr --output S-video --same-as VGA-0

Выбор режима:

xrandr --output S-video --mode 800x600

После этого на телевизоре, подключенному к выводу S-Video, вы должны увидеть рабочий стол компьютера в пониженном разрешении.

Отключение вывода:

xrandr --output S-video --off

Включение ТВ-выхода через KMS

Через параметр ядра video= можно задавать видеорежим в таком формате (подробнее в статье Kernel mode setting (Русский)):

video=<conn>:<xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m][eDd]

Например:

video=DVI-I-1:1280x1024-24@60e

Параметры с пробелами должны быть внутри кавычек:

"video=9-pin DIN-1:1024x768-24@60e"

Получить список доступных видеовыводов можно командой:

$ ls -1 /sys/class/drm/ | grep -E '^card[[:digit:]]+-' | cut -d- -f2-

Звук HDMI

Звук HDMI поддерживается в видеодрайвере xf86-video-ati. Для отключения добавьте параметр ядра radeon.audio=0.

Если после загрузки нет видео, то опция драйвера должна быть отключена.

Примечание:

Несколько мониторов

С использованием RandR

Смотрите Multihead#RandR.

Независимые экраны X

Независимые установки с двумя мониторами можно настроить обычным способом. Однако вам стоит знать, что в драйвере radeon есть опция "ZaphodHeads", которая позволяет привязать определённую секцию Device к выводу по вашему выбору:

/etc/X11/xorg.conf.d/20-radeon.conf
Section "Device"
  Identifier "Device0"
  Driver "radeon"
  Option "ZaphodHeads" "VGA-0"
  VendorName "ATI"
  BusID "PCI:1:0:0"
  Screen 0
EndSection

Это может оказаться полезным при использовании видеокарт, имеющих более двух выходов. Например, один выход HDMI, один DVI, один VGA, будут выбираться и использоваться только выходы HDMI+DVI для двухмониторной установки, если вы явно не укажете "ZaphodHeads" "VGA-0".

Отключение вертикальной синхронизации

С драйвером radeon вертикальная синхронизация, вероятно, включена по умолчанию. Для отключения запускайте программу с переменной окружения vblank_mode=0. Другой вариант — создать или отредактировать файл ~/.drirc:

~/.drirc
<driconf>
    <device screen="0" driver="dri2">
        <application name="Default">
            <option name="vblank_mode" value="0" />
        </application>
    </device>
    ...
</driconf>
Примечание: Значение driver должно быть именно dri2 независимо от видеокарты, драйвера или параметров.

Если это не срабатывает, попробуйте отключить вертикальную синхронизацию через настройки Xorg как описано в разделе #Параметры драйвера.

Решение проблем

Проблемы с производительностью или артефакты при использовании EXA

Примечание: Это относится только к видеокартам старше R600 (Radeon X1000 series и более старые). На новых видеокартах вместо EXA стоит использовать Glamor.

Если есть проблемы с производительностью 2D, например медленная прокрутка в терминале или веб-браузере, добавление Option "MigrationHeuristic" "greedy" в настройках Xorg может решить проблему.

Кроме того, отключение EXAPixmaps может решить проблемы с артефактами, хотя в целом это не рекомендуется и может вызвать другие проблемы.

/etc/X11/xorg.conf.d/20-radeon.conf
Section "OutputClass"
    Identifier "Radeon"
    MatchDriver "radeon"
    Option "AccelMethod" "exa"
    Option "MigrationHeuristic" "greedy"
    #Option "EXAPixmaps" "off"
EndSection

Добавление новых видеорежимов

Смотрите раздел xrandr (Русский)#Добавление новых видеорежимов.

Чёрная граница вокруг изображения

Примечание: Сперва убедитесь, что сам телевизор настроен правильно.

При подключении телевизора через HDMI он может отображать размытую картинку с границей в пару сантиметров вокруг неё. Это защита от вылетов развёртки (overscan), отключить её можно командой:

xrandr --output HDMI-0 --set underscan off

Черный экран и нет консоли, но X работает в KMS

При использовании двух или более видеокарт ATI на одном компьютере консоль может пропасть. Например, такая проблема наблюдается на ноутбуке Fujitsu Siemens Amilo PA 3553. Это происходит из-за того, что драйвер консоли fbcon работает не на том фреймбуфере. Для решения добавьте параметр ядра:

fbcon=map:1

Таким образом fbcon будет работать на /dev/fb1 вместо /dev/fb0. Если это не помогло, попробуйте наоборот указать

fbcon=map:0

вместо этого.

Чёрные окна в приложениях 3D на ATI X1600 (RV530 series)

Есть три возможных решения:

  • попробуйте добавить параметр ядра pci=nomsi;
  • если это не помогает, попробуйте добавить noapic вместо pci=nomsi;
  • если это тоже не помогает, попробуйте переключить вертикальную синхронизацию, запустив приложение командой вида vblank_mode=0 glxgears или наоборот vblank_mode=1 glxgears. Если это поможет, сделайте изменение постоянным как описано в разделе #Отключение вертикальной синхронизации.

Повреждение курсора после пробуждения из сна

Если курсор оказывается повреждённым (например, его изображение повторяется по вертикали), добавьте Option "SWCursor" "True" в настройках Xorg.

DisplayPort остаётся чёрным в многомониторном режиме

Попробуйте добавить параметр ядра radeon.audio=0.

Низкая производительность и/или нестабильность на R9-390

Проблемы с прошивкой карт серии R9-390 включают низкую производительность и сбои (часто вызванные играми или использованием Google Maps), возможно, связанные с DPM. К сообщению об ошибке был оставлен комментарий с инструкциями по исправлению.

Поддержка QHD / UHD / 4K на старых видеокартах Radeon

У старых видеокарт тактовая частота пикселей ограничена 165 МГц для HDMI. Как следствие, они поддерживают QHD или 4K только через dual-link DVI, но не через HDMI.

В качестве обходного пути можно снизить частоту обновления, например, до 30 Гц.

Другой вариант — пропатчить ядро, убрав ограничение тактовой частоты пикселей, но это может повредить карту!

Баг-репорт с патчем для ядра 4.8: https://bugzilla.kernel.org/show_bug.cgi?id=172421

Патч вводит новый параметр ядра radeon.hdmimhz, который позволяет изменить тактовую частоту пикселей.

Обязательно используйте высокоскоростной HDMI-кабель.

Периодическое горизонтальное мерцание при выводе 4K на DP на 390X

Если вы используете 390X (или, возможно, аналогичные модели) и вывод 4K через DP, вы можете наблюдать периодические горизонтальные артефакты / мерцание (то есть примерно каждые полчаса появляется горизонтальная полоса пикселей высотой ~100 пикселей по всей ширине экрана и дрожит вверх и вниз в течение нескольких секунд). Возможно, это ошибка драйвера radeon. Переход на AMDGPU, похоже, исправляет ситуацию.

Смотрите также

Тест производительности, показывающий, что открытый драйвер находится по производительности на одном уровне с проприетарным драйвером для многих видеокарт.