LINUX.ORG.RU

Firefox и VAAPI

 , ,


0

1

Есть ли способ заставить Firefox использовать VAAPI без пересборки и перехода на Nightly? В релизной версии я пытался заставить работать его включая всё подряд в about:config, но в about:support всё то же отключение по блеклисту. В mpv всё работает, как и в Firefox Nightly.

В качестве видеокарты встроенная AMD Vega.



Последнее исправление: user_x (всего исправлений: 1)
Ответ на: комментарий от Jameson

На нвидии эта штука у меня не работала даже в mpv, а на AMD она вообще неработоспособна по умолчанию, так как использует NVDEC. Проблем с драйвером нет, так как в mpv всё работает отлично, вопрос про собственно Firefox, так как проблема в нём, а не в драйвере.

user_x
() автор топика

В релизной версии я пытался заставить работать его включая всё подряд в about:config, но в about:support всё то же отключение по блеклисту

дак надо не тыкать все подряд, а посмотреть в чем проблема. Запусти огнелиса под gdb и поставь бряк на место, где он отправляет тебя в блэклист. Вероятно где-то тут, но в твоей версии может отличаться.

Отладочные символы можно добыть через debuginfod, в арче например они есть для огнелиса.

Дальше уже будет очевидно что делать.

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

вопрос про собственно Firefox, так как проблема в нём, а не в драйвере

УМВР

libva info: VA-API version 1.14.0
libva info: User environment variable requested driver 'nvidia'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_1_0
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.14 (libva 2.12.0)
vainfo: Driver version: VA-API NVDEC driver [direct backend]
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileVP8Version0_3          :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileAV1Profile0            :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileHEVCMain12             :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileHEVCMain444            :	VAEntrypointVLD

и вроде прописал в /etc/environment

NVD_BACKEND=direct
LIBVA_DRIVER_NAME=nvidia
MOZ_DISABLE_RDD_SANDBOX=1
Skullnet ★★★★★
()
Последнее исправление: Skullnet (всего исправлений: 2)
Ответ на: комментарий от user_x

На нвидии эта штука у меня не работала даже в mpv

Там вроде был тикет, что был какой-то баг в mpv. Сам VAAPI в mpv работает (проверено на интеловской встройке), но на нвидии не нужен потому что есть нативная поддеркжа NVDEC.

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

Потом проверю, но скорее всего дело именно в этом. Я вот не знаю, как от этого избавиться, не пересобирая firefox, желания компилировать тонну кода у меня нет без крайней необходимости.

user_x
() автор топика

Прямо сейчас проверил на ubuntu 24, у меня с Zen1 Vega8 по дефолту не работает, но чтоб включить VAAPI достаточно в about:config найти media.ffmpeg.vaapi.enabled и поставить в true.

Тогда в логах FF можно найти:

MOZ_LOG="PlatformDecoderModule:5,Dmabuf:5" firefox https://www.youtube.com/watch?v=LXb3EKWsInQ -P

[RDD 15001: MediaPDecoder #1]: D/Dmabuf VideoFramePool::VideoFramePool() pool size 18                                                                                                                                                          
[RDD 15001: MediaPDecoder #1]: D/Dmabuf VideoFrameSurface: creating surface UID 1                                                                                                                                                              
[RDD 15001: MediaPDecoder #1]: D/Dmabuf Using VA-API DMABufSurface UID 1 FFMPEG ID
[RDD 15001: MediaPDecoder #1]: D/Dmabuf VideoFrameSurface: VAAPI releasing dmabuf surface UID 1 FFMPEG ID 0x12 aForFrameRecycle 0 mLib 796f6f6d7268 mAVHWFrameContext 796f4fefbcc0 mHWAVBuffer 796f4fefba00

Правда разница по использованию CPU незначительная. При проигрывании на FHD с моим процессором Ryzen 3550H (Vega 8) с использованием VAAPI в среднем 12% CPU, без аппаратного ускорения 15-22.

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

Почитай логи FF может там сказано что-то полезное, типа конкретная ревизия Vega внесена в blacklist.
Ну и еще я должен отметить что у меня десктоп рисуется через Wayland, для Иксов нужно обязательно запускать через EGL.

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

Правда разница по использованию CPU незначительная. При проигрывании на FHD с моим процессором Ryzen 3550H (Vega 8) с использованием VAAPI в среднем 12% CPU, без аппаратного ускорения 15-22.

У фокса какое-то высокое потребление проца даже при аппаратном декодинге, однако без VAAPI при воспроизведении 4к60фпс видео может быть статтеринг даже на Ryzen 5600x не говоря о интеловской говновстройке. На ноутбуках без VAAPI жизни вообще нет, потому что потребление проца будет лагать систему.

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

разница по использованию CPU незначительная. При проигрывании на FHD

Тоже как-то озадачивался настройкой/включением аппаратного декодирования в браузере, и такое же мнение сложилось, что выгода будет только на 4k по сравнению с софтовым ускорением.


Так то, сейчас воспроизвожу через mpv, перетаскивая на него ссылки. Там и нагрузка на проц меньше, да и в отдельном окне удобней смотреть в фоне. Но с этими проблемами yt-dlp, дай думаю воспользуюсь GPU и буду как белый человек смотреть видосы через браузер…

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

Стоп, интересно. Если верить nvtop, то декодер работает, но при этом в about:support написано, что blocklisted. Видимо оно таки работает. Походу я его таки включил, когда ковырялся, тему можно закрывать.

user_x
() автор топика