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_RESET_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 } VkVideoEncodeInfoKHR; 413 414 typedef struct VkVideoEncodeRateControlInfoKHR { 415 VkStructureType sType; 416 const void* pNext; 417 VkVideoEncodeRateControlFlagsKHR flags; 418 VkVideoEncodeRateControlModeFlagBitsKHR rateControlMode; 419 uint32_t averageBitrate; 420 uint16_t peakToAverageBitrateRatio; 421 uint16_t frameRateNumerator; 422 uint16_t frameRateDenominator; 423 uint32_t virtualBufferSizeInMs; 424 } VkVideoEncodeRateControlInfoKHR; 425 426 typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo); 427 428 #ifndef VK_NO_PROTOTYPES 429 VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR( 430 VkCommandBuffer commandBuffer, 431 const VkVideoEncodeInfoKHR* pEncodeInfo); 432 #endif 433 434 435 #define VK_EXT_video_encode_h264 1 436 #include "vk_video/vulkan_video_codec_h264std.h" 437 #include "vk_video/vulkan_video_codec_h264std_encode.h" 438 #define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 2 439 #define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264" 440 441 typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT { 442 VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00000001, 443 VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00000002, 444 VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT = 0x00000004, 445 VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00000008, 446 VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000010, 447 VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000020, 448 VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00000040, 449 VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00000080, 450 VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00000100, 451 VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00000200, 452 VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT = 0x00000400, 453 VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 454 } VkVideoEncodeH264CapabilityFlagBitsEXT; 455 typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT; 456 457 typedef enum VkVideoEncodeH264InputModeFlagBitsEXT { 458 VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 0x00000001, 459 VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 0x00000002, 460 VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, 461 VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 462 } VkVideoEncodeH264InputModeFlagBitsEXT; 463 typedef VkFlags VkVideoEncodeH264InputModeFlagsEXT; 464 465 typedef enum VkVideoEncodeH264OutputModeFlagBitsEXT { 466 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001, 467 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002, 468 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, 469 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 470 } VkVideoEncodeH264OutputModeFlagBitsEXT; 471 typedef VkFlags VkVideoEncodeH264OutputModeFlagsEXT; 472 473 typedef enum VkVideoEncodeH264CreateFlagBitsEXT { 474 VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT = 0, 475 VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT = 0x00000001, 476 VK_VIDEO_ENCODE_H264_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 477 } VkVideoEncodeH264CreateFlagBitsEXT; 478 typedef VkFlags VkVideoEncodeH264CreateFlagsEXT; 479 typedef struct VkVideoEncodeH264CapabilitiesEXT { 480 VkStructureType sType; 481 const void* pNext; 482 VkVideoEncodeH264CapabilityFlagsEXT flags; 483 VkVideoEncodeH264InputModeFlagsEXT inputModeFlags; 484 VkVideoEncodeH264OutputModeFlagsEXT outputModeFlags; 485 VkExtent2D minPictureSizeInMbs; 486 VkExtent2D maxPictureSizeInMbs; 487 VkExtent2D inputImageDataAlignment; 488 uint8_t maxNumL0ReferenceForP; 489 uint8_t maxNumL0ReferenceForB; 490 uint8_t maxNumL1Reference; 491 uint8_t qualityLevelCount; 492 VkExtensionProperties stdExtensionVersion; 493 } VkVideoEncodeH264CapabilitiesEXT; 494 495 typedef struct VkVideoEncodeH264SessionCreateInfoEXT { 496 VkStructureType sType; 497 const void* pNext; 498 VkVideoEncodeH264CreateFlagsEXT flags; 499 VkExtent2D maxPictureSizeInMbs; 500 const VkExtensionProperties* pStdExtensionVersion; 501 } VkVideoEncodeH264SessionCreateInfoEXT; 502 503 typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT { 504 VkStructureType sType; 505 const void* pNext; 506 uint32_t spsStdCount; 507 const StdVideoH264SequenceParameterSet* pSpsStd; 508 uint32_t ppsStdCount; 509 const StdVideoH264PictureParameterSet* pPpsStd; 510 } VkVideoEncodeH264SessionParametersAddInfoEXT; 511 512 typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT { 513 VkStructureType sType; 514 const void* pNext; 515 uint32_t maxSpsStdCount; 516 uint32_t maxPpsStdCount; 517 const VkVideoEncodeH264SessionParametersAddInfoEXT* pParametersAddInfo; 518 } VkVideoEncodeH264SessionParametersCreateInfoEXT; 519 520 typedef struct VkVideoEncodeH264DpbSlotInfoEXT { 521 VkStructureType sType; 522 const void* pNext; 523 int8_t slotIndex; 524 const StdVideoEncodeH264PictureInfo* pStdPictureInfo; 525 } VkVideoEncodeH264DpbSlotInfoEXT; 526 527 typedef struct VkVideoEncodeH264NaluSliceEXT { 528 VkStructureType sType; 529 const void* pNext; 530 const StdVideoEncodeH264SliceHeader* pSliceHeaderStd; 531 uint32_t mbCount; 532 uint8_t refFinalList0EntryCount; 533 const VkVideoEncodeH264DpbSlotInfoEXT* pRefFinalList0Entries; 534 uint8_t refFinalList1EntryCount; 535 const VkVideoEncodeH264DpbSlotInfoEXT* pRefFinalList1Entries; 536 uint32_t precedingNaluBytes; 537 uint8_t minQp; 538 uint8_t maxQp; 539 } VkVideoEncodeH264NaluSliceEXT; 540 541 typedef struct VkVideoEncodeH264VclFrameInfoEXT { 542 VkStructureType sType; 543 const void* pNext; 544 uint8_t refDefaultFinalList0EntryCount; 545 const VkVideoEncodeH264DpbSlotInfoEXT* pRefDefaultFinalList0Entries; 546 uint8_t refDefaultFinalList1EntryCount; 547 const VkVideoEncodeH264DpbSlotInfoEXT* pRefDefaultFinalList1Entries; 548 uint32_t naluSliceEntryCount; 549 const VkVideoEncodeH264NaluSliceEXT* pNaluSliceEntries; 550 const VkVideoEncodeH264DpbSlotInfoEXT* pCurrentPictureInfo; 551 } VkVideoEncodeH264VclFrameInfoEXT; 552 553 typedef struct VkVideoEncodeH264EmitPictureParametersEXT { 554 VkStructureType sType; 555 const void* pNext; 556 uint8_t spsId; 557 VkBool32 emitSpsEnable; 558 uint32_t ppsIdEntryCount; 559 const uint8_t* ppsIdEntries; 560 } VkVideoEncodeH264EmitPictureParametersEXT; 561 562 typedef struct VkVideoEncodeH264ProfileEXT { 563 VkStructureType sType; 564 const void* pNext; 565 StdVideoH264ProfileIdc stdProfileIdc; 566 } VkVideoEncodeH264ProfileEXT; 567 568 569 570 #define VK_EXT_video_encode_h265 1 571 #include "vk_video/vulkan_video_codec_h265std.h" 572 #include "vk_video/vulkan_video_codec_h265std_encode.h" 573 #define VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION 2 574 #define VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_EXT_video_encode_h265" 575 typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT; 576 577 typedef enum VkVideoEncodeH265InputModeFlagBitsEXT { 578 VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT = 0x00000001, 579 VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_BIT_EXT = 0x00000002, 580 VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, 581 VK_VIDEO_ENCODE_H265_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 582 } VkVideoEncodeH265InputModeFlagBitsEXT; 583 typedef VkFlags VkVideoEncodeH265InputModeFlagsEXT; 584 585 typedef enum VkVideoEncodeH265OutputModeFlagBitsEXT { 586 VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001, 587 VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002, 588 VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, 589 VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 590 } VkVideoEncodeH265OutputModeFlagBitsEXT; 591 typedef VkFlags VkVideoEncodeH265OutputModeFlagsEXT; 592 typedef VkFlags VkVideoEncodeH265CreateFlagsEXT; 593 594 typedef enum VkVideoEncodeH265CtbSizeFlagBitsEXT { 595 VK_VIDEO_ENCODE_H265_CTB_SIZE_8_BIT_EXT = 0x00000001, 596 VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT = 0x00000002, 597 VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT = 0x00000004, 598 VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT = 0x00000008, 599 VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 600 } VkVideoEncodeH265CtbSizeFlagBitsEXT; 601 typedef VkFlags VkVideoEncodeH265CtbSizeFlagsEXT; 602 typedef struct VkVideoEncodeH265CapabilitiesEXT { 603 VkStructureType sType; 604 const void* pNext; 605 VkVideoEncodeH265CapabilityFlagsEXT flags; 606 VkVideoEncodeH265InputModeFlagsEXT inputModeFlags; 607 VkVideoEncodeH265OutputModeFlagsEXT outputModeFlags; 608 VkVideoEncodeH265CtbSizeFlagsEXT ctbSizes; 609 VkExtent2D inputImageDataAlignment; 610 uint8_t maxNumL0ReferenceForP; 611 uint8_t maxNumL0ReferenceForB; 612 uint8_t maxNumL1Reference; 613 uint8_t maxNumSubLayers; 614 uint8_t qualityLevelCount; 615 VkExtensionProperties stdExtensionVersion; 616 } VkVideoEncodeH265CapabilitiesEXT; 617 618 typedef struct VkVideoEncodeH265SessionCreateInfoEXT { 619 VkStructureType sType; 620 const void* pNext; 621 VkVideoEncodeH265CreateFlagsEXT flags; 622 const VkExtensionProperties* pStdExtensionVersion; 623 } VkVideoEncodeH265SessionCreateInfoEXT; 624 625 typedef struct VkVideoEncodeH265SessionParametersAddInfoEXT { 626 VkStructureType sType; 627 const void* pNext; 628 uint32_t vpsStdCount; 629 const StdVideoH265VideoParameterSet* pVpsStd; 630 uint32_t spsStdCount; 631 const StdVideoH265SequenceParameterSet* pSpsStd; 632 uint32_t ppsStdCount; 633 const StdVideoH265PictureParameterSet* pPpsStd; 634 } VkVideoEncodeH265SessionParametersAddInfoEXT; 635 636 typedef struct VkVideoEncodeH265SessionParametersCreateInfoEXT { 637 VkStructureType sType; 638 const void* pNext; 639 uint32_t maxVpsStdCount; 640 uint32_t maxSpsStdCount; 641 uint32_t maxPpsStdCount; 642 const VkVideoEncodeH265SessionParametersAddInfoEXT* pParametersAddInfo; 643 } VkVideoEncodeH265SessionParametersCreateInfoEXT; 644 645 typedef struct VkVideoEncodeH265DpbSlotInfoEXT { 646 VkStructureType sType; 647 const void* pNext; 648 int8_t slotIndex; 649 const StdVideoEncodeH265ReferenceInfo* pStdReferenceInfo; 650 } VkVideoEncodeH265DpbSlotInfoEXT; 651 652 typedef struct VkVideoEncodeH265ReferenceListsEXT { 653 VkStructureType sType; 654 const void* pNext; 655 uint8_t referenceList0EntryCount; 656 const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList0Entries; 657 uint8_t referenceList1EntryCount; 658 const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList1Entries; 659 const StdVideoEncodeH265ReferenceModifications* pReferenceModifications; 660 } VkVideoEncodeH265ReferenceListsEXT; 661 662 typedef struct VkVideoEncodeH265NaluSliceEXT { 663 VkStructureType sType; 664 const void* pNext; 665 uint32_t ctbCount; 666 const VkVideoEncodeH265ReferenceListsEXT* pReferenceFinalLists; 667 const StdVideoEncodeH265SliceHeader* pSliceHeaderStd; 668 } VkVideoEncodeH265NaluSliceEXT; 669 670 typedef struct VkVideoEncodeH265VclFrameInfoEXT { 671 VkStructureType sType; 672 const void* pNext; 673 const VkVideoEncodeH265ReferenceListsEXT* pReferenceFinalLists; 674 uint32_t naluSliceEntryCount; 675 const VkVideoEncodeH265NaluSliceEXT* pNaluSliceEntries; 676 const StdVideoEncodeH265PictureInfo* pCurrentPictureInfo; 677 } VkVideoEncodeH265VclFrameInfoEXT; 678 679 typedef struct VkVideoEncodeH265EmitPictureParametersEXT { 680 VkStructureType sType; 681 const void* pNext; 682 uint8_t vpsId; 683 uint8_t spsId; 684 VkBool32 emitVpsEnable; 685 VkBool32 emitSpsEnable; 686 uint32_t ppsIdEntryCount; 687 const uint8_t* ppsIdEntries; 688 } VkVideoEncodeH265EmitPictureParametersEXT; 689 690 typedef struct VkVideoEncodeH265ProfileEXT { 691 VkStructureType sType; 692 const void* pNext; 693 StdVideoH265ProfileIdc stdProfileIdc; 694 } VkVideoEncodeH265ProfileEXT; 695 696 697 698 #define VK_EXT_video_decode_h264 1 699 #include "vk_video/vulkan_video_codec_h264std_decode.h" 700 #define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 3 701 #define VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME "VK_EXT_video_decode_h264" 702 703 typedef enum VkVideoDecodeH264PictureLayoutFlagBitsEXT { 704 VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT = 0, 705 VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT = 0x00000001, 706 VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT = 0x00000002, 707 VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 708 } VkVideoDecodeH264PictureLayoutFlagBitsEXT; 709 typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsEXT; 710 typedef VkFlags VkVideoDecodeH264CreateFlagsEXT; 711 typedef struct VkVideoDecodeH264ProfileEXT { 712 VkStructureType sType; 713 const void* pNext; 714 StdVideoH264ProfileIdc stdProfileIdc; 715 VkVideoDecodeH264PictureLayoutFlagsEXT pictureLayout; 716 } VkVideoDecodeH264ProfileEXT; 717 718 typedef struct VkVideoDecodeH264CapabilitiesEXT { 719 VkStructureType sType; 720 void* pNext; 721 uint32_t maxLevel; 722 VkOffset2D fieldOffsetGranularity; 723 VkExtensionProperties stdExtensionVersion; 724 } VkVideoDecodeH264CapabilitiesEXT; 725 726 typedef struct VkVideoDecodeH264SessionCreateInfoEXT { 727 VkStructureType sType; 728 const void* pNext; 729 VkVideoDecodeH264CreateFlagsEXT flags; 730 const VkExtensionProperties* pStdExtensionVersion; 731 } VkVideoDecodeH264SessionCreateInfoEXT; 732 733 typedef struct VkVideoDecodeH264SessionParametersAddInfoEXT { 734 VkStructureType sType; 735 const void* pNext; 736 uint32_t spsStdCount; 737 const StdVideoH264SequenceParameterSet* pSpsStd; 738 uint32_t ppsStdCount; 739 const StdVideoH264PictureParameterSet* pPpsStd; 740 } VkVideoDecodeH264SessionParametersAddInfoEXT; 741 742 typedef struct VkVideoDecodeH264SessionParametersCreateInfoEXT { 743 VkStructureType sType; 744 const void* pNext; 745 uint32_t maxSpsStdCount; 746 uint32_t maxPpsStdCount; 747 const VkVideoDecodeH264SessionParametersAddInfoEXT* pParametersAddInfo; 748 } VkVideoDecodeH264SessionParametersCreateInfoEXT; 749 750 typedef struct VkVideoDecodeH264PictureInfoEXT { 751 VkStructureType sType; 752 const void* pNext; 753 const StdVideoDecodeH264PictureInfo* pStdPictureInfo; 754 uint32_t slicesCount; 755 const uint32_t* pSlicesDataOffsets; 756 } VkVideoDecodeH264PictureInfoEXT; 757 758 typedef struct VkVideoDecodeH264MvcEXT { 759 VkStructureType sType; 760 const void* pNext; 761 const StdVideoDecodeH264Mvc* pStdMvc; 762 } VkVideoDecodeH264MvcEXT; 763 764 typedef struct VkVideoDecodeH264DpbSlotInfoEXT { 765 VkStructureType sType; 766 const void* pNext; 767 const StdVideoDecodeH264ReferenceInfo* pStdReferenceInfo; 768 } VkVideoDecodeH264DpbSlotInfoEXT; 769 770 771 772 #define VK_EXT_video_decode_h265 1 773 #include "vk_video/vulkan_video_codec_h265std_decode.h" 774 #define VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION 1 775 #define VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME "VK_EXT_video_decode_h265" 776 typedef VkFlags VkVideoDecodeH265CreateFlagsEXT; 777 typedef struct VkVideoDecodeH265ProfileEXT { 778 VkStructureType sType; 779 const void* pNext; 780 StdVideoH265ProfileIdc stdProfileIdc; 781 } VkVideoDecodeH265ProfileEXT; 782 783 typedef struct VkVideoDecodeH265CapabilitiesEXT { 784 VkStructureType sType; 785 void* pNext; 786 uint32_t maxLevel; 787 VkExtensionProperties stdExtensionVersion; 788 } VkVideoDecodeH265CapabilitiesEXT; 789 790 typedef struct VkVideoDecodeH265SessionCreateInfoEXT { 791 VkStructureType sType; 792 const void* pNext; 793 VkVideoDecodeH265CreateFlagsEXT flags; 794 const VkExtensionProperties* pStdExtensionVersion; 795 } VkVideoDecodeH265SessionCreateInfoEXT; 796 797 typedef struct VkVideoDecodeH265SessionParametersAddInfoEXT { 798 VkStructureType sType; 799 const void* pNext; 800 uint32_t spsStdCount; 801 const StdVideoH265SequenceParameterSet* pSpsStd; 802 uint32_t ppsStdCount; 803 const StdVideoH265PictureParameterSet* pPpsStd; 804 } VkVideoDecodeH265SessionParametersAddInfoEXT; 805 806 typedef struct VkVideoDecodeH265SessionParametersCreateInfoEXT { 807 VkStructureType sType; 808 const void* pNext; 809 uint32_t maxSpsStdCount; 810 uint32_t maxPpsStdCount; 811 const VkVideoDecodeH265SessionParametersAddInfoEXT* pParametersAddInfo; 812 } VkVideoDecodeH265SessionParametersCreateInfoEXT; 813 814 typedef struct VkVideoDecodeH265PictureInfoEXT { 815 VkStructureType sType; 816 const void* pNext; 817 StdVideoDecodeH265PictureInfo* pStdPictureInfo; 818 uint32_t slicesCount; 819 const uint32_t* pSlicesDataOffsets; 820 } VkVideoDecodeH265PictureInfoEXT; 821 822 typedef struct VkVideoDecodeH265DpbSlotInfoEXT { 823 VkStructureType sType; 824 const void* pNext; 825 const StdVideoDecodeH265ReferenceInfo* pStdReferenceInfo; 826 } VkVideoDecodeH265DpbSlotInfoEXT; 827 828 829 #ifdef __cplusplus 830 } 831 #endif 832 833 #endif 834