VK_KHR_video_queue(3)

# VK_KHR_video_queue(3) Manual Page

## Name

VK_KHR_video_queue - device extension

Loading… please wait.

## Registered Extension Number

24

## Revision

8

## Ratification Status

Ratified

## Extension and Version Dependencies

Vulkan Version 1.1
and
VK_KHR_synchronization2
or
Vulkan Version 1.3

## Contact

- Tony Zlatinski [GitHub]tzlatinski

## Extension Proposal

VK_KHR_video_queue

## Other Extension Metadata

Last Modified Date

  2022-09-29

IP Status

  No known IP claims.

Contributors

  - Ahmed Abdelkhalek, AMD

  - George Hao, AMD

  - Jake Beju, AMD

  - Piers Daniell, NVIDIA

  - Srinath Kumarapuram, NVIDIA

  - Tobias Hector, AMD

  - Tony Zlatinski, NVIDIA

  - Daniel Rakos, RasterGrid

## Description

This extension provides common APIs to enable exposing queue families with support for video codec operations by introducing the following new object types and related functionalities:

- Video session objects that represent and maintain the state needed to perform video codec operations.

- Video session parameters objects that act as a container for codec specific parameters.

In addition, it also introduces query commands that allow applications to determine video coding related capabilities, and command buffer commands that enable recording video coding operations against a video session.

This extension is to be used in conjunction with other extensions that enable specific video coding operations.

## New Object Types

- VkVideoSessionKHR

- VkVideoSessionParametersKHR

## New Commands

- vkBindVideoSessionMemoryKHR

- vkCmdBeginVideoCodingKHR

- vkCmdControlVideoCodingKHR

- vkCmdEndVideoCodingKHR

- vkCreateVideoSessionKHR

- vkCreateVideoSessionParametersKHR

- vkDestroyVideoSessionKHR

- vkDestroyVideoSessionParametersKHR

- vkGetPhysicalDeviceVideoCapabilitiesKHR

- vkGetPhysicalDeviceVideoFormatPropertiesKHR

- vkGetVideoSessionMemoryRequirementsKHR

- vkUpdateVideoSessionParametersKHR

## New Structures

- VkBindVideoSessionMemoryInfoKHR

- VkPhysicalDeviceVideoFormatInfoKHR

- VkVideoBeginCodingInfoKHR

- VkVideoCapabilitiesKHR

- VkVideoCodingControlInfoKHR

- VkVideoEndCodingInfoKHR

- VkVideoFormatPropertiesKHR

- VkVideoPictureResourceInfoKHR

- VkVideoReferenceSlotInfoKHR

- VkVideoSessionCreateInfoKHR

- VkVideoSessionMemoryRequirementsKHR

- VkVideoSessionParametersCreateInfoKHR

- VkVideoSessionParametersUpdateInfoKHR

- Extending VkPhysicalDeviceImageFormatInfo2, VkPhysicalDeviceVideoFormatInfoKHR, VkImageCreateInfo, VkBufferCreateInfo:

  - VkVideoProfileListInfoKHR

- Extending VkQueryPoolCreateInfo:

  - VkVideoProfileInfoKHR

- Extending VkQueueFamilyProperties2:

  - VkQueueFamilyQueryResultStatusPropertiesKHR

  - VkQueueFamilyVideoPropertiesKHR

## New Enums

- VkQueryResultStatusKHR

- VkVideoCapabilityFlagBitsKHR

- VkVideoChromaSubsamplingFlagBitsKHR

- VkVideoCodecOperationFlagBitsKHR

- VkVideoCodingControlFlagBitsKHR

- VkVideoComponentBitDepthFlagBitsKHR

- VkVideoSessionCreateFlagBitsKHR

## New Bitmasks

- VkVideoBeginCodingFlagsKHR

- VkVideoCapabilityFlagsKHR

- VkVideoChromaSubsamplingFlagsKHR

- VkVideoCodecOperationFlagsKHR

- VkVideoCodingControlFlagsKHR

- VkVideoComponentBitDepthFlagsKHR

- VkVideoEndCodingFlagsKHR

- VkVideoSessionCreateFlagsKHR

- VkVideoSessionParametersCreateFlagsKHR

## New Enum Constants

- `VK_KHR_VIDEO_QUEUE_EXTENSION_NAME`

- `VK_KHR_VIDEO_QUEUE_SPEC_VERSION`

- Extending VkObjectType:

  - VK_OBJECT_TYPE_VIDEO_SESSION_KHR

  - VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR

