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