Contact
- 
Ahmed Abdelkhalek [GitHub]aabdelkh 
Other Extension Metadata
- Last Modified Date
- 
2023-12-05 
- IP Status
- 
No known IP claims. 
- Contributors
- 
- 
Ahmed Abdelkhalek, AMD 
- 
Damien Kessler, NVIDIA 
- 
George Hao, AMD 
- 
Jake Beju, AMD 
- 
Peter Fang, AMD 
- 
Piers Daniell, NVIDIA 
- 
Srinath Kumarapuram, NVIDIA 
- 
Thomas J. Meier, NVIDIA 
- 
Tony Zlatinski, NVIDIA 
- 
Ravi Chaudhary, NVIDIA 
- 
Yang Liu, AMD 
- 
Daniel Rakos, RasterGrid 
- 
Ping Liu, Intel 
- 
Aidan Fabius, Core Avionics & Industrial Inc. 
- 
Lynne Iribarren, Independent 
 
- 
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 Structures
- 
Extending VkQueryPoolCreateInfo: 
- 
Extending VkVideoCapabilitiesKHR: 
- 
Extending VkVideoCodingControlInfoKHR, VkVideoBeginCodingInfoKHR: 
- 
Extending VkVideoCodingControlInfoKHR, VkVideoSessionParametersCreateInfoKHR: 
- 
Extending VkVideoProfileInfoKHR, VkQueryPoolCreateInfo: 
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 VkQueryResultStatusKHR: - 
VK_QUERY_RESULT_STATUS_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR
 
- 
- 
Extending VkQueryType: - 
VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR
 
- 
- 
Extending VkQueueFlagBits: - 
VK_QUEUE_VIDEO_ENCODE_BIT_KHR
 
- 
- 
Extending VkResult: - 
VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR
 
- 
- 
Extending VkStructureType: - 
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR
- 
VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR
 
- 
- 
Extending VkVideoCodingControlFlagBitsKHR: - 
VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR
- 
VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR
 
- 
- 
Extending VkVideoSessionCreateFlagBitsKHR: - 
VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR
 
- 
If VK_KHR_format_feature_flags2 or Vulkan Version 1.3 is supported:
- 
Extending VkFormatFeatureFlagBits2: - 
VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR
- 
VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR
 
- 
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_flags2tovk.xml
 
- 
- 
Revision 4, 2022-02-10 (Ahmed Abdelkhalek) - 
Updates to encode capability interface 
 
- 
- 
Revision 5, 2022-03-31 (Ahmed Abdelkhalek) - 
Remove redundant VkVideoEncodeInfoKHR.codedExtent 
 
- 
- 
Revision 6, 2022-07-18 (Daniel Rakos) - 
Remove VkVideoEncodeRateControlFlagBitsKHRandVkVideoEncodeFlagBitsKHRas they contain no defined flags for now
- 
Add VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHRandVK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHRto indicate rate control and rate control layer change requests, respectively, in video coding control operations
 
- 
- 
Revision 7, 2022-08-12 (Daniel Rakos) - 
Add VkVideoEncodeUsageInfoKHR structure and related flags 
 
- 
- 
Revision 8, 2023-03-06 (Daniel Rakos) - 
Replace VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHRqueries with more genericVK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHRqueries that can be extended in the future with more feedback values
- 
Rename dstBitstreamBuffer,dstBitstreamBufferOffset, anddstBitstreamBufferMaxRangeinVkVideoEncodeInfoKHRtodstBuffer,dstBufferOffset, anddstBufferRange, respectively, for consistency with the naming convention in the video decode extensions
- 
Change the type of rateControlLayerCountandqualityLevelCountinVkVideoEncodeCapabilitiesKHRfromuint8_ttouint32_tand rename them tomaxRateControlLayersandmaxQualityLevels, respectively
- 
Change the type of averageBitrateandmaxBitrateinVkVideoEncodeRateControlLayerInfoKHR`fromuint32_ttouint64_t
- 
Fixed the definition of rate control flag bits and added the new VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHRconstant to indicate implementation-specific automatic rate control
- 
Change the type of VkVideoEncodeRateControlInfoKHR::layerCountfromuint8_ttouint32_t
- 
Rename pLayerConfigstopLayersinVkVideoEncodeRateControlInfoKHR
 
- 
- 
Revision 9, 2023-03-28 (Daniel Rakos) - 
Removed VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHRand the ability to change the state of individual rate control layers
- 
Added new VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHRflag to video encode feedback queries
- 
Added new video session create flag VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHRto opt-in to video session and encoding parameter optimizations
- 
Added the vkGetEncodedVideoSessionParametersKHRcommand to enable retrieving encoded video session parameter data
- 
Moved virtualBufferSizeInMsandinitialVirtualBufferSizeInMsfromVkVideoEncodeRateControlLayerInfoKHRtoVkVideoEncodeRateControlInfoKHR
- 
Added maxBitratecapability
- 
Renamed inputImageDataFillAlignmentcapability toencodeInputPictureGranularityto better reflect its purpose
- 
Added new vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHRcommand and related structures to enable querying recommended settings for video encode quality levels
- 
Added VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHRflag andVkVideoEncodeQualityLevelInfoKHRstructure to allow controlling video encode quality level and removedqualityLevelfrom the encode operation parameters
 
- 
- 
Revision 10, 2023-07-19 (Daniel Rakos) - 
Added VK_QUERY_RESULT_STATUS_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHRquery result status code and the related capability flagVK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR
 
- 
- 
Revision 11, 2023-09-04 (Daniel Rakos) - 
Extension is no longer provisional 
 
- 
- 
Revision 12, 2023-12-05 (Daniel Rakos) - 
Require the specification of a reconstructed picture in all cases, except when the video session was created with no DPB slots to match shipping implementations 
- 
Make DPB slot activation behavior codec-specific to continue allowing application control over reference picture setup now that a reconstructed picture is always mandatory 
 
- 
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.