Vulkan Video Ecosystem Status #
This page intends to provide up-to-date links and information for the latest driver and application support for Khronos Vulkan Video extensions. It gathers efforts from different persons, organizations and companies.
Last update: 2025-08-07
Vulkan Drivers #
H.264 | H.265 | AV1 | VP9 | |
---|---|---|---|---|
Encode |
|
|
|
|
Decode |
|
|
|
|
Multimedia Frameworks #
Decoders | Encoders | ||||||
---|---|---|---|---|---|---|---|
H.264 | H.265 | AV1 | VP9 | H.264 | H.265 | AV1 | |
GStreamer | 1.24 | 1.24 | 🚧 MR | 🚧 MR | 1.28 |
WIP | WIP |
FFmpeg | 6.1 | 6.1 | 6.1 | 🚧 PR | 7.1 | 7.1 | WIP |
SDK and specification #
- Latest Vulkan SDK
- Vulkan Specification SDK 1.3.239 is the first to support the decode extension for H.264 and H.265.
- Vulkan Specification SDK 1.3.275 is the first to support the encode extension for H.264 and H.265.
- Vulkan Specification SDK 1.3.280 is the first to support the decode extension for AV1.
- Vulkan Specification release 1.3.302 is the first to support the encode extension for AV1.
- Vulkan Specification release 1.4.317 the first to support the decode extension for VP9.
Applications #
- 🚧 GStreamer Vulkan Open Merge requests
- 🚧 Mesa Video Open Merge requests
- 🚧 FFmpeg Vulkan Open Pull requests
- Vulkan Video support in mpv player
- Fluster is a testing framework written in Python for decoder conformance, and it includes the support to test GStreamer and FFmpeg decoding with Vulkan.
References #
- Khronos Announces Vulkan Video Encode Intra-refresh Extension July 16, 2025.
- Khronos Announces Vulkan Video Decode VP9 Extension June 9, 2025.
- Dave Airlie: radv: vulkan VP9 video decode June 9, 2025.
- Khronos Announces Vulkan Video Encode AV1 & Encode Quantization Map Extensions November 21, 2024.
- Khronos Releases AV1 Decode in Vulkan Video with SDK Support for H.264/H.265 Encode February 1, 2024
- Experience report of the decode extension December 20, 2023.
- Khronos Finalizes Vulkan Video Extensions for Accelerated H.264 and H.265 Encode December 19, 2023.
- Vulkan Video encoder in GStreamer December 10, 2023.
- A helpful introduction from a game engine perspective May 7, 2023.
- Concise overview of video compression basics May 9, 2021.
- Khronos: An introduction to Vulkan Video April 13, 2021.
- Dave Airlie Linux Graphics blog for the latest on his Mesa driver work.
- Lynne’s compiled musings on FFmpeg Vulkan Video development.
Talks #
Vulkan Video Webinar: Unlocking the Power of Vulkan Video Encode — Daniel Rákos, RasterGrid. Bejamin Cheng, AMD. Srinath Kumarapuram, NVIDIA
Vulkanised 2025: New Extensions and Developments in Vulkan Video — Srinath Kumarapuram
Vulkanised 2025: Vulkan Video is Open: Application Showcase — Stephane Cerveau
Vulkanised 2025: Vulkan Video Decoding with .NET8 leveraging Silk.NET and Avalonia — Andrew Bennett
Vulkanised 2025: Teaching Update & Thesis Vulkan Video Extensions for Mesa Lavapipe — Helmut Hlavacs & Berhard Clemens Schrenk
GStreamer Conference 2024: GStreamer Vulkan Video: 2024 edition - Stéphane Cerveau & Víctor Jáquez
Vulkanised 2024: Implementing a Video Encoder From Mesa to GStreamer - Stéphane Cerveau & Hyunjun Ko
Vulkanised 2024: Vulkan Video Encode API: A Deep Dive - Tony Zlatinski
XDC 2023: Status of the Vulkan Video ecosystem. Charles Turner, Igalia
GStreamer Conference 2023: Vulkan Video in GStreamer. Stéphane Cerveau & Victor Jáquez, Igalia
Vulkanised 2023: A deep dive into Vulkan Video. Tony Zlatinski, NVIDIA
Vulkanised 2023: Implementing a Vulkan decoder with GStreamer. Victor Jáquez & Stéphane Cerveau, Igalia
XDC 2021: Video decoding in Vulkan: VK_KHR_video_queue/decode APIs. Víctor Jáquez, Igalia
Examples #
GStreamer #
GStreamer decode #
gst-launch-1.0 filesrc location=./video.mp4 ! parsebin ! vulkanh264dec ! vulkandownload ! videoconvert ! autovideosink
GStreamer encode #
gst-launch-1.0 videotestsrc ! video/x-raw, format=NV12 ! vulkanupload ! vulkanh264enc ! vulkanh264dec ! vulkandownload ! videoconvert ! autovideosink sync=false
FFmpeg #
- Setting
vk:N
allows you to select a specific device. - Setting
debug=1
turns on API validation. - When dealing with unframed YUV data, there are addition switches to pass
before the
-i
flag: e.g.-f rawvideo -pixel_format nv12 -video_size 352x240 -i …
.
FFmpeg decode #
ffmpeg -hwaccel vulkan -init_hw_device vulkan=vk:0,debug=0 -hwaccel_output_format vulkan -i input -vf 'hwdownload,format=nv12' -pix_fmt yuv420p output.y4m
🚧 FFmpeg encode #
ffmpeg -y -hide_banner -hwaccel vulkan -hwaccel_output_format vulkan -i input.y4m -vf 'format=nv12,hwupload' -c:v h264_vulkan -frames 100 output_h264_vulkan.mp4