amdgpu - это видеодрайвер с открытым кодом, работающий в составе ядра Linux, и созданный AMD в рамках новой стратегии выпуска их проприетарного видеодрайвера. Этот модуль позволяет использовать как полностью свободный графический стек (Mesa, Gallium3D, DDX-драйвер xf86-video-amdgpu, VDPAU, VA-API и так далее) так и использовать новый гибридный драйвер AMDGPU-PRO, пришедший на смену Catalyst. В полной поддержке пока находятся только новые модели видеокарт AMD архитектуры GCN 1.2 (Volcanic Islands: R9 285, R9 380/380X Fury/Nano), поддержка карт архитектур GCN 1.1 ( Sea Islands: HD 7790, HD 8770, Rx 260/260X, Rx 290/290X, R9 295X2, Rx 360, Rx 390/390X, Rx 455) и 1.0 ( Southern Islands: HD 7700+/HD 8000/Rx 200/Rx 300/Rx 400) пока находится в стадии экспериментальной. В этой заметке я расскажу как использовать оба этих драйвера.
Сам по себе драйвер amdgpu является базой для работы графического стека на видеокартах AMD. Он обеспечивает взаимодействие с "ядерными" подсистемами DRM (Direct Rendering Manager) и KMS (Kernel Modesetting), поверх него работает DDX-драйвер xf86-video-amdgpu, который обеспечивает 2D ускорение через GLAMOR посредством Xorg, и библиотеки Mesa (libgl), обеспечивающие 3D-ускорение графики и работу OpenGL. Отдельно работают библиотеки VA-API и VDPAU, обеспечивающие аппаратное ускорение и декодирование видео. Вся эта связка может использоваться вместо драйвера radeonsi + xf86-video-ati. Также для этого драйвера крайне рекомендуется свежее ядро и Mesa, так как идёт очень активное его развитие и с каждым релизом добавляются определённые улучшения.
AMDGPU-PRO - это новый драйвер для видеокарт AMD Radeon, архитектур GCN 1.0 (7700 и выше) и новее, который пришёл на смену Catalyst. Это так называемый гибридный драйвер. Его основой служит драйвер amdgpu поверх которого работает проприетарная реализация OpenGL, Vulkan и OpenCL от AMD. В настоящее время этот драйвер активно развивается, пока не все фичи в нём реализованы полностью. Однако уже сейчас его можно использовать, если вам нужен OpenCL (к примеру для рендеринга объектов в Blender) или Vulkan на картах AMD (свободный Vulkan-драйвер RADV пока далёк от финального состояния). Вот список официально поддерживаемых видеокарт этим драйвером:
Для GCN 1.1 и 1.0 поддержка экспериментальная, и не включена по умолчанию. Потому необходимо собирать ядро самому, и включить в нём поддержку своей карты. После этого можно установить свободный драйвер xserver-xorg-video-amdgpu, предварительно отключив загрузку драйвера radeon. Для установки драйвера AMDGPU-PRO пересборка ядра не требуется. Как и использование свежей версии ядра. В AMDGPU-PRO модуль ядра собирается при помощи DKMS, и автоматически пересобирается после каждого обновления ядра.
В качествепациента дистрибутива для примера я буду использовать Ubuntu 16.04. Подойдёт также для всех её производных. Одна из моих видеокарт - Radeon HD 7770 - имеет архитектуру Southern Islands (GCN 1.0). Поддержка этой серии добавлена в ядро начиная с версии 4.9, которое вышло на днях. Идём на сайт ядра за исходниками. Распаковываем их куда будет удобно (я распакую в ~/Kernel_ADMGPU), открываем в этом каталоге терминал и вводим:
make xconfig (для графического интерфейса настройки)
или
make menuconfig (для псевдографического)
Идём по пути Device Drivers - Graphics support, включаем модуль AMDGPU и ставим галочки на "Enable amdgpu for SI parts" (для GCN 1.0) и/или "Enable amdgpu for CIK parts" (для GCN 1.1).
Сохраняем и приступаем к сборке ядра:
sudo apt install build-essential gcc kernel-package
fakeroot make-kpkg -j 5 --initrd --append-to-version=-amdgpu kernel_image kernel_headers #-j5
После сборки устанавливаем получившиеся deb-пакеты. Далее открываем конфиг загрузчика GRUB (/etc/default/grub) где прописываем в строку GRUB_CMDLINE_LINUX_DEFAULT= параметр amdgpu.exp_hw_support=1. В итоге строка должна выглядеть как GRUB_CMDLINE_LINUX_DEFAULT="amdgpu.exp_hw_support=1" Сохраняем и обновляем загрузчик:
sudo update-grub
Теперь необходимо отключить загрузку свободного драйвера radeon. Открываем файл /etc/modprobe.d/radeon.conf и пишем туда:
blacklist radeon
Сохраняем и выполняем:
sudo update-initramfs -u -k all
sudo update-grub
Теперь желательно подключить репозиторий со свежей MESA. Например Oibaf PPA. Оттуда установите:
sudo apt install xserver-xorg-video-amdgpu
и перезагрузитесь.
Скачайте архив с официального сайта, распакуйте, перейдите в каталог с deb-пакетами и выполните:
sudo sh ./amdgpu-pro-install
На этом всё. Вопросы и дополнения оставляйте в комментариях.
Сам по себе драйвер amdgpu является базой для работы графического стека на видеокартах AMD. Он обеспечивает взаимодействие с "ядерными" подсистемами DRM (Direct Rendering Manager) и KMS (Kernel Modesetting), поверх него работает DDX-драйвер xf86-video-amdgpu, который обеспечивает 2D ускорение через GLAMOR посредством Xorg, и библиотеки Mesa (libgl), обеспечивающие 3D-ускорение графики и работу OpenGL. Отдельно работают библиотеки VA-API и VDPAU, обеспечивающие аппаратное ускорение и декодирование видео. Вся эта связка может использоваться вместо драйвера radeonsi + xf86-video-ati. Также для этого драйвера крайне рекомендуется свежее ядро и Mesa, так как идёт очень активное его развитие и с каждым релизом добавляются определённые улучшения.
AMDGPU-PRO - это новый драйвер для видеокарт AMD Radeon, архитектур GCN 1.0 (7700 и выше) и новее, который пришёл на смену Catalyst. Это так называемый гибридный драйвер. Его основой служит драйвер amdgpu поверх которого работает проприетарная реализация OpenGL, Vulkan и OpenCL от AMD. В настоящее время этот драйвер активно развивается, пока не все фичи в нём реализованы полностью. Однако уже сейчас его можно использовать, если вам нужен OpenCL (к примеру для рендеринга объектов в Blender) или Vulkan на картах AMD (свободный Vulkan-драйвер RADV пока далёк от финального состояния). Вот список официально поддерживаемых видеокарт этим драйвером:
Использование AMDGPU
Для GCN 1.1 и 1.0 поддержка экспериментальная, и не включена по умолчанию. Потому необходимо собирать ядро самому, и включить в нём поддержку своей карты. После этого можно установить свободный драйвер xserver-xorg-video-amdgpu, предварительно отключив загрузку драйвера radeon. Для установки драйвера AMDGPU-PRO пересборка ядра не требуется. Как и использование свежей версии ядра. В AMDGPU-PRO модуль ядра собирается при помощи DKMS, и автоматически пересобирается после каждого обновления ядра.
В качестве
make xconfig (для графического интерфейса настройки)
или
make menuconfig (для псевдографического)
Идём по пути Device Drivers - Graphics support, включаем модуль AMDGPU и ставим галочки на "Enable amdgpu for SI parts" (для GCN 1.0) и/или "Enable amdgpu for CIK parts" (для GCN 1.1).
Сохраняем и приступаем к сборке ядра:
sudo apt install build-essential gcc kernel-package
fakeroot make-kpkg -j 5 --initrd --append-to-version=-amdgpu kernel_image kernel_headers #-j5
После сборки устанавливаем получившиеся deb-пакеты. Далее открываем конфиг загрузчика GRUB (/etc/default/grub) где прописываем в строку GRUB_CMDLINE_LINUX_DEFAULT= параметр amdgpu.exp_hw_support=1. В итоге строка должна выглядеть как GRUB_CMDLINE_LINUX_DEFAULT="amdgpu.exp_hw_support=1" Сохраняем и обновляем загрузчик:
sudo update-grub
Теперь необходимо отключить загрузку свободного драйвера radeon. Открываем файл /etc/modprobe.d/radeon.conf и пишем туда:
blacklist radeon
Сохраняем и выполняем:
sudo update-initramfs -u -k all
sudo update-grub
Теперь желательно подключить репозиторий со свежей MESA. Например Oibaf PPA. Оттуда установите:
sudo apt install xserver-xorg-video-amdgpu
и перезагрузитесь.
Установка AMDGPU-PRO
ВНИМАНИЕ: карты архитектуры GCN 1.0 пока поддерживаются не все и не полностью. Рекомендуется использовать этот драйвер только для самых новых видеокарт.Скачайте архив с официального сайта, распакуйте, перейдите в каталог с deb-пакетами и выполните:
sudo sh ./amdgpu-pro-install
На этом всё. Вопросы и дополнения оставляйте в комментариях.
> make menuconfig
ОтветитьУдалитьmake nconfig
хотя это уже на вкус и цвет
И да, тот драйвер, который в ядре (не PRO), пока не умеет звук через HDMI !
> Открываем файл /etc/modprobe.d/radeon.conf и пишем туда:
ОтветитьУдалитьТаковой файл отсутствует. Создать и записать?
Ядро обновлял с помощью ukuu без всяких там amdgpu_image в консоли - работать будет?
ЗЫ. кубунта 16.10, видеокарта 7850.
Да, файл создать. Ядро нужно собирать самому из kernel.org, а не использовать готовое
УдалитьТо есть на твоей HD7700 amdgpu-pro заработал?
ОтветитьУдалитьНа R7 360 будет работать?
ОтветитьУдалитьИ так... Надо было, чтоб заработала видеокарта AMD Radeon R5 M330 для BricsCAD 17, так как много артефактов с Intel HD 5500. На сайте производителя написано, что поддержка есть для Linux только видеокарт Nvidia и AMD. Собрал ядро, как написано высше, версии 4.10.16. После 2 часов компиляции не собрались kernel-headers. Плюнул, установил только один собраный deb-пакет. Пакет xserver-xorg-video-amdgpu ни в какую не захотел установиться, говоря, что надо зависимость xserver-xorg-core (>= 2:1.17.99.902). Сделал sudo apt update и sudo dist-upgrade, обновил пакеты. После настройки запуска, xrandr --listproviders наконец-то увидел карту AMD. Дальше сделал правку в /etc/X11/xinit/xinitrc.d/90-prime.sh по инструкции отсюда - https://vk.com/topic-114916478_33727041. Потом после перезагрузки запустил в терминале DRI_PRIME=1 bricscadv17, чтоб запустить через дискретную карту AMD. Немного лучше стало, но всеравно плохо. Подумал, может надо amdgpu-pro. Установил драйвер, как для R5 M340 с сайта AMD, так как R5 M300 не для Ubuntu 16.04 LTS. После перезагрузки система не заработала, сказав, что некоректно идентифицирован X.org. Пришлось откатиться. Много гемора, а толку ноль. Может кто подскажет, что сделал не так? Как завести amdgpu-pro для R5 M330? На одних сайтах написано, что эта видеокарта на архитектуре GCN 2.0, на других - GCN 1.0.
ОтветитьУдалить