Как аппаратное ускорение графического процессора работает в Linux
Процессор современных ПК обычно достаточно мощный, чтобы бесперебойно работать со всеми типами контента. Однако некоторые процессы оказывают более высокую нагрузку на процессор — например, при просмотре видео.
Тем не менее, воспроизведение обычно происходит плавно, поскольку провайдеры потоковой передачи автоматически снижают качество видео, если подключение к Интернету недостаточно быстрое или производительность ПК недостаточна.
Тем не менее, имеет смысл снизить нагрузку на процессор, поскольку это снижает энергопотребление и на ноутбуках дольше держится батарея.
Графический блок (GPU) ПК расположен в основном процессоре, в отдельном графическом чипе или на выделенной видеокарте. Графическому процессору часто нечего делать, кроме отображения рабочего стола. Но графический чип часто оказывается более мощным, чем процессор, когда дело доходит до воспроизведения (декодирования) видео.
Графический процессор также может помочь при конвертации видео в другие форматы (кодировании). Общее энергопотребление снижается, видео можно воспроизводить в более высоком качестве или быстрее конвертировать.
Использование графического процессора в Linux
Возможность использования аппаратного ускорения графическим чипом и каким образом в Linux зависит от нескольких факторов:
- Модель графического чипа и его возможности
- Водитель использовал
- Протокол дисплея (X11 или Wayland)
- Соответствующее программное обеспечение (браузер, видеоплеер, видеоредактор)
Также имеется несколько интерфейсов для разных областей применения, которые можно использовать для аппаратного ускорения:
- Вулкан в основном используется в играх, а также может использоваться при воспроизведении видео.
- Открыть GL является предшественником Vulkan и предлагает поддержку векторной 2D/3D графики на рабочем столе и в играх.
- Вдпау предлагает аппаратное ускорение воспроизведения видео, поставляется от Nvidia, а также поддерживается графическими драйверами AMD.
- КУДА — это программный интерфейс (API) от Nvidia, с помощью которого части программы могут обрабатываться графическим процессором (GPU). API используется, например, в приложениях искусственного интеллекта, а также при воспроизведении (NVDEC) и конвертировании (NVENC) видео.
- ВА-API — это интерфейс для декодирования и кодирования видео с помощью графических процессоров AMD и Intel.
- Быстрая синхронизация видео — это название аппаратного ускорения графических процессоров Intel, доступ к которому осуществляется через VA-API.
Медиаплееры обычно автоматически распознают доступные интерфейсы и по умолчанию используют аппаратное ускорение. С другой стороны, веб-браузеры обычно не предлагают эту функцию с обычными графическими чипами.
Современные графические чипы обеспечивают аппаратное ускорение воспроизведения с помощью кодеков H264 (AVCHD), H265 (HEVC) и VP9. Это означает, что вы хорошо подготовлены, поскольку YouTube, например, обычно использует H264 или VP9.
Вы можете узнать, на что способен чип от Nvidia, Intel и AMD.
В обозримом будущем YouTube все чаще будет переходить на бесплатный кодек AV1, улучшенный преемник VP9. Netflix также будет использовать AV1 в будущем.
Однако только новые графические чипы, такие как Intel Tiger Lake (11-го поколения) или Nvidia GeForce от RTX 2050, предлагают аппаратное ускорение (декодер) для AV1. Если вы хотите использовать для преобразования кодировщик AV1, вам понадобится видеокарта GeForce RTX 4050, AMD Radeon RX 7000 или Intel Arc.
Даже если графический чип поддерживает формат, драйверы и интерфейсы также должны быть совместимы. VLC, например, может использовать Vdpau для аппаратного ускорения, если установлен драйвер Nvidia.
Однако такие браузеры, как Mozilla Firefox или Google Chrome, используют VA-API, который драйвер Nvidia не поддерживает. Подходящий драйвер с VA-API («nvidia-vaapi-driver») официально доступен в репозитории дистрибутива только начиная с Ubuntu 23.04. Поддержка VA-API включена в стандартную комплектацию графики Intel; Драйверы AMD поддерживают VA-API и Vdpau.
Драйвер Nouveau с открытым исходным кодом для чипов Nvidia также поддерживает VA-API и VDPAU, но только для старых чипсетов, таких как GeForce 700 или 600.
Проверьте поддержку чипов Intel
Графические устройства Intel обычно находятся в процессоре ПК. Quick Sync Video включен примерно в 2011 году, начиная с процессоров Sandy Bridge (Intel HD Graphics 2000 и 3000). Дистрибутивы Linux в стандартной комплектации содержат необходимые драйверы.
Узнать, что может предложить чипсет, можно в терминале с помощью тщеславие инструмент, который можно установить через одноименный пакет. Он отображает номера версий VA-API и драйвера Intel.
Вы также можете просмотреть поддерживаемые профили кодеков, такие как «VAProfileH264Main» и «VAProfileVP8Version0_3». Дополнение «VAEntrypointEncSliceLP» указывает на то, что для этого кодека также предлагается кодирование, т.е. ускоренное преобразование в этот формат.
Вы можете проверить, действительно ли программа использует VA-API, с помощью другого инструмента, который вы можете установить с помощью
sudo apt install intel-gpu-tools
в терминале. Затем начните
sudo intel_gpu_top
и в другом терминале вызовем медиаплеер VLC в виде
vlc
Если видео закодировано таким кодеком, как VP9 или H264, VLC предоставляет информацию об использовании VA-API и связанного с ним драйвера, intel_gpu_top показывает использование графического процессора.
Примечание: Если в ПК установлена выделенная видеокарта Nvidia, функции графического блока Intel использовать нельзя. Для ноутбуков с гибридной графикой вы можете переключиться на чип Intel с помощью инструмента настроек сервера Nvidia X в разделе «Профили PRIME». Если опция недоступна, используйте в терминале следующее
sudo prime-select intel
Затем вам необходимо выйти из системы и войти снова. Замените «intel» на «nvidia» или «on-demand» (при необходимости), чтобы вернуться к более мощному чипу Nvidia.
Воспроизведение видео в Firefox с помощью VA-API
Firefox предлагает поддержку VA-API в X11 (Linux Mint) и Wayland (Ubuntu) по умолчанию.
Вызовите внутренний адрес «about:support», чтобы проверить функцию. Под разделом «Графика» после «Композиция» вы увидите «WebRenderer». Если здесь отображается «WebRenderer (программное обеспечение)», аппаратное ускорение не активно. В разделе «Медиа» вы можете узнать, для каких кодеков предлагается аппаратное декодирование.
Здесь вы можете вызвать список примеров видеороликов YouTube в высоком разрешении.
Показать «Статистика для заинтересованных лиц» через контекстное меню видео. Если строка после «Кодек» начинается с «av01», аппаратное ускорение доступно только в том случае, если графический чип уже поддерживает этот формат.
Попробуйте разные разрешения, нажимая на символ шестеренки под надписью «Качество», пока под надписью «Кодек» не появится надпись «vp09».
Вы также можете установить расширение «Ваши кодеки» в Firefox и использовать его для блокировки форматов VP8, VP9 или AV1. Если все заблокированы, YouTube будет доставлять видео с кодеком AVC1 (H.264), но обычно только в более низком разрешении — до 1080p.
В настройках YouTube, доступ к которым можно получить через гамбургер-меню (три горизонтальные линии) в левом верхнем углу, на поведение можно повлиять в разделе «Воспроизведение и производительность». Если графический чип не поддерживает AV1, активируйте опцию «Предпочитать AV1 для SD» в разделе «Настройки AV1».
В этом случае YouTube использует AV1 только при низких разрешениях, что снижает нагрузку на процессор. В противном случае он переключится на VP9 или другой формат. В терминале вы можете использовать
sudo intel_gpu_top
чтобы увидеть, насколько поддержка со стороны графического процессора снижает нагрузку на процессор.
Графические чипы AMD: Linux автоматически устанавливает необходимые драйверы, и функции можно проверить с помощью Vanfo. Если инструмент ничего не отображает, вероятно, модули ядра не поддерживают данный набор микросхем.
Для более новых видеокарт AMD следует использовать ядро версии 6.2 или выше. Ubuntu 22.04 автоматически устанавливает эту версию через обновления. Пользователи Linux Mint 21 переходят в «Управление системой > Управление обновлениями» и в меню «Вид > Ядро Linux». Выберите более свежую версию ядра и нажмите «Установить».
Если вы хотите проверить загрузку графического процессора, установите инструмент Radeon-Profile с помощью этих трех строк:
sudo add-apt-repository ppa:radeon-profile/stable
sudo apt update
sudo apt install radeon-profile
Значение «использования графического процессора» увеличивается, как только вы воспроизводите видео.
Гугл Хром и Хромиум
В Интернете циркулирует множество советов о том, как активировать аппаратное ускорение в браузерах на базе Chromium. В зависимости от версии программы и среды рабочего стола, вы можете добиться успеха.
В наших тестах нам не удалось убедить Google Chrome или Chromium сотрудничать. Одной из причин этого является устаревшая версия VA-API в Ubuntu и Linux Mint. Браузеры в настоящее время не работают с графическими чипами AMD, независимо от того, какая версия установлена. Поэтому описание применимо только к графике Intel.
Если вас не пугают усилия, вы можете обновить библиотеки и драйверы. Для этого используйте скрипт «build_intel_media.sh» (только для чипов Intel). Он устанавливает пакеты программ, необходимые для разработки, загружает исходный код в папку «$HOME/src» и компилирует файлы. Затем перезапустите Linux.
В терминале Vaninfo теперь отображает версию VA-API 1.21 (или выше) (ранее: 1.14). В Linux Mint настройте Chromium как системный пакет через управление приложениями. Google Chrome пока не работает с новым VA-API, как и пакет Snap из Ubuntu.
Запустите браузер и воспроизведите тестовое видео. Откройте внутренний адрес «chrome://gpu» в другой вкладке. За «Видео декодированием» написано «Аппаратное ускорение». Однако это ничего не значит, поскольку Chromium также предоставляет эту информацию, если аппаратное ускорение возможно только теоретически. Подробную информацию можно найти по адресу «chrome://media-internals».
Нажмите на ссылку с добавлением «(kPlay)» во время воспроизведения видео. За «kVideoDecoderName» следует «VaapiVideo-Decoder», если ускорение графического процессора активно.
Модернизация VA-API для Nvidia
Вы уже можете использовать драйвер VA-API в Ubuntu 22.04 или Linux Mint 21. Однако вам необходимо создать драйвер самостоятельно из исходного кода.
Обязательным условием является активация фирменного драйвера Nvidia версии 470, 500 или выше. Драйвер VA-API в первую очередь предназначен для аппаратного ускорения в Firefox; функция не гарантируется для другого программного обеспечения.
Кроме того, драйвер пока не работает оптимально под Wayland и уж точно не с Firefox, установленным как Snap или Flatpak. Linux Mint соответствует этим требованиям, пользователи Ubuntu следуют этим инструкциям.
Чтобы установить драйвер Nvidia (если он еще не установлен), пользователи Ubuntu ищут «Драйверы» через «Действия» и нажимают «Дополнительные драйверы».
В Linux Mint путь ведет через «Управление драйверами». Выберите драйвер с наибольшим номером версии и дополнением «Проприетарный, протестированный» («рекомендуется Linux Mint»). Нажмите «Применить изменения» и перезагрузите Linux после завершения установки.
Чтобы иметь возможность создать драйвер VA-API, установите в терминал несколько пакетов:
sudo apt install build-essential git meson gstreamer1.0-plugins-bad libffmpeg-nvenc-dev libva-dev libegl-dev cmake pkg-config libdrm-dev libgstreamer-plugins-bad1.0-dev
Затем создайте рабочий каталог и загрузите исходный код (четыре строки):
mkdir ~/src && cd ~/src
wget
tar xvf v0.0.11.tar.gz
cd nvidia-vaapi-driver-0.0.11
При необходимости измените номера версий. Затем скомпилируйте и установите с помощью
meson setup build
sudo meson install -C build
для компиляции и установки драйвера.
Активация драйвера Nvidia VA API для Firefox
Чтобы Linux мог загрузить драйвер, необходимо установить некоторые переменные среды. Откройте файл «/etc/environment» от имени администратора в текстовом редакторе и добавьте три строки
export LIBVA_DRIVER_NAME=nvidia
export MOZ_DISABLE_RDD_SANDBOX=1
export NVD_BACKEND=direct
добавляется. Последняя строка на данный момент необходима для драйверов Nvidia начиная с версии 525. Также необходимо сообщить ядро Linux. Откройте текстовый файл «/etc/default/grub» с правами root и добавьте эту опцию в строку «GRUB_CMDLINE_LINUX_DEFAULT».
nvidia-drm.modeset=1
Затем выполните в терминале
sudo update-grub
и перезапустите Linux, чтобы изменения вступили в силу. Проверить правильность работы можно с помощью Vanfo. Инструмент выводит «vainfo: Версия драйвера: драйвер VA-API NVDEC (прямой серверный интерфейс)».
Вам необходимо изменить некоторые настройки, чтобы Firefox учитывал новый драйвер. На всякий случай сначала используйте новый профиль пользователя, чтобы проверить настройки.
В терминале запустите
firefox -P
и создайте и запустите новый профиль. Вызовите адрес «about:config» и установите следующие три параметра.
media.ffmpeg.vaapi.enabled
media.rdd-ffmpeg.enabled
widget.dmabuf.force-enabled
«истина» в каждом случае. Затем перезапустите Firefox.
Чтобы проверить загрузку графического процессора, запустите настройки сервера Nvidia X и нажмите «GPU 0» ((модель Nvidia)). Значения «Использование графического процессора» и «Использование видеодвижка» увеличиваются при использовании аппаратного ускорения.
Эта статья первоначально появилась в нашем родственном издании. ПК-ВЕЛЬТ и был переведен и локализован с немецкого языка.