Function Prototype

vkCmdDecodeVideoKHR

Launch a video decode operation
primary
outside
inside
decode
action

To launch video decode operations, call:

void vkCmdDecodeVideoKHR(
    VkCommandBuffer commandBuffer,
    const VkVideoDecodeInfoKHR* pDecodeInfo);
  • commandBuffer is the command buffer in which to record the command.
  • pDecodeInfo is a pointer to a VkVideoDecodeInfoKHR structure specifying the parameters of the video decode operations.

Each call issues one or more video decode operations. The implicit parameter opCount corresponds to the number of video decode operations issued by the command. After calling this command, the active query index of each active query is incremented by opCount.

Currently each call to this command results in the issue of a single video decode operation.

If the bound video session was created with VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR and the pNext chain of pDecodeInfo includes a VkVideoInlineQueryInfoKHR structure with its queryPool member specifying a valid VkQueryPool handle, then this command will execute a query for each video decode operation issued by it.

Active Reference Picture Information

The list of active reference pictures used by a video decode operation is a list of image subregions used as the source of reference picture data and related parameters, and is derived from the VkVideoReferenceSlotInfoKHR structures provided as the elements of the pDecodeInfo→pReferenceSlots array. For each element of pDecodeInfo→pReferenceSlots, one or more elements are added to the active reference picture list, as defined by the codec-specific semantics. Each element of this list contains the following information:

  • The image subregion within the image subresource referred to by the video picture resource used as the reference picture.
  • The DPB slot index the reference picture is associated with.
  • The codec-specific reference information related to the reference picture.
Reconstructed Picture Information

Information related to the optional reconstructed picture used by a video decode operation is derived from the VkVideoReferenceSlotInfoKHR structure pointed to by pDecodeInfo→pSetupReferenceSlot, if not NULL, as defined by the codec-specific semantics, and consists of the following:

  • The image subregion within the image subresource referred to by the video picture resource used as the reconstructed picture.
  • The DPB slot index to use for picture reconstruction.
  • The codec-specific reference information related to the reconstructed picture.

Specifying a valid VkVideoReferenceSlotInfoKHR structure in pDecodeInfo→pSetupReferenceSlot is always required, unless the video session was created with VkVideoSessionCreateInfoKHR::maxDpbSlot equal to zero. However, the DPB slot identified by pDecodeInfo→pSetupReferenceSlot→slotIndex is only activated with the reconstructed picture specified in pDecodeInfo→pSetupReferenceSlot→pPictureResource if reference picture setup is requested according to the codec-specific semantics.

If reconstructed picture information is specified, and pDecodeInfo→pSetupReferenceSlot→pPictureResource refers to a video picture resource different than that of the decode output picture, but reference picture setup is not requested, the contents of the video picture resource corresponding to the reconstructed picture will be undefined: after the video decode operation.

Some implementations may always output the reconstructed picture or use it as temporary storage during the video decode operation even when the reconstructed picture is not marked for future reference.

Decode Output Picture Information

Information related to the decode output picture used by a video decode operation is derived from pDecodeInfo→dstPictureResource and any codec-specific parameters provided in the pDecodeInfo→pNext chain, as defined by the codec-specific semantics, and consists of the following:

  • The image subregion within the image subresource referred to by the video picture resource used as the decode output picture.
  • The codec-specific picture information related to the decode output picture.

