Extension and Version Dependencies
-
Requires support for Vulkan 1.0
-
Requires
VK_KHR_video_queue
to be enabled for any device-level functionality -
Requires
VK_KHR_synchronization2
to be enabled for any device-level functionality -
This is a provisional extension and must be used with caution. See the description of provisional header files for enablement and stability details.
Contact
-
Ahmed Abdelkhalek aabdelkh
Other Extension Metadata
- Last Modified Date
-
2022-03-31
- IP Status
-
No known IP claims.
- Contributors
-
-
Ahmed Abdelkhalek, AMD
-
Damien Kessler, NVIDIA
-
Daniel Rakos, AMD
-
George Hao, AMD
-
Jake Beju, AMD
-
Peter Fang, AMD
-
Piers Daniell, NVIDIA
-
Srinath Kumarapuram, NVIDIA
-
Thomas J. Meier, NVIDIA
-
Tony Zlatinski, NVIDIA
-
Yang Liu, AMD
-
Description
This extension builds upon the VK_KHR_video_queue
extension by
adding common APIs specific to video encoding and thus enabling
implementations to expose queue families supporting video encode operations.
More specifically, it adds video encode specific capabilities and a new command buffer command that allows recording video encode operations against a video session.
This extension is to be used in conjunction with other codec specific video encode extensions that enable encoding video sequences of specific video compression standards.
New Enum Constants
-
VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME
-
VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION
-
Extending VkAccessFlagBits2:
-
VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR
-
VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR
-
-
Extending VkBufferUsageFlagBits:
-
VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR
-
VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR
-
-
Extending VkFormatFeatureFlagBits:
-
VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR
-
VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR
-
-
Extending VkImageLayout:
-
VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR
-
VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR
-
VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR
-
-
Extending VkImageUsageFlagBits:
-
VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR
-
VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR
-
VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR
-
-
Extending VkPipelineStageFlagBits2:
-
VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR
-
-
Extending VkQueryType:
-
VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR
-
-
Extending VkQueueFlagBits:
-
VK_QUEUE_VIDEO_ENCODE_BIT_KHR
-
-
Extending VkStructureType:
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR
-
If VK_KHR_format_feature_flags2 is supported:
-
Extending VkFormatFeatureFlagBits2:
-
VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR
-
VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR
-
Issues
1) Why is there no VK_PIPELINE_STAGE_VIDEO_ENCODE_BIT_KHR
?
RESOLVED: This extension requires VK_KHR_synchronization2
because the
new access flags introduced did not fit in the 32-bit enum
VkAccessFlagBits
.
Accordingly, all new pipeline stage and access flags have been added to the
corresponding 64-bit enum and no new flags have been added to the legacy
32-bit enums.
While the new pipeline stage flag introduced uses bit #27 which would also
fit in the legacy VkPipelineStageFlagBits
enum, there is no real benefit
to include it.
Instead the bit is marked reserved.
Version History
-
Revision 1, 2018-07-23 (Ahmed Abdelkhalek)
-
Initial draft
-
-
Revision 1.1, 10/29/2019 (Tony Zlatinski)
-
Updated the reserved spec tokens and renamed VkVideoEncoderKHR to VkVideoSessionKHR
-
-
Revision 1.6, Jan 08 2020 (Tony Zlatinski)
-
API unify with the video_decode_queue spec
-
-
Revision 2, March 29 2021 (Tony Zlatinski)
-
Spec and API updates.
-
-
Revision 3, 2021-09-30 (Jon Leech)
-
Add interaction with
VK_KHR_format_feature_flags2
tovk.xml
-
-
Revision 4, 2022-02-10 (Ahmed Abdelkhalek)
-
Updates to encode capability interface
-
-
Revision 5, 2022-03-31 (Ahmed Abdelkhalek)
-
Remove redundant VkVideoEncodeInfoKHR.codedExtent
-
See Also
VkVideoEncodeCapabilitiesKHR, VkVideoEncodeCapabilityFlagBitsKHR, VkVideoEncodeCapabilityFlagsKHR, VkVideoEncodeFlagBitsKHR, VkVideoEncodeFlagsKHR, VkVideoEncodeInfoKHR, VkVideoEncodeRateControlFlagBitsKHR, VkVideoEncodeRateControlFlagsKHR, VkVideoEncodeRateControlInfoKHR, VkVideoEncodeRateControlLayerInfoKHR, VkVideoEncodeRateControlModeFlagBitsKHR, VkVideoEncodeRateControlModeFlagsKHR, vkCmdEncodeVideoKHR
Document Notes
For more information, see the Vulkan Specification
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.