LINUX.ORG.RU

nvidia-vaapi-driver — слой совместимости с VA-API для проприетарных драйверов NVIDIA

 , , ,


3

2

Опубликована реализация VA-API, использующая в качестве бэкенда NVDEC — проприетарный интерфейс аппаратного декодера для видеокарт NVIDIA. Автором заявлена поддержка трансляции для кодеков: H.264, HEVC (H.265), VP8, VP9, MPEG-2 и VC-1. На данный момент отсутствует поддержка AV1, MPEG-4 и JPEG. Также отсутствует поддержка видео с 10-битным цветом.

Основная цель проекта — добиться работы аппаратного декодирования видео в браузере Mozilla Firefox, поддерживающего VA-API, но не проприетарные API от NVIDIA. Также была протестирована работа с видеоплеером mpv.

Для Firefox потребуется обновиться до Firefox 96 и изменить некоторые настройки в about:config (см. README).

>>> Репозиторий проекта на GitHub

★★★★★

Проверено: sudopacman ()

Ребята, если разработчики браузеров вам год за годом сношают мозг. То VA-API нет. То он есть, но не работает. То работает, но в следующем релизе сломали. Или нужен овердохрена новый драйвер видеокарты с последним EGL

Так почему бы нам не запускать виндовые браузеры под Wine, где VA-API уже давно есть, и мозги не парит?

anonymous ()

Эй, а как же VDPAU? 11 лет назад его с такой помпой анонсировали - мол, смотрите, NVIDIA делает библиотеку с открытым исходным кодом! Чтобы и другие вендоры могли воспользоваться, тогда ц нас будет единый стандарт, и в дистры сразу могли включить!

А теперь делают nvdec-бэкенд для VA-API, но постойте, но ведь давно уже есть vdpau-бэкенд для VA-API, причëм ещë с того же 2008 года? Почему бы не воспользоваться им? Или не работает?

anonymous ()
Ответ на: комментарий от Korchevatel

Так на AMD эта же хрень и есть. То оно работает в хромиуме через libva-glx в fglrx, то не работает, потому что теперь надо libva-dri, а значит, сносить проприетарный и ставь опенсорсный драйвер. То опять потом сломали, и мейнтейнеры дебиана никак не могут обновить пакет, пока сборка с VA-API не будет починена?

anonymous ()
Ответ на: комментарий от anonymous

Да даже на Интеле и то бывает ломается что-то. В Арчевикии вон, написано, что с intel-media-driver всё ломается, а старый libva-intel-driver новые встройки уже не поддерживает.

Alden ★★★ ()
Ответ на: комментарий от anonymous

ведь давно уже есть vdpau-бэкенд для VA-API, причëм ещë с того же 2008 года? Почему бы не воспользоваться им? Или не работает?

Способ, которым VA-API используется в Firefox, требует на выходе DMA-BUF, поэтому тот переходник не получится использовать. В VDPAU не предусмотрена поддержка DMA-BUF.

i-rinat ★★★★★ ()
Ответ на: комментарий от Korchevatel

Увы, и на amdgpu вам не так гладко. Не, на mpv --hwdec=vaapi filename.mp4 всë действительно работает, но раз уж на то пошло, то и на NVIDIA через --hwdec=vdpau всë точно так же работает. Я говорю про браузеры.

Недавно была новость, что в Firefox завезли аппаратное декодирование, только надо новую Mesa 21.x, которой в дистрибутива нет. А на форуме в техразделах была тема, что в chromium 95 опять всë сломали, и что надо сидеть на старой, чтобы браузер ругался что он хочет критических обновлений.

Я именно это имел в виду. А тем временем, DXVA2 в Wine Staging работает и не парит мозгу вот уже года с 2018. На AMD и Intel

anonymous ()
Ответ на: комментарий от anonymous

DXVA2 в Wine Staging

Включается в winecfg. Причëм не требует этих EGL долбанных и DMA-BUF. Всë что требуется, это вставить пару костылей, чтобы запустить сам браузер

anonymous ()
Ответ на: комментарий от anonymous
  • Intel GPU, GNU/Linux - VA-API работает только в плеерах.
  • NVidia GPU, GNU/Linux - hardware decoding работает только в плеерах.
  • Android - hardware decoding плохо работает для некоторых видео.

А эти сволочи вместо фиксинга реальной проблемы занимаются перестановками кроватей в UI. Садись, Mozilla, два.

Skullnet ★★★ ()
Последнее исправление: Skullnet (всего исправлений: 4)
Ответ на: комментарий от Korchevatel

Без хороших шифрующих средств, навроде того же I2P, он и так узнает, где ты шастал и какое порно в 4К смотрел.

Смотреть 4к порно со скорость 2кб/c это и есть настоящая порнография.

Skullnet ★★★ ()

Чет не работает. Все сделал как написано на загруженном бинарном firefox 96 и firefox-nightly. Наверное voidlinux не подходит?

nv-codec-headers обновил, libva-devel установил перед компиляцией.

Если переменная NVD_LOG= не срабатывает, значит всего скорее модуль не грузится так?

bhfq ★★★★★ ()
Последнее исправление: bhfq (всего исправлений: 2)
Ответ на: комментарий от bhfq

Возможно, стоит установить переменную среды LIBVA_DRIVERS_PATH, указав путь к скомпилированному драйверу. Ну и переменную LIBVA_DRIVER_NAME тоже нужно установить, если она ещё не установлена.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