Several limiting values are defined below that are referenced by the relevant valid usage statements of this command.

  • Let uint32_t activeReferencePictureCount be the size of the list of active reference pictures used by the video decode operation. Unless otherwise defined, activeReferencePictureCount is set to the value of pDecodeInfo→referenceSlotCount.
    • If the bound video session was created with an H.264 decode profile, then let activeReferencePictureCount be the value of pDecodeInfo→referenceSlotCount plus the number of elements of the pDecodeInfo→pReferenceSlots array that have a VkVideoDecodeH264DpbSlotInfoKHR structure included in their pNext chain with both pStdReferenceInfo→flags.top_field_flag and pStdReferenceInfo→flags.bottom_field_flag set.

      This means that the elements of pDecodeInfo→pReferenceSlots that include both a top and bottom field reference are counted as two separate active reference pictures, as described in the active reference picture list construction rules for H.264 decode operations.

  • Let VkOffset2D codedOffsetGranularity be the minimum alignment requirement for the coded offset of video picture resources. Unless otherwise defined, the value of the x and y members of codedOffsetGranularity are 0.
  • Let uint32_t dpbFrameUseCount[] be an array of size maxDpbSlots, where maxDpbSlots is the VkVideoSessionCreateInfoKHR::maxDpbSlots the bound video session was created with, with each element indicating the number of times a frame associated with the corresponding DPB slot index is referred to by the video coding operation. Let the initial value of each element of the array be 0.
    • If pDecodeInfo→pSetupReferenceSlot is not NULL, then dpbFrameUseCount[i] is incremented by one, where i equals pDecodeInfo→pSetupReferenceSlot→slotIndex. If the bound video session object was created with an H.264 decode profile, then dpbFrameUseCount[i] is decremented by one if either pStdReferenceInfo→flags.top_field_flag or pStdReferenceInfo→flags.bottom_field_flag is set in the VkVideoDecodeH264DpbSlotInfoKHR structure in the pDecodeInfo→pSetupReferenceSlot→pNext chain.
    • For each element of pDecodeInfo→pReferenceSlots, dpbFrameUseCount[i] is incremented by one, where i equals the slotIndex member of the corresponding element. If the bound video session object was created with an H.264 decode profile, then dpbFrameUseCount[i] is decremented by one if either pStdReferenceInfo→flags.top_field_flag or pStdReferenceInfo→flags.bottom_field_flag is set in the VkVideoDecodeH264DpbSlotInfoKHR structure in the pNext chain of the corresponding element of pDecodeInfo→pReferenceSlots.
  • Let uint32_t dpbTopFieldUseCount[] and uint32_t dpbBottomFieldUseCount[] be arrays of size maxDpbSlots, where maxDpbSlots is the VkVideoSessionCreateInfoKHR::maxDpbSlots the bound video session was created with, with each element indicating the number of times the top field or the bottom field, respectively, associated with the corresponding DPB slot index is referred to by the video coding operation. Let the initial value of each element of the arrays be 0.
    • If the bound video session object was created with an H.264 decode profile and pDecodeInfo→pSetupReferenceSlot is not NULL, then perform the following:
      • If pStdReferenceInfo→flags.top_field_flag is set in the VkVideoDecodeH264DpbSlotInfoKHR structure in the pDecodeInfo→pSetupReferenceSlot→pNext chain, then dpbTopFieldUseCount[i] is incremented by one, where i equals pDecodeInfo→pSetupReferenceSlot→slotIndex.
      • If pStdReferenceInfo→flags.bottom_field_flag is set in the VkVideoDecodeH264DpbSlotInfoKHR structure in the pDecodeInfo→pSetupReferenceSlot→pNext chain, then dpbBottomFieldUseCount[i] is incremented by one, where i equals pDecodeInfo→pSetupReferenceSlot→slotIndex.
    • If the bound video session object was created with an H.264 decode profile, then perform the following for each element of pDecodeInfo→pReferenceSlots:
      • If pStdReferenceInfo→flags.top_field_flag is set in the VkVideoDecodeH264DpbSlotInfoKHR structure in the pNext chain of the element, then dpbTopFieldUseCount[i] is incremented by one, where i equals the slotIndex member of the element.
      • If pStdReferenceInfo→flags.bottom_field_flag is set in the VkVideoDecodeH264DpbSlotInfoKHR structure in the pNext chain of the element, then dpbBottomFieldUseCount[i] is incremented by one, where i equals the slotIndex member of the element.

Valid Usage

VUID-vkCmdDecodeVideoKHR-None-08249

The bound video session must have been created with a decode operation

VUID-vkCmdDecodeVideoKHR-None-07011

The bound video session must not be in uninitialized state at the time the command is executed on the device

VUID-vkCmdDecodeVideoKHR-opCount-07134

For each active query, the active query index corresponding to the query type of that query plus opCount must be less than or equal to the last activatable query index corresponding to the query type of that query plus one

VUID-vkCmdDecodeVideoKHR-pNext-08365

If the bound video session was created with VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR, and the pNext chain of pDecodeInfo includes a VkVideoInlineQueryInfoKHR structure with its queryPool member specifying a valid VkQueryPool handle, then VkVideoInlineQueryInfoKHR::queryCount must equal opCount

VUID-vkCmdDecodeVideoKHR-pNext-08366

If the bound video session was created with VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR, and the pNext chain of pDecodeInfo includes a VkVideoInlineQueryInfoKHR structure with its queryPool member specifying a valid VkQueryPool handle, then all the queries used by the command, as specified by the VkVideoInlineQueryInfoKHR structure, must be unavailable

VUID-vkCmdDecodeVideoKHR-queryType-08367

If the bound video session was created with VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR, then the queryType used to create the queryPool specified in the VkVideoInlineQueryInfoKHR structure included in the pNext chain of pDecodeInfo must be VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR

VUID-vkCmdDecodeVideoKHR-queryPool-08368

If the bound video session was created with VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR, then the queryPool specified in the VkVideoInlineQueryInfoKHR structure included in the pNext chain of pDecodeInfo must have been created with a VkVideoProfileInfoKHR structure included in the pNext chain of VkQueryPoolCreateInfo identical to the one specified in VkVideoSessionCreateInfoKHR::pVideoProfile the bound video session was created with

VUID-vkCmdDecodeVideoKHR-queryType-08369

If the bound video session was created with VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR, and the queryType used to create the queryPool specified in the VkVideoInlineQueryInfoKHR structure included in the pNext chain of pDecodeInfo is VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR, then the VkCommandPool that commandBuffer was allocated from must have been created with a queue family index that supports result status queries, as indicated by VkQueueFamilyQueryResultStatusPropertiesKHR::queryResultStatusSupport

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07135

pDecodeInfo→srcBuffer must be compatible with the video profile the bound video session was created with

VUID-vkCmdDecodeVideoKHR-commandBuffer-07136

If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, then pDecodeInfo→srcBuffer must not be a protected buffer

VUID-vkCmdDecodeVideoKHR-commandBuffer-07137

If commandBuffer is a protected command buffer and protectedNoFault is not supported, then pDecodeInfo→srcBuffer must be a protected buffer

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07138

pDecodeInfo→srcBufferOffset must be an integer multiple of VkVideoCapabilitiesKHR::minBitstreamBufferOffsetAlignment, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the video profile the bound video session was created with

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07139

pDecodeInfo→srcBufferRange must be an integer multiple of VkVideoCapabilitiesKHR::minBitstreamBufferSizeAlignment, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the video profile the bound video session was created with

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07140

If pDecodeInfo→pSetupReferenceSlot is not NULL and VkVideoDecodeCapabilitiesKHR::flags does not include VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the video profile the bound video session was created with, then the video picture resources specified by pDecodeInfo→dstPictureResource and pDecodeInfo→pSetupReferenceSlot→pPictureResource must not match

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07141

If pDecodeInfo→pSetupReferenceSlot is not NULL and none of the following is true:- VkVideoDecodeCapabilitiesKHR::flags includes VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the video profile the bound video session was created with

  • the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR and VkVideoDecodeAV1ProfileInfoKHR::filmGrainSupport set to VK_TRUE, and film grain is enabled for the decoded picture

then the video picture resources specified by pDecodeInfo→dstPictureResource and pDecodeInfo→pSetupReferenceSlot→pPictureResource mustmatch

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07142

pDecodeInfo→dstPictureResource.imageViewBinding must be compatible with the video profile the bound video session was created with

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07143

The format of pDecodeInfo→dstPictureResource.imageViewBindingmust match the VkVideoSessionCreateInfoKHR::pictureFormat the bound video session was created with

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07144

pDecodeInfo→dstPictureResource.codedOffset must be an integer multiple of codedOffsetGranularity

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07145

pDecodeInfo→dstPictureResource.codedExtent must be between minCodedExtent and maxCodedExtent, inclusive, the bound video session was created with

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07146

pDecodeInfo→dstPictureResource.imageViewBinding must have been created with VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR

VUID-vkCmdDecodeVideoKHR-commandBuffer-07147

If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, then pDecodeInfo→dstPictureResource.imageViewBinding must not have been created from a protected image

VUID-vkCmdDecodeVideoKHR-commandBuffer-07148

If commandBuffer is a protected command buffer and protectedNoFault is not supported, then pDecodeInfo→dstPictureResource.imageViewBinding must have been created from a protected image

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-08376

pDecodeInfo→pSetupReferenceSlot must not be NULL unless the bound video session was created with VkVideoSessionCreateInfoKHR::maxDpbSlots equal to zero

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07170

If pDecodeInfo→pSetupReferenceSlot is not NULL, then pDecodeInfo→pSetupReferenceSlot→slotIndex must be less than the VkVideoSessionCreateInfoKHR::maxDpbSlots specified when the bound video session was created

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07173

If pDecodeInfo→pSetupReferenceSlot is not NULL, then pDecodeInfo→pSetupReferenceSlot→pPictureResource→codedOffsetmust be an integer multiple of codedOffsetGranularity

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07149

If pDecodeInfo→pSetupReferenceSlot is not NULL, then pDecodeInfo→pSetupReferenceSlot→pPictureResource mustmatch one of the bound reference picture resource

VUID-vkCmdDecodeVideoKHR-activeReferencePictureCount-07150

activeReferencePictureCount must be less than or equal to the VkVideoSessionCreateInfoKHR::maxActiveReferencePictures specified when the bound video session was created

VUID-vkCmdDecodeVideoKHR-slotIndex-07256

The slotIndex member of each element of pDecodeInfo→pReferenceSlots must be less than the VkVideoSessionCreateInfoKHR::maxDpbSlots specified when the bound video session was created

VUID-vkCmdDecodeVideoKHR-codedOffset-07257

The codedOffset member of the VkVideoPictureResourceInfoKHR structure pointed to by the pPictureResource member of each element of pDecodeInfo→pReferenceSlots must be an integer multiple of codedOffsetGranularity

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07151

The pPictureResource member of each element of pDecodeInfo→pReferenceSlots mustmatch one of the bound reference picture resource associated with the DPB slot index specified in the slotIndex member of that element

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07264

Each video picture resource corresponding to the pPictureResource member specified in the elements of pDecodeInfo→pReferenceSlotsmust be unique within pDecodeInfo→pReferenceSlots

VUID-vkCmdDecodeVideoKHR-dpbFrameUseCount-07176

All elements of dpbFrameUseCount must be less than or equal to 1

VUID-vkCmdDecodeVideoKHR-dpbTopFieldUseCount-07177

All elements of dpbTopFieldUseCount must be less than or equal to 1

VUID-vkCmdDecodeVideoKHR-dpbBottomFieldUseCount-07178

All elements of dpbBottomFieldUseCount must be less than or equal to 1

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07252

If pDecodeInfo→pSetupReferenceSlot is NULL or pDecodeInfo→pSetupReferenceSlot→pPictureResource does not refer to the same image subresource as pDecodeInfo→dstPictureResource, then the image subresource referred to by pDecodeInfo→dstPictureResource must be in the VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR layout at the time the video decode operation is executed on the device

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07253

If pDecodeInfo→pSetupReferenceSlot is not NULL and pDecodeInfo→pSetupReferenceSlot→pPictureResource

refers to the same image subresource as pDecodeInfo→dstPictureResource, then the image subresource referred to by pDecodeInfo→dstPictureResource must be in the VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR layout at the time the video decode operation is executed on the device

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07254

If pDecodeInfo→pSetupReferenceSlot is not NULL, then the image subresource referred to by pDecodeInfo→pSetupReferenceSlot→pPictureResource must be in the VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR layout at the time the video decode operation is executed on the device

VUID-vkCmdDecodeVideoKHR-pPictureResource-07255

The image subresource referred to by the pPictureResource member of each element of pDecodeInfo→pReferenceSlots must be in the VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR layout at the time the video decode operation is executed on the device

VUID-vkCmdDecodeVideoKHR-pNext-07152

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the pNext chain of pDecodeInfo must include a VkVideoDecodeH264PictureInfoKHR structure

VUID-vkCmdDecodeVideoKHR-None-07258

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR but was not created with interlaced frame support, then the decode output picture must represent a frame

VUID-vkCmdDecodeVideoKHR-pSliceOffsets-07153

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then all elements of the pSliceOffsets member of the VkVideoDecodeH264PictureInfoKHR structure included in the pNext chain of pDecodeInfo must be less than pDecodeInfo→srcBufferRange

VUID-vkCmdDecodeVideoKHR-StdVideoH264SequenceParameterSet-07154

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the bound video session parameters object must contain a StdVideoH264SequenceParameterSet entry with seq_parameter_set_id matching StdVideoDecodeH264PictureInfo::seq_parameter_set_id that is provided in the pStdPictureInfo member of the VkVideoDecodeH264PictureInfoKHR structure included in the pNext chain of pDecodeInfo

VUID-vkCmdDecodeVideoKHR-StdVideoH264PictureParameterSet-07155

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the bound video session parameters object must contain a StdVideoH264PictureParameterSet entry with seq_parameter_set_id and pic_parameter_set_id matching StdVideoDecodeH264PictureInfo::seq_parameter_set_id and StdVideoDecodeH264PictureInfo::pic_parameter_set_id, respectively, that are provided in the pStdPictureInfo member of the VkVideoDecodeH264PictureInfoKHR structure included in the pNext chain of pDecodeInfo

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07156

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR and pDecodeInfo→pSetupReferenceSlot is not NULL, then the pNext chain of pDecodeInfo→pSetupReferenceSlot must include a VkVideoDecodeH264DpbSlotInfoKHR structure

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07259

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR but was not created with interlaced frame support, and pDecodeInfo→pSetupReferenceSlot is not NULL, then the reconstructed picture must represent a frame

VUID-vkCmdDecodeVideoKHR-pNext-07157

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the pNext chain of each element of pDecodeInfo→pReferenceSlots must include a VkVideoDecodeH264DpbSlotInfoKHR structure

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07260

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR but was not created with interlaced frame support, then each active reference picture corresponding to the elements of pDecodeInfo→pReferenceSlots must represent a frame

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07261

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, pDecodeInfo→pSetupReferenceSlot is not NULL, and the decode output picture represents a frame, then the reconstructed picture must also represent a frame

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07262

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, pDecodeInfo→pSetupReferenceSlot is not NULL, and the decode output picture represents a top field, then the reconstructed picture must also represent a top field

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07263

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, pDecodeInfo→pSetupReferenceSlot is not NULL, and the decode output picture represents a bottom field, then the reconstructed picture must also represent a bottom field

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07266

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR and an active reference picture corresponding to any element of pDecodeInfo→pReferenceSlots represents a frame, then the DPB slot index of the bound video session specified by the slotIndex member of that element must be currently associated with a frame picture matching the video picture resource specified by the pPictureResource member of the same element at the time the command is executed on the device

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07267

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR and an active reference picture corresponding to any element of pDecodeInfo→pReferenceSlots represents a top field, then the DPB slot index of the bound video session specified by the slotIndex member of that element must be currently associated with a top field picture matching the video picture resource specified by the pPictureResource member of the same element at the time the command is executed on the device

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07268

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR and an active reference picture corresponding to any element of pDecodeInfo→pReferenceSlots represents a bottom field, then the DPB slot index of the bound video session specified by the slotIndex member of that element must be currently associated with a bottom field picture matching the video picture resource specified by the pPictureResource member of the same element at the time the command is executed on the device

VUID-vkCmdDecodeVideoKHR-pNext-07158

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the pNext chain of pDecodeInfo must include a VkVideoDecodeH265PictureInfoKHR structure

VUID-vkCmdDecodeVideoKHR-pSliceSegmentOffsets-07159

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then all elements of the pSliceSegmentOffsets member of the VkVideoDecodeH265PictureInfoKHR structure included in the pNext chain of pDecodeInfo must be less than pDecodeInfo→srcBufferRange

VUID-vkCmdDecodeVideoKHR-StdVideoH265VideoParameterSet-07160

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the bound video session parameters object must contain a StdVideoH265VideoParameterSet entry with vps_video_parameter_set_id matching StdVideoDecodeH265PictureInfo::sps_video_parameter_set_id that is provided in the pStdPictureInfo member of the VkVideoDecodeH265PictureInfoKHR structure included in the pNext chain of pDecodeInfo

VUID-vkCmdDecodeVideoKHR-StdVideoH265SequenceParameterSet-07161

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the bound video session parameters object must contain a StdVideoH265SequenceParameterSet entry with sps_video_parameter_set_id and sps_seq_parameter_set_id matching StdVideoDecodeH265PictureInfo::sps_video_parameter_set_id and StdVideoDecodeH265PictureInfo::pps_seq_parameter_set_id, respectively, that are provided in the pStdPictureInfo member of the VkVideoDecodeH265PictureInfoKHR structure included in the pNext chain of pDecodeInfo

