Vulkan video shenanigans – FFmpeg and RADV integration experiments
themaister.net
themaister.net
My mpv already plays AV1 encoded videos via Vulkan on my Ryzen 2400G APU.
See: https://www.khronos.org/blog/an-introduction-to-vulkan-video
Your mpv probably uses Vulkan as a graphics backend (--vo=gpu --gpu-api=vulkan), but VA-API for video decoding (--hwdec=vaapi).
The Vulkan video decoding/encoding API has just been standardized a few weeks ago, but without the AV1 functions, which will be added in a revision of the standard, later this year.
Vulkan video is going to allow that video decoding to render straight to a Vulkan texture in texture memory bypassing the copy out and copy back in. It'll be far more performant than having to copy it twice across the PCIe bus taking up valuable system memory bandwidth to the CPU doing literally nothing.
This is amazing.
For integrated platforms like the browser, access to decoded video for 3D rendering has been working for a long time with WebGL (you can simply hook up a HTML video element to a WebGL texture, e.g.: https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/T...
...or in WebGPU: https://austin-eng.com/webgpu-samples/samples/videoUploading
I guess the point of the Vulkan video extension is that it connects the Vulkan API to proprietary closed-source video decoders running on the GPU though.