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