VUID-vkCmdDecodeVideoKHR-StdVideoH265PictureParameterSet-07162

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the bound video session parameters object must contain a StdVideoH265PictureParameterSet entry with sps_video_parameter_set_id, pps_seq_parameter_set_id, and pps_pic_parameter_set_id matching StdVideoDecodeH265PictureInfo::sps_video_parameter_set_id, StdVideoDecodeH265PictureInfo::pps_seq_parameter_set_id, and StdVideoDecodeH265PictureInfo::pps_pic_parameter_set_id, respectively, that are provided in the pStdPictureInfo member of the VkVideoDecodeH265PictureInfoKHR structure included in the pNext chain of pDecodeInfo

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07163

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR and pDecodeInfo→pSetupReferenceSlot is not NULL, then the pNext chain of pDecodeInfo→pSetupReferenceSlot must include a VkVideoDecodeH265DpbSlotInfoKHR structure

VUID-vkCmdDecodeVideoKHR-pNext-07164

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the pNext chain of each element of pDecodeInfo→pReferenceSlots must include a VkVideoDecodeH265DpbSlotInfoKHR structure

VUID-vkCmdDecodeVideoKHR-filmGrainSupport-09248

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR and VkVideoDecodeAV1ProfileInfoKHR::filmGrainSupport set to VK_FALSE, then film grain must not be enabled for the decoded picture

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-09249

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR, pDecodeInfo→pSetupReferenceSlot is not NULL, and film grain is enabled for the decoded picture, then the video picture resources specified by pDecodeInfo→dstPictureResource and pDecodeInfo→pSetupReferenceSlot→pPictureResource must not match

VUID-vkCmdDecodeVideoKHR-pNext-09250

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR, then the pNext chain of pDecodeInfo must include a VkVideoDecodeAV1PictureInfoKHR structure

VUID-vkCmdDecodeVideoKHR-frameHeaderOffset-09251

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR, then the frameHeaderOffset member of the VkVideoDecodeAV1PictureInfoKHR structure included in the pNext chain of pDecodeInfo must be less than the minimum of pDecodeInfo→srcBufferRange

VUID-vkCmdDecodeVideoKHR-pTileOffsets-09253

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR, then all elements of the pTileOffsets member of the VkVideoDecodeAV1PictureInfoKHR structure included in the pNext chain of pDecodeInfo must be less than pDecodeInfo→srcBufferRange

VUID-vkCmdDecodeVideoKHR-pTileOffsets-09252

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR, then for each element i of the pTileOffsets and pTileSizes members of the VkVideoDecodeAV1PictureInfoKHR structure included in the pNext chain of pDecodeInfo the sum of pTileOffsets[i] and pTileSizes[i] must be less than or equal to pDecodeInfo→srcBufferRange

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-09254

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR and pDecodeInfo→pSetupReferenceSlot is not NULL, then the pNext chain of pDecodeInfo→pSetupReferenceSlot must include a VkVideoDecodeAV1DpbSlotInfoKHR structure

VUID-vkCmdDecodeVideoKHR-pNext-09255

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR, then the pNext chain of each element of pDecodeInfo→pReferenceSlots must include a VkVideoDecodeAV1DpbSlotInfoKHR structure

VUID-vkCmdDecodeVideoKHR-referenceNameSlotIndices-09262

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR, then each element of the referenceNameSlotIndices array member of the VkVideoDecodeAV1PictureInfoKHR structure included in the pNext chain of pDecodeInfo must either be negative or must equal the slotIndex member of one of the elements of pDecodeInfo→pReferenceSlots

VUID-vkCmdDecodeVideoKHR-slotIndex-09263

If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR, then the slotIndex member of each element of pDecodeInfo→pReferenceSlots must equal one of the elements of the referenceNameSlotIndices array member of the VkVideoDecodeAV1PictureInfoKHR structure included in the pNext chain of pDecodeInfo

Valid Usage (Implicit)

VUID-vkCmdDecodeVideoKHR-pDecodeInfo-parameter

pDecodeInfo must be a valid pointer to a valid VkVideoDecodeInfoKHR structure

VUID-vkCmdDecodeVideoKHR-commandBuffer-cmdpool

The VkCommandPool that commandBuffer was allocated from must support decode operations

VUID-vkCmdDecodeVideoKHR-renderpass

This command must only be called outside of a render pass instance

VUID-vkCmdDecodeVideoKHR-videocoding

This command must only be called inside of a video coding scope

VUID-vkCmdDecodeVideoKHR-bufferlevel

commandBuffer must be a primary VkCommandBuffer

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the VkCommandPool that commandBuffer was allocated from must be externally synchronized ::