Видеоускорение на AMD включается без плясок с бубном: ставишь четыре пакета, проверяешь vainfo — и браузер, mpv и VLC начинают декодировать ролики на движке видеокарты, а не на процессоре. H.264 и HEVC доступны почти на любой карте с GCN, AV1 — начиная с Navi 3x и APU Rembrandt. Разбираемся с пакетами, проверкой, включением и сравнением с NVIDIA.
VA-API — общий интерфейс ускорения видео, через который программа просит GPU декодировать кадр, не вникая в особенности конкретного чипа. За интерфейсом на AMD стоит драйвер Mesa из пакета libva-mesa-driver (файл radeonsi_drv_video.so), который переводит запросы в команды движка VCN — на старых GCN он назывался UVD.
Поэтому VAAPI — основной и самый полный путь. Если он работает, процессор остаётся свободным, ноутбук меньше греется и дольше живёт от батареи, а на слабом APU 4K-ролик идёт без рывков.
VDPAU — более старый API, придуманный в NVIDIA. На AMD он тоже доступен, но не родным: пакет vdpau-va-driver ставит мост, переводящий VDPAU-вызовы в VA-API. Работает, но покрытие профилей беднее, поэтому mpv на AMD разумно запускать с --hwdec=vaapi, а не с --hwdec=vdpau.
sudo pacman -S libva libva-utils libva-mesa-driver vdpau-va-driver
Что внутри и зачем:
libva — базовая библиотека интерфейса, нужна всем без исключения;libva-mesa-driver — драйвер VA-API на Mesa, ядро ускорения на AMD;libva-utils — утилиты vainfo и vadec для проверки и замера;vdpau-va-driver — мост VDPAU → VA-API для старых программ и для VLC, если он цепляется за VDPAU.Прошивку amdgpu берём из linux-firmware — она почти всегда уже стоит, но проверить стоит:
pacman -Q linux-firmware
Если карта не определилась вообще, начни с проверки amdgpu — тогда без видео не запустится и VA-API, а о том, какой у тебя APU или дискретная карта, я писал здесь.
Для GStreamer доставь ещё один пакет с VA-API-драйверами и элементами декодирования:
sudo pacman -S gst-plugins-vaapi
Главный инструмент — vainfo. Он не открывает окно, а просто спрашивает у драйвера, что он умеет:
vainfo
В нормальном выводе есть три вещи, ради которых всё и затевается: версия драйвера, список профилей и точка входа VAEntrypointVLD. Именно VAEntrypointVLD означает полноценное декодирование бистрома — если она есть, доступны все профили, которые перечислил драйвер.
Ориентируйся на строки H264Main, HEVCMain, HEVCMain10 и, если карта умеет, AV1Profile0. Ничего из этого списка нет — значит, драйвер не подхватился. Покажи, какой именно .so загрузился:
LIBVA_DEBUG=driver vainfo
В логе ищи строку с radeonsi_drv_video.so. Если подгрузился не тот драйвер или он не нашёлся вовсе, задай имя принудительно:
LIBVA_DRIVER_NAME=radeonsi vainfo
Если команда работает только с этой переменной, добавь её в /etc/environment — иначе браузер будет стартовать без неё.
Самый предсказуемый вариант: hwdec в конфиге, чтобы не вспоминать флаги. В ~/.config/mpv/mpv.conf:
hwdec=vaapi
vo=gpu
gpu-api=vulkan
Для Vulkan-стека Mesa это лучшая связка — если с ней проблемы, посмотри гайд по amdgpu и Vulkan. Однократный запуск для проверки:
mpv --hwdec=vaapi --vo=gpu video.mkv
Убедиться, что декодирование действительно аппаратное, можно по логу:
mpv --msg-level=vd=debug video.mkv 2>&1 | grep -i hwdec
В выводе должно быть Using hardware decoding (vaapi). Если стоит no или software, VA-API не подхватился — возвращайся к vainfo.
Открой Инструменты → Параметры, переключи вид на «Все», найди Видео и поставь «Аппаратное декодирование» в значение Automatic (VA-API). То же самое из консоли:
vlc --avcodec-hw=vaapi video.mkv
Функцию включают флагом: открой chrome://flags/#enable-features=VaapiVideoDecoder и переключи в положение Enabled. Запускать с флагом можно и явно:
google-chrome --enable-features=VaapiVideoDecoder
Дальше обязательно зайди на chrome://gpu и посмотри строку Video Decode: должно стоять Hardware accelerated, рядом — VA-API. На двугранных ноутбуках там же полезно снять галку с zero-copy, если ролики идут с артефактами.
Открой about:config, найди media.ffmpeg.vaapi.enabled и поставь true. Перезапусти браузер, затем открой about:support и найди строку Compositing рядом с WebRender — аппаратное декодирование там же отмечено пунктом про VA-API. Если галочка снята, а видео всё равно идёт плавно, значит Firefox обошёлся программным декодером.
Проверь, что элементы декодирования на месте:
gst-inspect-1.0 vadecodebin
gst-inspect-1.0 vah264dec
Если элементы есть, сеть для ускоренного проигрывания собирается из decodebin ! vaapidecodebin (в старых версиях) или vadecodebin — актуальный синтаксис зависит от версии gst-plugins-vaapi.
Главное отличие — в том, что у NVIDIA есть собственный выделенный декодер NVDEC, доступный через проприетарный модуль ядра, и программы обращаются к нему напрямую:
ffmpeg -hwaccels
В списке у NVIDIA есть nvdec, cuda, vdpau, а у AMD — vaapi и vdpau. То есть на NVIDIA можно декодировать вообще любым ffmpeg, просто указав -hwaccel nvdec или -hwaccel cuda, без установки дополнительных VA-API-пакетов. На AMD тот же номер через vaapi требует, чтобы Mesa сумела опросить карту, а это упирается в firmware и версию драйвера.
VDPAU на NVIDIA родной, поэтому ускорение включается без мостов. На AMD путь один: мост vdpau-va-driver поверх VA-API. Именно поэтому на AMD опытный пользователь сразу смотрит в VA-API, а не в VDPAU, — профилей больше, а H.264/HEVC/AV1 лежат в одном интерфейсе. Разница в качестве картинки или в частоте кадров при этом невелика: на AMD узкое место обычно не декодер, а сам GPU, если он упирается в пропускную способность памяти или в видеовыход. Тонкости связки карта — монитор — HDMI я разбирал в материале про NVIDIA, PipeWire и звук.
Быстрая проверка со стороны ffmpeg:
ffmpeg -hwaccel vaapi -i video.mp4 -f null - 2>&1 | grep -i vaapi
vainfo не показывает ни одного профиляПоследовательно проверь три вещи. Первая — firmware: sudo pacman -S linux-firmware, затем journalctl -k | grep -i vcn и посмотри, грузится ли микрокод VCN. Вторая — поколение карты: на Northern Islands и Terascale аппаратного H.264 нет вообще, там остаётся только MPEG-2 и VC-1, и никакой пакет это не исправит. Третья — драйвер: LIBVA_DEBUG=driver vainfo покажет, подхватился ли radeonsi_drv_video.so, и если нет — почему.
Декодер работает, а картинка сыпется — виноват zero-copy-путь. Зайди на chrome://gpu, временно отключи аппаратное ускорение видео, посмотри, появилось ли изображение. Если помогло — оставь галочку снятой. В Firefox аналогично помогает gfx.webrender.software = true в about:config: если с софтверным рендером видео идёт, проблема точно в связке с compositor, а не в VA-API.
Сначала --msg-level=vd=debug — если в логе нет строки про vaapi, проверь, что в mpv.conf нет --hwdec=vdpau или auto-copy в другом конфиге. Второй шаг — временно запустить с чистым окружением:
mpv --no-config --hwdec=vaapi --msg-level=vd=debug video.mkv
Если здесь ускорение включилось, значит, перебивает какой-то параметр из твоих файлов конфигурации.
intel_gpu_top к AMD отношения не имеет — это утилита для Intel. radeontop покажет загрузку движка VCN на картах, где счётчики вообще есть, но на части моделей он их не отдаёт. Надёжнее всего ориентироваться на строку Using hardware decoding (vaapi) в логе mpv и на Video Decode: Hardware accelerated в браузере.
На одинаковом поколении разница меньше, чем кажется: обе платформы декодируют один и тот же бистрём одинаковыми инструкциями. Разница возникает там, где у Intel есть decode block, а у AMD нет, или наоборот — на APU, где экономия энергии важнее, чем абсолютная скорость.
Для mpv, ffmpeg и современных браузеров — нет. Он нужен программам, которые умеют только VDPAU: старым сборкам VLC, некоторым плеерам и играм, запущенным через Wine с прослойкой DXVK. Стоит пакет копейки, поэтому проще поставить сразу и не гадать.
VP9 на AMD аппаратно не декодируется вообще — ни VA-API, ни VDPAU. Единственный вариант — браузер с программным VP9 или AV1 в паре с аппаратным декодером, если источник в этом формате.
vainfo показывает профили, но игра всё равно тормозит?Тогда узкое место не в декодере. Имеет смысл вернуться к настройке драйвера и Vulkan, проверить, не включена ли принудительно программная отрисовка, и посмотреть, хватает ли видеопамяти.
Видеоускорение на AMD — это четыре пакета и одна проверка vainfo. Если профили видны, дальше остаётся только включить --hwdec=vaapi в mpv, «Аппаратное декодирование» в VLC и флаг VaapiVideoDecoder в Chromium, а затем убедиться по логу или chrome://gpu, что декодер действительно аппаратный. NVIDIA с её NVDEC включает ускорение проще, но на AMD полный набор кодеков лежит именно в VA-API.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии