Prototype VA-API driver brings Vulkan Video to NVIDIA GPUs
imperishableSecret has developed a prototype VA-API driver for NVIDIA GPUs, integrating Vulkan Video API for decoding H.264, HEVC, VP9, and AV1 codecs. The project aims to enable browser decode by translating VA decode requests into Vulkan Video and exporting dma-bufs, supporting NV12 and P010 export for various profiles.
Key Takeaways
- The repo is a clean VA-API driver prototype for NVIDIA GPUs using Vulkan Video, not a fork of the NVDEC-backed driver design.
- Current runtime codec support includes h264, hevc, vp9, and av1, with advertised VA decode profiles for H.264, HEVC Main/Main10, VP9 Profile0/Profile2, and AV1 Profile0.
- Export caps are NV12 and P010, with single-FD, two-layer dma-buf export described for both formats.
- AV1 Profile0 supports both the 8-bit NV12 path and the 10-bit P010 path; VP9 Profile2 uses the P010 path.
- Encode entrypoints are not advertised in main, though the tree includes structural hooks for a later encode path.
Why It Matters
This is a concrete software path for browser decode on NVIDIA GPUs: libva requests are translated into Vulkan Video, then exported as browser-importable dma-bufs. That places Vulkan Video inside the VA-API boundary instead of relying on an NVDEC-backed design, while keeping the public interface at libva’s C ABI. The current scope is decode-only, with H.264, HEVC, VP9, and AV1 support exposed and encode intentionally hidden. Watch for the next capability changes in P012 export and 12-bit decode profiles, which are listed as deferred work.
Read full article at github.com