Vulkan, the graphics and compute API that provides high-efficiency, cross-platform access to modern GPUs expands further with Vulkan Video and some provisional extensions. What is it? A new expansion years in the making to add in seamless hardware accelerated video compression and decompression into the Vulkan API. It comes with these new extensions:
The Khronos Group say they plan to "add support in the Vulkan SDK with layers for validation and higher-level abstractions that will speed the development of video applications where simple frame-in-frame-out and black-box decoding and encoding is sufficient" along with open source Vulkan Video samples for Windows and Linux. All of this closely integrates "hardware accelerated video processing with Vulkan’s existing graphics, compute and display functionality".
Since this major new feature set for Vulkan is only provisional, it means it is subject to change. The Khronos Group are taking on feedback which you can follow on the GitHub issue. See the full announcement for more.
In addition to the new extensions for Vulkan Video, the Vulkan 1.2.175 release also added these new extensions:
- VK_EXT_color_write_enable - This extension allows for selectively enabling and disabling writes to output color attachments via a pipeline dynamic state.
- VK_EXT_vertex_input_dynamic_state - This extension adds dynamic state support for what is normally static state in VkPipelineVertexInputStateCreateInfo.
- VK_EXT_ycbcr_2plane_444_format - This extension adds some Y′CBCR formats that are in common use for video encode and decode, but were not part of the VK_KHR_sampler_ycbcr_conversion extension.
- VK_NV_inherited_viewport_scissor - This extension adds the ability for a secondary command buffer to inherit the dynamic viewport and scissor state from a primary command buffer, or a previous secondary command buffer executed within the same vkCmdExecuteCommands call.