I’m happy to see Nvidia making progress on Linux support for its GPUs, such as proper Wayland support, VRR and so on and so forth. Nevertheless, there is still a ( big ) nuance with Nvidia GPUs on Linux: VA-API.
As much as NVEC / NVDEC is cool and all, lots of apps support only VA-API ( Chromium, Electron based apps, etc… ). Are there any plans to fix the VA-API implementation for Nvidia graphics cards? If so, are there any ETAs? The only “solution” is to use nvidia-vaapi-driver, which is a community made solution, though it only supports NVDEC (and not NVENC ) and its mainly meant for Firefox.
And nvidia-vaapi-driver uses NVDEC which depends on CUDA, so the GPU is locked to P2 state
Any updates? nvidia-vaapi-driver doesn’t work for me with VLC, mpv, avidemux, etc. (literally any “hardware accelerated” video application I use)
The only way I am able to play my videos back in real-time is using mpv --hwaccel=nvdec [filename], but it’s really limiting :(
Edit: I have an Intel i7-3770K which can’t even play back low-resolution videos created by my new camera without dropping all the frames, mpv+NVDEC and ffmpeg with hwdec on my 12 GB RTX 3060 is my only option for working with these videos
now that mesa dropped support for VDPAU on main, it’s basically guaranteed that no new software will support it, and Nvidia itself seems to not be too interested in maintaining it as it still lacks support for wayland, focusing instead on NVDEC and NVENC.
can you guys please reconsider oficial support for VA-API as there’s already projects like chromium where they decided to explicitly not support any other video api
…or at least fix bugs that block nvidia-vaapi-driver from working better (like this one).
Summary of issues affecting VDPAU and NVENC/NVDEC:
VDPAU:
- No video encode support.
- No Wayland and DMA-BUF support.
- Poor application support.
- Missing VP8 decode.
NVENC/NVDEC:
- Not supported by all applications.
- Proprietary and only supported on Nvidia GPU.
- Forces the GPU to P2 state as it depends on CUDA.
Note that there’s one more option nowadays that may (slowly) start getting more widespread support over time and isn’t nvidia-specific, aka vulkan decode.
With mpv it’s mpv –hwdec=vulkan (needs at least >=ffmpeg-7 and a recent mpv – Edit: not sure if vp9 is usable yet, afaik would at least need ffmpeg-8, nvidia-580.x, and a yet unreleased version of mpv), may still want –hwdec=vulkan,nvdec to allow falling back for things not well supported yet though (incl. some pixel formats).
Not aware of browsers and such supporting this yet, but this is all still rather new/early.
The main issue with Vulkan video is there are only 4 supported codecs: AV1, H264, HEVC and VP9 (decode only). JPEG, MPEG2, MPEG4, VC1 are supported by all other video APIs.
Bumping up this topic.
The thing is, VA-API is a part of mesa/open-source drivers, so you know what does that mean…
I don’t really know how you imagine VA-API being in proprietary implementations set, but maybe it will somehow work with nvdec as a sort of backend, idk.
VAAPI was firstly developed for Intel GPUs at GitHub - intel/intel-vaapi-driver: VA-API user mode driver for Intel GEN Graphics family which is outside mesa and at GitHub - intel/media-driver: Intel Graphics Media Driver to support hardware decode, encode and video processing. which is still outside mesa and there is also a non free driver with additional features, so there is no reason for Nvidia to ignore VAAPI.
discord is testing hw accelerated screen sharing with va-api only, nvidia will not be supported as nvidia-vaapi-driver does not support encoding
Any updates on this ?
They’re adding Vulkan Video support to Chromium. Based on that, I am guessing they’re not interested in implementing VA-API at this point.
Further cementing this, Mesa is adding NVDEC and possibly in the future NVENC chip module support for Vulkan Video for Nouveau and NVK, instead of implementing VA-API. Of course, it’s moving at a glacial pace, as the PR was first proposed early in 2024, with comments suggesting further development would progress after the holiday season of 2024, and here we are swiftly moving to the end of the holiday season of 2025. (Well, at least they have the excuse that they’re not being helped with it by paid Nvidia employees, I think.)