// Copyright 2018-2024 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_KHR_video_queue.adoc[]

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

include::{generated}/interfaces/VK_KHR_video_queue.adoc[]

=== 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
