1 #ifndef VULKAN_BETA_H_ 2 #define VULKAN_BETA_H_ 1 3 4 /* 5 ** Copyright 2015-2021 The Khronos Group Inc. 6 ** 7 ** SPDX-License-Identifier: Apache-2.0 8 */ 9 10 /* 11 ** This header is generated from the Khronos Vulkan XML API Registry. 12 ** 13 */ 14 15 16 #ifdef __cplusplus 17 extern "C" { 18 #endif 19 20 21 22 #define VK_KHR_video_queue 1 23 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR) 24 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR) 25 #define VK_KHR_VIDEO_QUEUE_SPEC_VERSION 2 26 #define VK_KHR_VIDEO_QUEUE_EXTENSION_NAME "VK_KHR_video_queue" 27 28 typedef enum VkQueryResultStatusKHR { 29 VK_QUERY_RESULT_STATUS_ERROR_KHR = -1, 30 VK_QUERY_RESULT_STATUS_NOT_READY_KHR = 0, 31 VK_QUERY_RESULT_STATUS_COMPLETE_KHR = 1, 32 VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 0x7FFFFFFF 33 } VkQueryResultStatusKHR; 34 35 typedef enum VkVideoCodecOperationFlagBitsKHR { 36 VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR = 0, 37 #ifdef VK_ENABLE_BETA_EXTENSIONS 38 VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT = 0x00010000, 39 #endif 40 #ifdef VK_ENABLE_BETA_EXTENSIONS 41 VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT = 0x00020000, 42 #endif 43 #ifdef VK_ENABLE_BETA_EXTENSIONS 44 VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT = 0x00000001, 45 #endif 46 #ifdef VK_ENABLE_BETA_EXTENSIONS 47 VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT = 0x00000002, 48 #endif 49 VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 50 } VkVideoCodecOperationFlagBitsKHR; 51 typedef VkFlags VkVideoCodecOperationFlagsKHR; 52 53 typedef enum VkVideoChromaSubsamplingFlagBitsKHR { 54 VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR = 0, 55 VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0x00000001, 56 VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0x00000002, 57 VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0x00000004, 58 VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x00000008, 59 VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 60 } VkVideoChromaSubsamplingFlagBitsKHR; 61 typedef VkFlags VkVideoChromaSubsamplingFlagsKHR; 62 63 typedef enum VkVideoComponentBitDepthFlagBitsKHR { 64 VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0, 65 VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0x00000001, 66 VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0x00000004, 67 VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x00000010, 68 VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 69 } VkVideoComponentBitDepthFlagBitsKHR; 70 typedef VkFlags VkVideoComponentBitDepthFlagsKHR; 71 72 typedef enum VkVideoCapabilityFlagBitsKHR { 73 VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001, 74 VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002, 75 VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 76 } VkVideoCapabilityFlagBitsKHR; 77 typedef VkFlags VkVideoCapabilityFlagsKHR; 78 79 typedef enum VkVideoSessionCreateFlagBitsKHR { 80 VK_VIDEO_SESSION_CREATE_DEFAULT_KHR = 0, 81 VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001, 82 VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 83 } VkVideoSessionCreateFlagBitsKHR; 84 typedef VkFlags VkVideoSessionCreateFlagsKHR; 85 typedef VkFlags VkVideoBeginCodingFlagsKHR; 86 typedef VkFlags VkVideoEndCodingFlagsKHR; 87 88 typedef enum VkVideoCodingControlFlagBitsKHR { 89 VK_VIDEO_CODING_CONTROL_DEFAULT_KHR = 0, 90 VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0x00000001, 91 VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 92 } VkVideoCodingControlFlagBitsKHR; 93 typedef VkFlags VkVideoCodingControlFlagsKHR; 94 95 typedef enum VkVideoCodingQualityPresetFlagBitsKHR { 96 VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR = 0x00000001, 97 VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR = 0x00000002, 98 VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR = 0x00000004, 99 VK_VIDEO_CODING_QUALITY_PRESET_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 100 } VkVideoCodingQualityPresetFlagBitsKHR; 101 typedef VkFlags VkVideoCodingQualityPresetFlagsKHR; 102 typedef struct VkVideoQueueFamilyProperties2KHR { 103 VkStructureType sType; 104 void* pNext; 105 VkVideoCodecOperationFlagsKHR videoCodecOperations; 106 } VkVideoQueueFamilyProperties2KHR; 107 108 typedef struct VkVideoProfileKHR { 109 VkStructureType sType; 110 void* pNext; 111 VkVideoCodecOperationFlagBitsKHR videoCodecOperation; 112 VkVideoChromaSubsamplingFlagsKHR chromaSubsampling; 113 VkVideoComponentBitDepthFlagsKHR lumaBitDepth; 114 VkVideoComponentBitDepthFlagsKHR chromaBitDepth; 115 } VkVideoProfileKHR; 116 117 typedef struct VkVideoProfilesKHR { 118 VkStructureType sType; 119 void* pNext; 120 uint32_t profileCount; 121 const VkVideoProfileKHR* pProfiles; 122 } VkVideoProfilesKHR; 123 124 typedef struct VkVideoCapabilitiesKHR { 125 VkStructureType sType; 126 void* pNext; 127 VkVideoCapabilityFlagsKHR capabilityFlags; 128 VkDeviceSize minBitstreamBufferOffsetAlignment; 129 VkDeviceSize minBitstreamBufferSizeAlignment; 130 VkExtent2D videoPictureExtentGranularity; 131 VkExtent2D minExtent; 132 VkExtent2D maxExtent; 133 uint32_t maxReferencePicturesSlotsCount; 134 uint32_t maxReferencePicturesActiveCount; 135 } VkVideoCapabilitiesKHR; 136 137 typedef struct VkPhysicalDeviceVideoFormatInfoKHR { 138 VkStructureType sType; 139 void* pNext; 140 VkImageUsageFlags imageUsage; 141 const VkVideoProfilesKHR* pVideoProfiles; 142 } VkPhysicalDeviceVideoFormatInfoKHR; 143 144 typedef struct VkVideoFormatPropertiesKHR { 145 VkStructureType sType; 146 void* pNext; 147 VkFormat format; 148 } VkVideoFormatPropertiesKHR; 149 150 typedef struct VkVideoPictureResourceKHR { 151 VkStructureType sType; 152 const void* pNext; 153 VkOffset2D codedOffset; 154 VkExtent2D codedExtent; 155 uint32_t baseArrayLayer; 156 VkImageView imageViewBinding; 157 } VkVideoPictureResourceKHR; 158 159 typedef struct VkVideoReferenceSlotKHR { 160 VkStructureType sType; 161 const void* pNext; 162 int8_t slotIndex; 163 const VkVideoPictureResourceKHR* pPictureResource; 164 } VkVideoReferenceSlotKHR; 165 166 typedef struct VkVideoGetMemoryPropertiesKHR { 167 VkStructureType sType; 168 const void* pNext; 169 uint32_t memoryBindIndex; 170 VkMemoryRequirements2* pMemoryRequirements; 171 } VkVideoGetMemoryPropertiesKHR; 172 173 typedef struct VkVideoBindMemoryKHR { 174 VkStructureType sType; 175 const void* pNext; 176 uint32_t memoryBindIndex; 177 VkDeviceMemory memory; 178 VkDeviceSize memoryOffset; 179 VkDeviceSize memorySize; 180 } VkVideoBindMemoryKHR; 181 182 typedef struct VkVideoSessionCreateInfoKHR { 183 VkStructureType sType; 184 const void* pNext; 185 uint32_t queueFamilyIndex; 186 VkVideoSessionCreateFlagsKHR flags; 187 const VkVideoProfileKHR* pVideoProfile; 188 VkFormat pictureFormat; 189 VkExtent2D maxCodedExtent; 190 VkFormat referencePicturesFormat; 191 uint32_t maxReferencePicturesSlotsCount; 192 uint32_t maxReferencePicturesActiveCount; 193 } VkVideoSessionCreateInfoKHR; 194 195 typedef struct VkVideoSessionParametersCreateInfoKHR { 196 VkStructureType sType; 197 const void* pNext; 198 VkVideoSessionParametersKHR videoSessionParametersTemplate; 199 VkVideoSessionKHR videoSession; 200 } VkVideoSessionParametersCreateInfoKHR; 201 202 typedef struct VkVideoSessionParametersUpdateInfoKHR { 203 VkStructureType sType; 204 const void* pNext; 205 uint32_t updateSequenceCount; 206 } VkVideoSessionParametersUpdateInfoKHR; 207 208 typedef struct VkVideoBeginCodingInfoKHR { 209 VkStructureType sType; 210 const void* pNext; 211 VkVideoBeginCodingFlagsKHR flags; 212 VkVideoCodingQualityPresetFlagsKHR codecQualityPreset; 213 VkVideoSessionKHR videoSession; 214 VkVideoSessionParametersKHR videoSessionParameters; 215 uint32_t referenceSlotCount; 216 const VkVideoReferenceSlotKHR* pReferenceSlots; 217 } VkVideoBeginCodingInfoKHR; 218 219 typedef struct VkVideoEndCodingInfoKHR { 220 VkStructureType sType; 221 const void* pNext; 222 VkVideoEndCodingFlagsKHR flags; 223 } VkVideoEndCodingInfoKHR; 224 225 typedef struct VkVideoCodingControlInfoKHR { 226 VkStructureType sType; 227 const void* pNext; 228 VkVideoCodingControlFlagsKHR flags; 229 } VkVideoCodingControlInfoKHR; 230 231 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities); 232 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties); 233 typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession); 234 typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator); 235 typedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements); 236 typedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories); 237 typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters); 238 typedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo); 239 typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator); 240 typedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo); 241 typedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo); 242 typedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo); 243 244 #ifndef VK_NO_PROTOTYPES 245 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR( 246 VkPhysicalDevice physicalDevice, 247 const VkVideoProfileKHR* pVideoProfile, 248 VkVideoCapabilitiesKHR* pCapabilities); 249 250 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR( 251 VkPhysicalDevice physicalDevice, 252 const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, 253 uint32_t* pVideoFormatPropertyCount, 254 VkVideoFormatPropertiesKHR* pVideoFormatProperties); 255 256 VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR( 257 VkDevice device, 258 const VkVideoSessionCreateInfoKHR* pCreateInfo, 259 const VkAllocationCallbacks* pAllocator, 260 VkVideoSessionKHR* pVideoSession); 261 262 VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR( 263 VkDevice device, 264 VkVideoSessionKHR videoSession, 265 const VkAllocationCallbacks* pAllocator); 266 267 VKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR( 268 VkDevice device, 269 VkVideoSessionKHR videoSession, 270 uint32_t* pVideoSessionMemoryRequirementsCount, 271 VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements); 272 273 VKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR( 274 VkDevice device, 275 VkVideoSessionKHR videoSession, 276 uint32_t videoSessionBindMemoryCount, 277 const VkVideoBindMemoryKHR* pVideoSessionBindMemories); 278 279 VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR( 280 VkDevice device, 281 const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, 282 const VkAllocationCallbacks* pAllocator, 283 VkVideoSessionParametersKHR* pVideoSessionParameters); 284 285 VKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR( 286 VkDevice device, 287 VkVideoSessionParametersKHR videoSessionParameters, 288 const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo); 289 290 VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR( 291 VkDevice device, 292 VkVideoSessionParametersKHR videoSessionParameters, 293 const VkAllocationCallbacks* pAllocator); 294 295 VKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR( 296 VkCommandBuffer commandBuffer, 297 const VkVideoBeginCodingInfoKHR* pBeginInfo); 298 299 VKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR( 300 VkCommandBuffer commandBuffer, 301 const VkVideoEndCodingInfoKHR* pEndCodingInfo); 302 303 VKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR( 304 VkCommandBuffer commandBuffer, 305 const VkVideoCodingControlInfoKHR* pCodingControlInfo); 306 #endif 307 308 309 #define VK_KHR_video_decode_queue 1 310 #define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 2 311 #define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue" 312 313 typedef enum VkVideoDecodeFlagBitsKHR { 314 VK_VIDEO_DECODE_DEFAULT_KHR = 0, 315 VK_VIDEO_DECODE_RESERVED_0_BIT_KHR = 0x00000001, 316 VK_VIDEO_DECODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 317 } VkVideoDecodeFlagBitsKHR; 318 typedef VkFlags VkVideoDecodeFlagsKHR; 319 typedef struct VkVideoDecodeInfoKHR { 320 VkStructureType sType; 321 const void* pNext; 322 VkVideoDecodeFlagsKHR flags; 323 VkOffset2D codedOffset; 324 VkExtent2D codedExtent; 325 VkBuffer srcBuffer; 326 VkDeviceSize srcBufferOffset; 327 VkDeviceSize srcBufferRange; 328 VkVideoPictureResourceKHR dstPictureResource; 329 const VkVideoReferenceSlotKHR* pSetupReferenceSlot; 330 uint32_t referenceSlotCount; 331 const VkVideoReferenceSlotKHR* pReferenceSlots; 332 } VkVideoDecodeInfoKHR; 333 334 typedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo); 335 336 #ifndef VK_NO_PROTOTYPES 337 VKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR( 338 VkCommandBuffer commandBuffer, 339 const VkVideoDecodeInfoKHR* pFrameInfo); 340 #endif 341 342 343 #define VK_KHR_portability_subset 1 344 #define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1 345 #define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset" 346 typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR { 347 VkStructureType sType; 348 void* pNext; 349 VkBool32 constantAlphaColorBlendFactors; 350 VkBool32 events; 351 VkBool32 imageViewFormatReinterpretation; 352 VkBool32 imageViewFormatSwizzle; 353 VkBool32 imageView2DOn3DImage; 354 VkBool32 multisampleArrayImage; 355 VkBool32 mutableComparisonSamplers; 356 VkBool32 pointPolygons; 357 VkBool32 samplerMipLodBias; 358 VkBool32 separateStencilMaskRef; 359 VkBool32 shaderSampleRateInterpolationFunctions; 360 VkBool32 tessellationIsolines; 361 VkBool32 tessellationPointMode; 362 VkBool32 triangleFans; 363 VkBool32 vertexAttributeAccessBeyondStride; 364 } VkPhysicalDevicePortabilitySubsetFeaturesKHR; 365 366 typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR { 367 VkStructureType sType; 368 void* pNext; 369 uint32_t minVertexInputBindingStrideAlignment; 370 } VkPhysicalDevicePortabilitySubsetPropertiesKHR; 371 372 373 374 #define VK_KHR_video_encode_queue 1 375 #define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 3 376 #define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue" 377 378 typedef enum VkVideoEncodeFlagBitsKHR { 379 VK_VIDEO_ENCODE_DEFAULT_KHR = 0, 380 VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR = 0x00000001, 381 VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 382 } VkVideoEncodeFlagBitsKHR; 383 typedef VkFlags VkVideoEncodeFlagsKHR; 384 385 typedef enum VkVideoEncodeRateControlFlagBitsKHR { 386 VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR = 0, 387 VK_VIDEO_ENCODE_RATE_CONTROL_RESERVED_0_BIT_KHR = 0x00000001, 388 VK_VIDEO_ENCODE_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 389 } VkVideoEncodeRateControlFlagBitsKHR; 390 typedef VkFlags VkVideoEncodeRateControlFlagsKHR; 391 392 typedef enum VkVideoEncodeRateControlModeFlagBitsKHR { 393 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR = 0, 394 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 1, 395 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 2, 396 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 397 } VkVideoEncodeRateControlModeFlagBitsKHR; 398 typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR; 399 typedef struct VkVideoEncodeInfoKHR { 400 VkStructureType sType; 401 const void* pNext; 402 VkVideoEncodeFlagsKHR flags; 403 uint32_t qualityLevel; 404 VkExtent2D codedExtent; 405 VkBuffer dstBitstreamBuffer; 406 VkDeviceSize dstBitstreamBufferOffset; 407 VkDeviceSize dstBitstreamBufferMaxRange; 408 VkVideoPictureResourceKHR srcPictureResource; 409 const VkVideoReferenceSlotKHR* pSetupReferenceSlot; 410 uint32_t referenceSlotCount; 411 const VkVideoReferenceSlotKHR* pReferenceSlots; 412 uint32_t precedingExternallyEncodedBytes; 413 } VkVideoEncodeInfoKHR; 414 415 typedef struct VkVideoEncodeRateControlLayerInfoKHR { 416 VkStructureType sType; 417 const void* pNext; 418 uint32_t averageBitrate; 419 uint32_t maxBitrate; 420 uint32_t frameRateNumerator; 421 uint32_t frameRateDenominator; 422 uint32_t virtualBufferSizeInMs; 423 uint32_t initialVirtualBufferSizeInMs; 424 } VkVideoEncodeRateControlLayerInfoKHR; 425 426 typedef struct VkVideoEncodeRateControlInfoKHR { 427 VkStructureType sType; 428 const void* pNext; 429 VkVideoEncodeRateControlFlagsKHR flags; 430 VkVideoEncodeRateControlModeFlagBitsKHR rateControlMode; 431 uint8_t layerCount; 432 const VkVideoEncodeRateControlLayerInfoKHR* pLayerConfigs; 433 } VkVideoEncodeRateControlInfoKHR; 434 435 typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo); 436 437 #ifndef VK_NO_PROTOTYPES 438 VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR( 439 VkCommandBuffer commandBuffer, 440 const VkVideoEncodeInfoKHR* pEncodeInfo); 441 #endif 442 443 444 #define VK_EXT_video_encode_h264 1 445 #include "vk_video/vulkan_video_codec_h264std.h" 446 #include "vk_video/vulkan_video_codec_h264std_encode.h" 447 #define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 2 448 #define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264" 449 450 typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT { 451 VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00000001, 452 VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00000002, 453 VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT = 0x00000004, 454 VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00000008, 455 VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000010, 456 VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000020, 457 VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00000040, 458 VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00000080, 459 VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00000100, 460 VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00000200, 461 VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT = 0x00000400, 462 VK_VIDEO_ENCODE_H264_CAPABILITY_OPTIONAL_RC_EXTENSION_STRUCT_BIT_EXT = 0x00000800, 463 VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 464 } VkVideoEncodeH264CapabilityFlagBitsEXT; 465 typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT; 466 467 typedef enum VkVideoEncodeH264InputModeFlagBitsEXT { 468 VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 0x00000001, 469 VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 0x00000002, 470 VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, 471 VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 472 } VkVideoEncodeH264InputModeFlagBitsEXT; 473 typedef VkFlags VkVideoEncodeH264InputModeFlagsEXT; 474 475 typedef enum VkVideoEncodeH264OutputModeFlagBitsEXT { 476 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001, 477 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002, 478 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, 479 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 480 } VkVideoEncodeH264OutputModeFlagBitsEXT; 481 typedef VkFlags VkVideoEncodeH264OutputModeFlagsEXT; 482 483 typedef enum VkVideoEncodeH264CreateFlagBitsEXT { 484 VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT = 0, 485 VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT = 0x00000001, 486 VK_VIDEO_ENCODE_H264_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 487 } VkVideoEncodeH264CreateFlagBitsEXT; 488 typedef VkFlags VkVideoEncodeH264CreateFlagsEXT; 489 490 typedef enum VkVideoEncodeH264RateControlStructureFlagBitsEXT { 491 VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0, 492 VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT = 0x00000001, 493 VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT = 0x00000002, 494 VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 495 } VkVideoEncodeH264RateControlStructureFlagBitsEXT; 496 typedef VkFlags VkVideoEncodeH264RateControlStructureFlagsEXT; 497 typedef struct VkVideoEncodeH264CapabilitiesEXT { 498 VkStructureType sType; 499 const void* pNext; 500 VkVideoEncodeH264CapabilityFlagsEXT flags; 501 VkVideoEncodeH264InputModeFlagsEXT inputModeFlags; 502 VkVideoEncodeH264OutputModeFlagsEXT outputModeFlags; 503 VkExtent2D minPictureSizeInMbs; 504 VkExtent2D maxPictureSizeInMbs; 505 VkExtent2D inputImageDataAlignment; 506 uint8_t maxNumL0ReferenceForP; 507 uint8_t maxNumL0ReferenceForB; 508 uint8_t maxNumL1Reference; 509 uint8_t qualityLevelCount; 510 VkExtensionProperties stdExtensionVersion; 511 } VkVideoEncodeH264CapabilitiesEXT; 512 513 typedef struct VkVideoEncodeH264SessionCreateInfoEXT { 514 VkStructureType sType; 515 const void* pNext; 516 VkVideoEncodeH264CreateFlagsEXT flags; 517 VkExtent2D maxPictureSizeInMbs; 518 const VkExtensionProperties* pStdExtensionVersion; 519 } VkVideoEncodeH264SessionCreateInfoEXT; 520 521 typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT { 522 VkStructureType sType; 523 const void* pNext; 524 uint32_t spsStdCount; 525 const StdVideoH264SequenceParameterSet* pSpsStd; 526 uint32_t ppsStdCount; 527 const StdVideoH264PictureParameterSet* pPpsStd; 528 } VkVideoEncodeH264SessionParametersAddInfoEXT; 529 530 typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT { 531 VkStructureType sType; 532 const void* pNext; 533 uint32_t maxSpsStdCount; 534 uint32_t maxPpsStdCount; 535 const VkVideoEncodeH264SessionParametersAddInfoEXT* pParametersAddInfo; 536 } VkVideoEncodeH264SessionParametersCreateInfoEXT; 537 538 typedef struct VkVideoEncodeH264DpbSlotInfoEXT { 539 VkStructureType sType; 540 const void* pNext; 541 int8_t slotIndex; 542 const StdVideoEncodeH264PictureInfo* pStdPictureInfo; 543 } VkVideoEncodeH264DpbSlotInfoEXT; 544 545 typedef struct VkVideoEncodeH264NaluSliceEXT { 546 VkStructureType sType; 547 const void* pNext; 548 const StdVideoEncodeH264SliceHeader* pSliceHeaderStd; 549 uint32_t mbCount; 550 uint8_t refFinalList0EntryCount; 551 const VkVideoEncodeH264DpbSlotInfoEXT* pRefFinalList0Entries; 552 uint8_t refFinalList1EntryCount; 553 const VkVideoEncodeH264DpbSlotInfoEXT* pRefFinalList1Entries; 554 } VkVideoEncodeH264NaluSliceEXT; 555 556 typedef struct VkVideoEncodeH264VclFrameInfoEXT { 557 VkStructureType sType; 558 const void* pNext; 559 uint8_t refDefaultFinalList0EntryCount; 560 const VkVideoEncodeH264DpbSlotInfoEXT* pRefDefaultFinalList0Entries; 561 uint8_t refDefaultFinalList1EntryCount; 562 const VkVideoEncodeH264DpbSlotInfoEXT* pRefDefaultFinalList1Entries; 563 uint32_t naluSliceEntryCount; 564 const VkVideoEncodeH264NaluSliceEXT* pNaluSliceEntries; 565 const VkVideoEncodeH264DpbSlotInfoEXT* pCurrentPictureInfo; 566 } VkVideoEncodeH264VclFrameInfoEXT; 567 568 typedef struct VkVideoEncodeH264EmitPictureParametersEXT { 569 VkStructureType sType; 570 const void* pNext; 571 uint8_t spsId; 572 VkBool32 emitSpsEnable; 573 uint32_t ppsIdEntryCount; 574 const uint8_t* ppsIdEntries; 575 } VkVideoEncodeH264EmitPictureParametersEXT; 576 577 typedef struct VkVideoEncodeH264ProfileEXT { 578 VkStructureType sType; 579 const void* pNext; 580 StdVideoH264ProfileIdc stdProfileIdc; 581 } VkVideoEncodeH264ProfileEXT; 582 583 typedef struct VkVideoEncodeH264RateControlInfoEXT { 584 VkStructureType sType; 585 const void* pNext; 586 uint32_t gopFrameCount; 587 uint32_t idrPeriod; 588 uint32_t consecutiveBFrameCount; 589 VkVideoEncodeH264RateControlStructureFlagBitsEXT rateControlStructure; 590 } VkVideoEncodeH264RateControlInfoEXT; 591 592 typedef struct VkVideoEncodeH264QpEXT { 593 int32_t qpI; 594 int32_t qpP; 595 int32_t qpB; 596 } VkVideoEncodeH264QpEXT; 597 598 typedef struct VkVideoEncodeH264FrameSizeEXT { 599 uint32_t frameISize; 600 uint32_t framePSize; 601 uint32_t frameBSize; 602 } VkVideoEncodeH264FrameSizeEXT; 603 604 typedef struct VkVideoEncodeH264RateControlLayerInfoEXT { 605 VkStructureType sType; 606 const void* pNext; 607 uint8_t temporalLayerId; 608 VkBool32 useInitialRcQp; 609 VkVideoEncodeH264QpEXT initialRcQp; 610 VkBool32 useMinQp; 611 VkVideoEncodeH264QpEXT minQp; 612 VkBool32 useMaxQp; 613 VkVideoEncodeH264QpEXT maxQp; 614 VkBool32 useMaxFrameSize; 615 VkVideoEncodeH264FrameSizeEXT maxFrameSize; 616 } VkVideoEncodeH264RateControlLayerInfoEXT; 617 618 619 620 #define VK_EXT_video_encode_h265 1 621 #include "vk_video/vulkan_video_codec_h265std.h" 622 #include "vk_video/vulkan_video_codec_h265std_encode.h" 623 #define VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION 2 624 #define VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_EXT_video_encode_h265" 625 typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT; 626 627 typedef enum VkVideoEncodeH265InputModeFlagBitsEXT { 628 VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT = 0x00000001, 629 VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_BIT_EXT = 0x00000002, 630 VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, 631 VK_VIDEO_ENCODE_H265_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 632 } VkVideoEncodeH265InputModeFlagBitsEXT; 633 typedef VkFlags VkVideoEncodeH265InputModeFlagsEXT; 634 635 typedef enum VkVideoEncodeH265OutputModeFlagBitsEXT { 636 VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001, 637 VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002, 638 VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, 639 VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 640 } VkVideoEncodeH265OutputModeFlagBitsEXT; 641 typedef VkFlags VkVideoEncodeH265OutputModeFlagsEXT; 642 typedef VkFlags VkVideoEncodeH265CreateFlagsEXT; 643 644 typedef enum VkVideoEncodeH265CtbSizeFlagBitsEXT { 645 VK_VIDEO_ENCODE_H265_CTB_SIZE_8_BIT_EXT = 0x00000001, 646 VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT = 0x00000002, 647 VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT = 0x00000004, 648 VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT = 0x00000008, 649 VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 650 } VkVideoEncodeH265CtbSizeFlagBitsEXT; 651 typedef VkFlags VkVideoEncodeH265CtbSizeFlagsEXT; 652 653 typedef enum VkVideoEncodeH265RateControlStructureFlagBitsEXT { 654 VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0, 655 VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT = 0x00000001, 656 VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT = 0x00000002, 657 VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 658 } VkVideoEncodeH265RateControlStructureFlagBitsEXT; 659 typedef VkFlags VkVideoEncodeH265RateControlStructureFlagsEXT; 660 typedef struct VkVideoEncodeH265CapabilitiesEXT { 661 VkStructureType sType; 662 const void* pNext; 663 VkVideoEncodeH265CapabilityFlagsEXT flags; 664 VkVideoEncodeH265InputModeFlagsEXT inputModeFlags; 665 VkVideoEncodeH265OutputModeFlagsEXT outputModeFlags; 666 VkVideoEncodeH265CtbSizeFlagsEXT ctbSizes; 667 VkExtent2D inputImageDataAlignment; 668 uint8_t maxNumL0ReferenceForP; 669 uint8_t maxNumL0ReferenceForB; 670 uint8_t maxNumL1Reference; 671 uint8_t maxNumSubLayers; 672 uint8_t qualityLevelCount; 673 VkExtensionProperties stdExtensionVersion; 674 } VkVideoEncodeH265CapabilitiesEXT; 675 676 typedef struct VkVideoEncodeH265SessionCreateInfoEXT { 677 VkStructureType sType; 678 const void* pNext; 679 VkVideoEncodeH265CreateFlagsEXT flags; 680 const VkExtensionProperties* pStdExtensionVersion; 681 } VkVideoEncodeH265SessionCreateInfoEXT; 682 683 typedef struct VkVideoEncodeH265SessionParametersAddInfoEXT { 684 VkStructureType sType; 685 const void* pNext; 686 uint32_t vpsStdCount; 687 const StdVideoH265VideoParameterSet* pVpsStd; 688 uint32_t spsStdCount; 689 const StdVideoH265SequenceParameterSet* pSpsStd; 690 uint32_t ppsStdCount; 691 const StdVideoH265PictureParameterSet* pPpsStd; 692 } VkVideoEncodeH265SessionParametersAddInfoEXT; 693 694 typedef struct VkVideoEncodeH265SessionParametersCreateInfoEXT { 695 VkStructureType sType; 696 const void* pNext; 697 uint32_t maxVpsStdCount; 698 uint32_t maxSpsStdCount; 699 uint32_t maxPpsStdCount; 700 const VkVideoEncodeH265SessionParametersAddInfoEXT* pParametersAddInfo; 701 } VkVideoEncodeH265SessionParametersCreateInfoEXT; 702 703 typedef struct VkVideoEncodeH265DpbSlotInfoEXT { 704 VkStructureType sType; 705 const void* pNext; 706 int8_t slotIndex; 707 const StdVideoEncodeH265ReferenceInfo* pStdReferenceInfo; 708 } VkVideoEncodeH265DpbSlotInfoEXT; 709 710 typedef struct VkVideoEncodeH265ReferenceListsEXT { 711 VkStructureType sType; 712 const void* pNext; 713 uint8_t referenceList0EntryCount; 714 const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList0Entries; 715 uint8_t referenceList1EntryCount; 716 const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList1Entries; 717 const StdVideoEncodeH265ReferenceModifications* pReferenceModifications; 718 } VkVideoEncodeH265ReferenceListsEXT; 719 720 typedef struct VkVideoEncodeH265NaluSliceEXT { 721 VkStructureType sType; 722 const void* pNext; 723 uint32_t ctbCount; 724 const VkVideoEncodeH265ReferenceListsEXT* pReferenceFinalLists; 725 const StdVideoEncodeH265SliceHeader* pSliceHeaderStd; 726 } VkVideoEncodeH265NaluSliceEXT; 727 728 typedef struct VkVideoEncodeH265VclFrameInfoEXT { 729 VkStructureType sType; 730 const void* pNext; 731 const VkVideoEncodeH265ReferenceListsEXT* pReferenceFinalLists; 732 uint32_t naluSliceEntryCount; 733 const VkVideoEncodeH265NaluSliceEXT* pNaluSliceEntries; 734 const StdVideoEncodeH265PictureInfo* pCurrentPictureInfo; 735 } VkVideoEncodeH265VclFrameInfoEXT; 736 737 typedef struct VkVideoEncodeH265EmitPictureParametersEXT { 738 VkStructureType sType; 739 const void* pNext; 740 uint8_t vpsId; 741 uint8_t spsId; 742 VkBool32 emitVpsEnable; 743 VkBool32 emitSpsEnable; 744 uint32_t ppsIdEntryCount; 745 const uint8_t* ppsIdEntries; 746 } VkVideoEncodeH265EmitPictureParametersEXT; 747 748 typedef struct VkVideoEncodeH265ProfileEXT { 749 VkStructureType sType; 750 const void* pNext; 751 StdVideoH265ProfileIdc stdProfileIdc; 752 } VkVideoEncodeH265ProfileEXT; 753 754 typedef struct VkVideoEncodeH265RateControlInfoEXT { 755 VkStructureType sType; 756 const void* pNext; 757 uint32_t gopFrameCount; 758 uint32_t idrPeriod; 759 uint32_t consecutiveBFrameCount; 760 VkVideoEncodeH265RateControlStructureFlagBitsEXT rateControlStructure; 761 } VkVideoEncodeH265RateControlInfoEXT; 762 763 typedef struct VkVideoEncodeH265QpEXT { 764 int32_t qpI; 765 int32_t qpP; 766 int32_t qpB; 767 } VkVideoEncodeH265QpEXT; 768 769 typedef struct VkVideoEncodeH265FrameSizeEXT { 770 uint32_t frameISize; 771 uint32_t framePSize; 772 uint32_t frameBSize; 773 } VkVideoEncodeH265FrameSizeEXT; 774 775 typedef struct VkVideoEncodeH265RateControlLayerInfoEXT { 776 VkStructureType sType; 777 const void* pNext; 778 uint8_t temporalId; 779 VkBool32 useInitialRcQp; 780 VkVideoEncodeH265QpEXT initialRcQp; 781 VkBool32 useMinQp; 782 VkVideoEncodeH265QpEXT minQp; 783 VkBool32 useMaxQp; 784 VkVideoEncodeH265QpEXT maxQp; 785 VkBool32 useMaxFrameSize; 786 VkVideoEncodeH265FrameSizeEXT maxFrameSize; 787 } VkVideoEncodeH265RateControlLayerInfoEXT; 788 789 790 791 #define VK_EXT_video_decode_h264 1 792 #include "vk_video/vulkan_video_codec_h264std_decode.h" 793 #define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 3 794 #define VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME "VK_EXT_video_decode_h264" 795 796 typedef enum VkVideoDecodeH264PictureLayoutFlagBitsEXT { 797 VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT = 0, 798 VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT = 0x00000001, 799 VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT = 0x00000002, 800 VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 801 } VkVideoDecodeH264PictureLayoutFlagBitsEXT; 802 typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsEXT; 803 typedef VkFlags VkVideoDecodeH264CreateFlagsEXT; 804 typedef struct VkVideoDecodeH264ProfileEXT { 805 VkStructureType sType; 806 const void* pNext; 807 StdVideoH264ProfileIdc stdProfileIdc; 808 VkVideoDecodeH264PictureLayoutFlagsEXT pictureLayout; 809 } VkVideoDecodeH264ProfileEXT; 810 811 typedef struct VkVideoDecodeH264CapabilitiesEXT { 812 VkStructureType sType; 813 void* pNext; 814 uint32_t maxLevel; 815 VkOffset2D fieldOffsetGranularity; 816 VkExtensionProperties stdExtensionVersion; 817 } VkVideoDecodeH264CapabilitiesEXT; 818 819 typedef struct VkVideoDecodeH264SessionCreateInfoEXT { 820 VkStructureType sType; 821 const void* pNext; 822 VkVideoDecodeH264CreateFlagsEXT flags; 823 const VkExtensionProperties* pStdExtensionVersion; 824 } VkVideoDecodeH264SessionCreateInfoEXT; 825 826 typedef struct VkVideoDecodeH264SessionParametersAddInfoEXT { 827 VkStructureType sType; 828 const void* pNext; 829 uint32_t spsStdCount; 830 const StdVideoH264SequenceParameterSet* pSpsStd; 831 uint32_t ppsStdCount; 832 const StdVideoH264PictureParameterSet* pPpsStd; 833 } VkVideoDecodeH264SessionParametersAddInfoEXT; 834 835 typedef struct VkVideoDecodeH264SessionParametersCreateInfoEXT { 836 VkStructureType sType; 837 const void* pNext; 838 uint32_t maxSpsStdCount; 839 uint32_t maxPpsStdCount; 840 const VkVideoDecodeH264SessionParametersAddInfoEXT* pParametersAddInfo; 841 } VkVideoDecodeH264SessionParametersCreateInfoEXT; 842 843 typedef struct VkVideoDecodeH264PictureInfoEXT { 844 VkStructureType sType; 845 const void* pNext; 846 const StdVideoDecodeH264PictureInfo* pStdPictureInfo; 847 uint32_t slicesCount; 848 const uint32_t* pSlicesDataOffsets; 849 } VkVideoDecodeH264PictureInfoEXT; 850 851 typedef struct VkVideoDecodeH264MvcEXT { 852 VkStructureType sType; 853 const void* pNext; 854 const StdVideoDecodeH264Mvc* pStdMvc; 855 } VkVideoDecodeH264MvcEXT; 856 857 typedef struct VkVideoDecodeH264DpbSlotInfoEXT { 858 VkStructureType sType; 859 const void* pNext; 860 const StdVideoDecodeH264ReferenceInfo* pStdReferenceInfo; 861 } VkVideoDecodeH264DpbSlotInfoEXT; 862 863 864 865 #define VK_EXT_video_decode_h265 1 866 #include "vk_video/vulkan_video_codec_h265std_decode.h" 867 #define VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION 1 868 #define VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME "VK_EXT_video_decode_h265" 869 typedef VkFlags VkVideoDecodeH265CreateFlagsEXT; 870 typedef struct VkVideoDecodeH265ProfileEXT { 871 VkStructureType sType; 872 const void* pNext; 873 StdVideoH265ProfileIdc stdProfileIdc; 874 } VkVideoDecodeH265ProfileEXT; 875 876 typedef struct VkVideoDecodeH265CapabilitiesEXT { 877 VkStructureType sType; 878 void* pNext; 879 uint32_t maxLevel; 880 VkExtensionProperties stdExtensionVersion; 881 } VkVideoDecodeH265CapabilitiesEXT; 882 883 typedef struct VkVideoDecodeH265SessionCreateInfoEXT { 884 VkStructureType sType; 885 const void* pNext; 886 VkVideoDecodeH265CreateFlagsEXT flags; 887 const VkExtensionProperties* pStdExtensionVersion; 888 } VkVideoDecodeH265SessionCreateInfoEXT; 889 890 typedef struct VkVideoDecodeH265SessionParametersAddInfoEXT { 891 VkStructureType sType; 892 const void* pNext; 893 uint32_t spsStdCount; 894 const StdVideoH265SequenceParameterSet* pSpsStd; 895 uint32_t ppsStdCount; 896 const StdVideoH265PictureParameterSet* pPpsStd; 897 } VkVideoDecodeH265SessionParametersAddInfoEXT; 898 899 typedef struct VkVideoDecodeH265SessionParametersCreateInfoEXT { 900 VkStructureType sType; 901 const void* pNext; 902 uint32_t maxSpsStdCount; 903 uint32_t maxPpsStdCount; 904 const VkVideoDecodeH265SessionParametersAddInfoEXT* pParametersAddInfo; 905 } VkVideoDecodeH265SessionParametersCreateInfoEXT; 906 907 typedef struct VkVideoDecodeH265PictureInfoEXT { 908 VkStructureType sType; 909 const void* pNext; 910 StdVideoDecodeH265PictureInfo* pStdPictureInfo; 911 uint32_t slicesCount; 912 const uint32_t* pSlicesDataOffsets; 913 } VkVideoDecodeH265PictureInfoEXT; 914 915 typedef struct VkVideoDecodeH265DpbSlotInfoEXT { 916 VkStructureType sType; 917 const void* pNext; 918 const StdVideoDecodeH265ReferenceInfo* pStdReferenceInfo; 919 } VkVideoDecodeH265DpbSlotInfoEXT; 920 921 922 #ifdef __cplusplus 923 } 924 #endif 925 926 #endif 927