действительно, в void LIBVA_DRIVERS_PATH=/usr/lib/dri https://i.imgur.com/Q3uOWPM.png 4k60fps vp9 свершилось чудо под линуксом на nvidia!

правда загрузка процессора все равно по 30% на 4 ядра, без этого модуля (тупо процессором как раньше) 70-90%.

эмм.. декодирование этого видео кушает 500 мб vram.

https://github.com/elFarto/nvidia-vaapi-driver/issues/5 надеюсь они смогут добавить поддержку хромиумных браузеров для сравнения потребления vram, по тестам под вендой должно быть минимум в 2 раза меньше (сравнивал год назад).

bhfq ★★★★★ ()
Последнее исправление: bhfq (всего исправлений: 4)
LIBVA_DRIVER_NAME=nvidia LIBVA_DRIVERS_PATH=/usr/lib/dri vainfo
 
libva info: VA-API version 1.13.0
libva info: User environment variable requested driver 'nvidia'
libva info: Trying to open /usr/lib/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_1_0
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.13 (libva 2.13.0)
vainfo: Driver version: VA-API NVDEC driver
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      <unknown profile>               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileVP9Profile0            : VAEntrypointVLD

вывод рабочего модуля под vainfo

bhfq ★★★★★ ()
Ответ на: комментарий от ZenitharChampion

Ну они же не могут сказать, что из-за нехватки ингридиентов, и желании ещё больше разделить рынок? Майнкры - это таклй ковид у электронщиков, под него всё можно списать

R_He_Po6oT ()
Ответ на: комментарий от R_He_Po6oT

> Ну они же не могут сказать, что из-за нехватки ингридиентов

Могут сказать, что из-за дефицита чипов из-за майнеров они вынуждены перестать делать чипы UVD, и заниматься раскодированием видео через CUDA-ядра.

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от R_He_Po6oT

Правительства различных стран сейчас эту вашу криптовалюту блокируют либо облагают налогами, а за электричество платишь как коммерческое предприятие. В Европе очередной энергетический кризис, майнить там люто дорого, в Казахстане президент убивает своих людей, в Китае операции с ними уголовное дело. Все как обычно держится на США.

bhfq ★★★★★ ()
Ответ на: комментарий от anonymous

> Эй, а как же VDPAU? 11 лет назад его с такой помпой анонсировали - мол, смотрите, NVIDIA делает библиотеку с открытым исходным кодом! Чтобы и другие вендоры могли воспользоваться, тогда ц нас будет единый стандарт, и в дистры сразу могли включить!

В «похожих новостях» нашёл обсуждение 2009 года:

https://www.linux.org.ru/news/hardware/3537003?cid=3537523

Но какой интерфейс выбрала VIA для работы с декодером? Расширенную версию XvMC? Популярный ныне VDPAU? Отнюдь, VIA использует разработанную Intel технологию VA-API (Video Acceleration API, даешь велоси ... API много и разных!), ранее использовавшуюся лишь на чипсетах Poulsbo от самой Intel, в их закрытых версиях драйверов.

Подобный выбор несколько сомнителен, учитывая, что VDPAU уже неплохо реализована и продолжает активно продвигаться вперед, да и сама Intel уже не особо вспоминает о своей разработке, склоняясь в сторону VDPAU. тем не менее, новости определенно внушают надежду, а какое API окажется лучше покажет время.

Ruth ★★ (01.03.09 16:27:58)

ZenitharChampion ★★★★★ ()
Ответ на: комментарий от bhfq

Не, народ, вы не подумайте, я крайне против криптомайнинья (ни и против ковида, вдогонку), но мне не нравится, когда людям «вживляют» слова-триггеры и пользуются ими для достижения своих целей, совсем не совпадающих с декларируемыми.

R_He_Po6oT ()

у кого удалось заставить собираться на ubuntu lts / linux mint?

файл meson.build можно подправить чтобы он не ругался, а вот компиляция https://pastebin.com/raw/J6xeSTrH

наверное нужен свежее libva? если убрать эту проверку то vainfo тупо крашится. https://pastebin.com/raw/YrNC96iF

bhfq ★★★★★ ()
Последнее исправление: bhfq (всего исправлений: 4)
Ответ на: комментарий от bhfq

наверное нужен свежее libva?

Да, видимо так.

если убрать эту проверку

Вроде бы, эта проверка не должна приводить к падениям. Но код в текущем виде выглядит как «тяп-ляп, лишь бы завелось хоть как-нибудь». Наверное, не хватает чего-то, наличие чего автор не проверяет.

i-rinat ★★★★★ ()
Ответ на: комментарий от devl547

https://www.nvidia.com/ru-ru/geforce/graphics-cards/30-series/rtx-3050/# - тут пишут что энкодеры 7ого поколения, декодеры 5ого поколения.
https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new - тут пишут что поддерживает, я так понял кодера ав1 нигде нет.

Sapetuko ()
Ответ на: комментарий от Sapetuko

энкодеры 7ого поколения, декодеры 5ого поколения.

Ну как бы да, и чего? Это последние версии, которые nvidia предлагает. Жрёт всё, включая AV1 10bit.
Энкодера AV1 пока нет, но его нет даже в топовых проф. картах.

devl547 ★★★★★ ()

Основная цель проекта — добиться работы аппаратного декодирования видео в браузере Mozilla Firefox

декодирования видео

в браузере

Успехов автору в удовлетворении его в высшей степени странных желаний.

dexpl ★★★★★ ()