Khronos announced Vulkan Video extensions, providing vendor-independent access to GPU video decoding/encoding. The latest Vulkan specification adds VP9 decoding, a widely used, royalty-free codec. This completes the planned decode extensions, allowing developers to build platform-independent accelerated decoding pipelines for all prominent contemporary codecs. The VP9 extension, similar to H.264/H.265/AV1, allows querying capabilities and specifying parameters. Its development benefited from the prior AV1 extension work, as AV1 builds on VP9. VP9 simplifies parsing by encoding frame data in a single byte array, unlike MPEG or AV1. VP9 is also straightforward to implement in Vulkan Video, lacking global state management.
Khronos has announced a collection of extensions called “Vulkan Video,” which offers developers vendor-independent access to video decoding and encoding functionality present in contemporary GPU hardware. These extensions allow software creators to harness video processing capabilities across different hardware platforms without being tied to specific vendor implementations.

Vulkan compresses data.
With the release of version 1.4.317 of the Vulkan specification, this collection of extensions receives another addition through the incorporation of VP9 decoding capabilities. VP9 represents one of the early royalty-free codecs that achieved widespread adoption across the industry and continues to see regular use in video-on-demand services and real-time communication applications. The codec’s royalty-free nature made it an attractive option for content providers and platform developers seeking to avoid licensing fees associated with proprietary video formats.
This release marks the completion of the currently planned decode-related extensions within the Vulkan Video framework. The comprehensive nature of this extension set now enables developers to construct platform-independent and vendor-independent accelerated decoding pipelines that can handle all prominent contemporary codecs. This development represents a significant milestone for cross-platform video application development, as it eliminates the need for developers to create separate implementations for different GPU vendors or operating systems when building video decoding functionality into their applications.

Figure 1. Vulkan Video extensions. (Source: Khronos)
The VK_KHR_video_decode_vp9 extension represents a new addition that builds upon the core Vulkan Video extensions, utilizing the same methodological approach that was established by the earlier H.264, H.265, and AV1 decode extensions. This extension introduces the required APIs that allow applications to query available VP9 decode capabilities within the system and to specify per-picture VP9 parameters for decoding operations. The extension also provides new video standard headers designed for VP9 functionality, including vk_video/vulkan_video_codec_vp9std.h and vk_video/vulkan_video_codec_vp9std_decode.h. These header files contain the definitions for VP9 codec parameters that applications require to properly configure and manage VP9 decode sessions and their associated operations.
While VP9 was developed and released before AV1 as a codec technology, the development timeline for the Vulkan VP9 decode extension actually occurred after the AV1 extension had been completed, which allowed the VP9 extension developers to benefit from the work that had already been done. This sequencing proved advantageous because AV1 was developed using VP9 as a foundation and consequently shares numerous coding tools and structural elements with its predecessor. The existing AV1 decode extension, therefore, provided a practical and tested foundation that could be leveraged when implementing VP9 decoding capabilities within Vulkan. This approach of building upon previous work offers benefits to both implementers who develop the extensions and users who consume them, as it streamlines the development process, while ensuring consistency across the various supported codecs within the Vulkan Video framework.
A notable difference between VP9 decoding and the previous video decode extensions relates to how VP9 handles data packaging, where each VP9 packet contains all necessary information as a self-contained unit. This approach contrasts with MPEG-based codecs, which utilize NAL (Network Abstraction Layer) units to divide bitstreams into individually parsed segments, and also differs from AV1, which employs OBUs (Open Bitstream Units) for similar purposes. VP9 takes a different approach by encoding all the data required for a complete frame within a single byte array structure. This design choice simplifies the parsing process considerably by removing the need to extract and interpret nested subunits that exist within the bitstream, reducing the complexity that developers must handle when working with the codec.
When compared to other codecs that receive support through Vulkan Video, VP9 stands out because it does not require global state management through a video session parameters object, which makes it the most straightforward codec to implement when creating a Vulkan decode extension. This relative simplicity in implementation makes VP9 a practical starting point for new users or implementers who want to begin working with Vulkan Video before expanding their support to include more complex codecs that have additional requirements. For those codecs that do require session parameters management, the recently merged VK_KHR_video_maintenance2 extension assists in simplifying their management processes, which helps reduce overall code complexity for developers working with these more demanding codec implementations.
Note: 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.
LIKE WHAT YOU’RE READING? INTRODUCE US TO YOUR FRIENDS AND COLLEAGUES.