Khronos Announces Vulkan Video Decode VP9 Extension
The set of extensions known as "Vulkan Video", developed by the Vulkan® Working Group at Khronos®, provides developers with vendor-independent access to video decoding and encoding functionality in modern GPU hardware.
Today, with the release of version 1.4.317 of the Vulkan specification, this set of extensions is being expanded once again with the introduction of VP9 decoding. VP9 was among the first royalty-free codecs to gain mass adoption and is still extensively used in video-on-demand and real-time communications.
This release completes the currently planned set of decode-related extensions, enabling developers to build platform- and vendor-independent accelerated decoding pipelines for all major modern codecs.
Figure 1. Vulkan Video Extensions
Decode VP9 extension
The new VK_KHR_video_decode_vp9 extension builds upon the core Vulkan Video extensions, following the approach taken by the earlier H.264, H.265, and AV1 decode extensions. It introduces the necessary APIs to query available VP9 decode capabilities and to specify per-picture VP9 parameters. Additionally, new video standard headers are provided specifically for VP9: vk_video/vulkan_video_codec_vp9std.h and vk_video/vulkan_video_codec_vp9std_decode.h. These headers define the VP9 codec parameters required to configure and manage VP9 decode sessions and operations.
Although VP9 predates AV1 as a codec, the Vulkan VP9 decode extension was developed after the AV1 extension and was able to build upon it. Because AV1 was based in part on VP9 and shares similar coding tools and structural elements, the existing AV1 decode extension provided a useful foundation for implementing VP9 decoding in Vulkan. This reuse of code and design benefits both implementers and users by streamlining development and ensuring consistency across supported codecs.
A key difference between VP9 decoding and the previous video decode extensions is that each VP9 packet is self-contained. Unlike MPEG-based codecs, which use NAL (Network Abstraction Layer) units to break bitstreams into individually parsed segments, or AV1, which uses OBUs (Open Bitstream Units), VP9 encodes all the data for a frame within a single byte array. This design simplifies parsing by eliminating the need to extract and interpret nested sub-units within the bitstream.
In contrast to other codecs supported by Vulkan Video, VP9 does not require global state management through a video session parameters object, making it the simplest codec to implement with a Vulkan decode extension. This simplicity makes VP9 an ideal starting point for new users or implementers looking to get started with Vulkan Video before extending support to more complex codecs. For codecs that do require session parameters, the recently merged VK_KHR_video_maintenance2 extension helps simplify their management, reducing code complexity.
Further details on this extension can be found in the proposal document and specification.
Call for Action, Feedback & Support!
The Vulkan Working Group encourages developers to utilize the Vulkan Video extensions to unlock new levels of performance and functionality in their video applications. Feedback is welcomed on the Vulkan GitHub issue tracker for VK_KHR_video_decode_vp9. Issues will be updated to provide links to Vulkan Video-related resources as they become available. Developers are also encouraged to highlight additional features important to their use cases for consideration in future Vulkan Video updates.
An upcoming release of the Vulkan SDK will include updated Vulkan headers and Validation Layer support for the newly released video extensions. In the interim, Vulkan headers are available here.
Vulkan drivers supporting the Decode VP9 extension, along with all previously released Vulkan Video extensions, are already available, including:
- NVIDIA: Beta drivers for Windows and Linux
- AMD: Beta driver for Windows
- Intel: Windows driver coming soon.
Vulkan Video adoption continues to grow strongly within the open-source community. Both GStreamer and FFmpeg multimedia frameworks include Vulkan Video decode and encode paths, and support is actively maintained in the RADV and ANV open-source Vulkan drivers for AMD and Intel GPUs.
The Khronos open-source Vulkan Video samples are being updated to demonstrate usage of the Decode VP9 extension. Additionally,Víctor Jáquez’s Vulkan Video status page provides a comprehensive compilation of Vulkan Video-related ecosystem resources.
Khronos encourages broad industry participation in the ongoing evolution of Vulkan Video, including its expansion to support additional codecs and features. Information about Khronos membership and contributing to standards development is available at khronos.org/members.
Vulkan Video is designed to provide an efficient, cross-platform solution for diverse video applications. Future enhancements will continue to be guided by real-world developer needs and use cases. The Vulkan Working Group appreciates the industry’s continued interest and support!
Related Semiconductor IP
- Video Decoder - AV1, HEVC, AVC, VP9
- Single-core video decoder - AV1, HEVC, AVC, VP9
- Single-core video decoder - AV1, HEVC, AVC, VP9, AVS2
- Single-core video codec - AV1, HEVC, AVC, VP9 (VP9: Decoder only)
- Dual-core video decoder - AV1, HEVC, AVC, VP9
Related Blogs
- Video: Make your waveform viewer decode protocols!
- Video: New Cadence Verification IP Catalog (With Denali Inside!)
- Video, Part 2: Cadence Demonstrates PCIe Gen3 Advanced Features
- Video: Cadence Demonstrates PCIe Gen3 Silicon at PCI-SIG Dev-Con (SAS RAID Controller)
Latest Blogs
- Powering the Future of RF: Falcomm and GlobalFoundries at IMS 2025
- The Coming NPU Population Collapse
- Driving the Future of High-Speed Computing with PCIe 7.0 Innovation
- Khronos Announces Vulkan Video Decode VP9 Extension
- One Instruction Stream, Infinite Possibilities: The Cervell™ Approach to Reinventing the NPU