- Extending VkQueryResultFlagBits:

  - VK_QUERY_RESULT_WITH_STATUS_BIT_KHR

- Extending VkQueryType:

  - VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR

- Extending VkResult:

  - VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR

  - VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR

  - VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR

  - VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR

  - VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR

  - VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR

- Extending VkStructureType:

  - VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR

  - VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR

  - VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR

  - VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR

  - VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR

  - VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR

  - VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR

  - VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR

  - VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR

  - VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR

  - VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR

  - VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR

  - VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR

  - VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR

  - VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR

  - VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR

## Version History

- Revision 0.1, 2019-11-21 (Tony Zlatinski)

  - Initial draft

- Revision 0.2, 2019-11-27 (Tony Zlatinski)

  - Make vulkan video core common between decode and encode

- Revision 1, March 29 2021 (Tony Zlatinski)

  - Spec and API updates.

- Revision 2, August 1 2021 (Srinath Kumarapuram)

  - Rename `VkVideoCapabilitiesFlagBitsKHR` to `VkVideoCapabilityFlagBitsKHR` (along with the names of enumerants it defines) and `VkVideoCapabilitiesFlagsKHR` to `VkVideoCapabilityFlagsKHR`, following Vulkan naming conventions.

- Revision 3, 2022-03-16 (Ahmed Abdelkhalek)

  - Relocate Std header version reporting/requesting from codec-operation specific extensions to this extension.

  - Make Std header versions codec-operation specific instead of only codec-specific.

- Revision 4, 2022-05-30 (Daniel Rakos)

  - Refactor the video format query APIs and related language

  - Extend VkResult with video-specific error codes

- Revision 5, 2022-08-11 (Daniel Rakos)

  - Add `VkVideoSessionParametersCreateFlagsKHR`

  - Remove `VkVideoCodingQualityPresetFlagsKHR`

  - Rename `VkQueueFamilyQueryResultStatusProperties2KHR` to `VkQueueFamilyQueryResultStatusPropertiesKHR`

  - Rename `VkVideoQueueFamilyProperties2KHR` to `VkQueueFamilyVideoPropertiesKHR`

  - Rename `VkVideoProfileKHR` to `VkVideoProfileInfoKHR`

  - Rename `VkVideoProfilesKHR` to `VkVideoProfileListInfoKHR`

  - Rename `VkVideoGetMemoryPropertiesKHR` to `VkVideoSessionMemoryRequirementsKHR`

  - Rename `VkVideoBindMemoryKHR` to `VkBindVideoSessionMemoryInfoKHR`

  - Fix `pNext` constness of `VkPhysicalDeviceVideoFormatInfoKHR` and `VkVideoSessionMemoryRequirementsKHR`

  - Fix incorrectly named value enums in bit enum types `VkVideoCodecOperationFlagBitsKHR` and `VkVideoChromaSubsamplingFlagBitsKHR`

  - Remove unnecessary default values from `VkVideoSessionCreateFlagBitsKHR` and `VkVideoCodingControlFlagBitsKHR`

  - Eliminate nested pointer in `VkVideoSessionMemoryRequirementsKHR`

  - Rename `VkVideoPictureResourceKHR` to `VkVideoPictureResourceInfoKHR`

  - Rename `VkVideoReferenceSlotKHR` to `VkVideoReferenceSlotInfoKHR`

- Revision 6, 2022-09-18 (Daniel Rakos)

  - Rename the `maxReferencePicturesSlotsCount` and `maxReferencePicturesActiveCount` fields of `VkVideoCapabilitiesKHR` and `VkVideoSessionCreateInfoKHR` to `maxDpbSlots` and `maxActiveReferencePictures`, respectively, to clarify their meaning

  - Rename `capabilityFlags` to `flags` in `VkVideoCapabilitiesKHR`

  - Rename `videoPictureExtentGranularity` to `pictureAccessGranularity` in `VkVideoCapabilitiesKHR`

  - Rename `minExtent` and `maxExtent` to `minCodedExtent` and `maxCodedExtent`, respectively, in `VkVideoCapabilitiesKHR`

  - Rename `referencePicturesFormat` to `referencePictureFormat` in `VkVideoSessionCreateInfoKHR`

- Revision 7, 2022-09-26 (Daniel Rakos)

  - Change type of `VkVideoReferenceSlotInfoKHR::slotIndex` from `int8_t` to `int32_t`

- Revision 8, 2022-09-29 (Daniel Rakos)

  - Extension is no longer provisional

## See Also

No cross-references are available

## 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.

## Copyright

Copyright 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0