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_DECODE_H264_BIT_EXT = 0x00000001, 42 #endif 43 #ifdef VK_ENABLE_BETA_EXTENSIONS 44 VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT = 0x00000002, 45 #endif 46 VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 47 } VkVideoCodecOperationFlagBitsKHR; 48 typedef VkFlags VkVideoCodecOperationFlagsKHR; 49 50 typedef enum VkVideoChromaSubsamplingFlagBitsKHR { 51 VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR = 0, 52 VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0x00000001, 53 VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0x00000002, 54 VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0x00000004, 55 VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x00000008, 56 VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 57 } VkVideoChromaSubsamplingFlagBitsKHR; 58 typedef VkFlags VkVideoChromaSubsamplingFlagsKHR; 59 60 typedef enum VkVideoComponentBitDepthFlagBitsKHR { 61 VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0, 62 VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0x00000001, 63 VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0x00000004, 64 VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x00000010, 65 VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 66 } VkVideoComponentBitDepthFlagBitsKHR; 67 typedef VkFlags VkVideoComponentBitDepthFlagsKHR; 68 69 typedef enum VkVideoCapabilityFlagBitsKHR { 70 VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001, 71 VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002, 72 VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 73 } VkVideoCapabilityFlagBitsKHR; 74 typedef VkFlags VkVideoCapabilityFlagsKHR; 75 76 typedef enum VkVideoSessionCreateFlagBitsKHR { 77 VK_VIDEO_SESSION_CREATE_DEFAULT_KHR = 0, 78 VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001, 79 VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 80 } VkVideoSessionCreateFlagBitsKHR; 81 typedef VkFlags VkVideoSessionCreateFlagsKHR; 82 typedef VkFlags VkVideoBeginCodingFlagsKHR; 83 typedef VkFlags VkVideoEndCodingFlagsKHR; 84 85 typedef enum VkVideoCodingControlFlagBitsKHR { 86 VK_VIDEO_CODING_CONTROL_DEFAULT_KHR = 0, 87 VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0x00000001, 88 VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 89 } VkVideoCodingControlFlagBitsKHR; 90 typedef VkFlags VkVideoCodingControlFlagsKHR; 91 92 typedef enum VkVideoCodingQualityPresetFlagBitsKHR { 93 VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR = 0x00000001, 94 VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR = 0x00000002, 95 VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR = 0x00000004, 96 VK_VIDEO_CODING_QUALITY_PRESET_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 97 } VkVideoCodingQualityPresetFlagBitsKHR; 98 typedef VkFlags VkVideoCodingQualityPresetFlagsKHR; 99 typedef struct VkVideoQueueFamilyProperties2KHR { 100 VkStructureType sType; 101 void* pNext; 102 VkVideoCodecOperationFlagsKHR videoCodecOperations; 103 } VkVideoQueueFamilyProperties2KHR; 104 105 typedef struct VkVideoProfileKHR { 106 VkStructureType sType; 107 void* pNext; 108 VkVideoCodecOperationFlagBitsKHR videoCodecOperation; 109 VkVideoChromaSubsamplingFlagsKHR chromaSubsampling; 110 VkVideoComponentBitDepthFlagsKHR lumaBitDepth; 111 VkVideoComponentBitDepthFlagsKHR chromaBitDepth; 112 } VkVideoProfileKHR; 113 114 typedef struct VkVideoProfilesKHR { 115 VkStructureType sType; 116 void* pNext; 117 uint32_t profileCount; 118 const VkVideoProfileKHR* pProfiles; 119 } VkVideoProfilesKHR; 120 121 typedef struct VkVideoCapabilitiesKHR { 122 VkStructureType sType; 123 void* pNext; 124 VkVideoCapabilityFlagsKHR capabilityFlags; 125 VkDeviceSize minBitstreamBufferOffsetAlignment; 126 VkDeviceSize minBitstreamBufferSizeAlignment; 127 VkExtent2D videoPictureExtentGranularity; 128 VkExtent2D minExtent; 129 VkExtent2D maxExtent; 130 uint32_t maxReferencePicturesSlotsCount; 131 uint32_t maxReferencePicturesActiveCount; 132 } VkVideoCapabilitiesKHR; 133 134 typedef struct VkPhysicalDeviceVideoFormatInfoKHR { 135 VkStructureType sType; 136 void* pNext; 137 VkImageUsageFlags imageUsage; 138 const VkVideoProfilesKHR* pVideoProfiles; 139 } VkPhysicalDeviceVideoFormatInfoKHR; 140 141 typedef struct VkVideoFormatPropertiesKHR { 142 VkStructureType sType; 143 void* pNext; 144 VkFormat format; 145 } VkVideoFormatPropertiesKHR; 146 147 typedef struct VkVideoPictureResourceKHR { 148 VkStructureType sType; 149 const void* pNext; 150 VkOffset2D codedOffset; 151 VkExtent2D codedExtent; 152 uint32_t baseArrayLayer; 153 VkImageView imageViewBinding; 154 } VkVideoPictureResourceKHR; 155 156 typedef struct VkVideoReferenceSlotKHR { 157 VkStructureType sType; 158 const void* pNext; 159 int8_t slotIndex; 160 const VkVideoPictureResourceKHR* pPictureResource; 161 } VkVideoReferenceSlotKHR; 162 163 typedef struct VkVideoGetMemoryPropertiesKHR { 164 VkStructureType sType; 165 const void* pNext; 166 uint32_t memoryBindIndex; 167 VkMemoryRequirements2* pMemoryRequirements; 168 } VkVideoGetMemoryPropertiesKHR; 169 170 typedef struct VkVideoBindMemoryKHR { 171 VkStructureType sType; 172 const void* pNext; 173 uint32_t memoryBindIndex; 174 VkDeviceMemory memory; 175 VkDeviceSize memoryOffset; 176 VkDeviceSize memorySize; 177 } VkVideoBindMemoryKHR; 178 179 typedef struct VkVideoSessionCreateInfoKHR { 180 VkStructureType sType; 181 const void* pNext; 182 uint32_t queueFamilyIndex; 183 VkVideoSessionCreateFlagsKHR flags; 184 const VkVideoProfileKHR* pVideoProfile; 185 VkFormat pictureFormat; 186 VkExtent2D maxCodedExtent; 187 VkFormat referencePicturesFormat; 188 uint32_t maxReferencePicturesSlotsCount; 189 uint32_t maxReferencePicturesActiveCount; 190 } VkVideoSessionCreateInfoKHR; 191 192 typedef struct VkVideoSessionParametersCreateInfoKHR { 193 VkStructureType sType; 194 const void* pNext; 195 VkVideoSessionParametersKHR videoSessionParametersTemplate; 196 VkVideoSessionKHR videoSession; 197 } VkVideoSessionParametersCreateInfoKHR; 198 199 typedef struct VkVideoSessionParametersUpdateInfoKHR { 200 VkStructureType sType; 201 const void* pNext; 202 uint32_t updateSequenceCount; 203 } VkVideoSessionParametersUpdateInfoKHR; 204 205 typedef struct VkVideoBeginCodingInfoKHR { 206 VkStructureType sType; 207 const void* pNext; 208 VkVideoBeginCodingFlagsKHR flags; 209 VkVideoCodingQualityPresetFlagsKHR codecQualityPreset; 210 VkVideoSessionKHR videoSession; 211 VkVideoSessionParametersKHR videoSessionParameters; 212 uint32_t referenceSlotCount; 213 const VkVideoReferenceSlotKHR* pReferenceSlots; 214 } VkVideoBeginCodingInfoKHR; 215 216 typedef struct VkVideoEndCodingInfoKHR { 217 VkStructureType sType; 218 const void* pNext; 219 VkVideoEndCodingFlagsKHR flags; 220 } VkVideoEndCodingInfoKHR; 221 222 typedef struct VkVideoCodingControlInfoKHR { 223 VkStructureType sType; 224 const void* pNext; 225 VkVideoCodingControlFlagsKHR flags; 226 } VkVideoCodingControlInfoKHR; 227 228 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities); 229 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties); 230 typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession); 231 typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator); 232 typedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements); 233 typedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories); 234 typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters); 235 typedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo); 236 typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator); 237 typedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo); 238 typedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo); 239 typedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo); 240 241 #ifndef VK_NO_PROTOTYPES 242 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR( 243 VkPhysicalDevice physicalDevice, 244 const VkVideoProfileKHR* pVideoProfile, 245 VkVideoCapabilitiesKHR* pCapabilities); 246 247 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR( 248 VkPhysicalDevice physicalDevice, 249 const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, 250 uint32_t* pVideoFormatPropertyCount, 251 VkVideoFormatPropertiesKHR* pVideoFormatProperties); 252 253 VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR( 254 VkDevice device, 255 const VkVideoSessionCreateInfoKHR* pCreateInfo, 256 const VkAllocationCallbacks* pAllocator, 257 VkVideoSessionKHR* pVideoSession); 258 259 VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR( 260 VkDevice device, 261 VkVideoSessionKHR videoSession, 262 const VkAllocationCallbacks* pAllocator); 263 264 VKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR( 265 VkDevice device, 266 VkVideoSessionKHR videoSession, 267 uint32_t* pVideoSessionMemoryRequirementsCount, 268 VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements); 269 270 VKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR( 271 VkDevice device, 272 VkVideoSessionKHR videoSession, 273 uint32_t videoSessionBindMemoryCount, 274 const VkVideoBindMemoryKHR* pVideoSessionBindMemories); 275 276 VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR( 277 VkDevice device, 278 const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, 279 const VkAllocationCallbacks* pAllocator, 280 VkVideoSessionParametersKHR* pVideoSessionParameters); 281 282 VKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR( 283 VkDevice device, 284 VkVideoSessionParametersKHR videoSessionParameters, 285 const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo); 286 287 VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR( 288 VkDevice device, 289 VkVideoSessionParametersKHR videoSessionParameters, 290 const VkAllocationCallbacks* pAllocator); 291 292 VKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR( 293 VkCommandBuffer commandBuffer, 294 const VkVideoBeginCodingInfoKHR* pBeginInfo); 295 296 VKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR( 297 VkCommandBuffer commandBuffer, 298 const VkVideoEndCodingInfoKHR* pEndCodingInfo); 299 300 VKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR( 301 VkCommandBuffer commandBuffer, 302 const VkVideoCodingControlInfoKHR* pCodingControlInfo); 303 #endif 304 305 306 #define VK_KHR_video_decode_queue 1 307 #define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 2 308 #define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue" 309 310 typedef enum VkVideoDecodeFlagBitsKHR { 311 VK_VIDEO_DECODE_DEFAULT_KHR = 0, 312 VK_VIDEO_DECODE_RESERVED_0_BIT_KHR = 0x00000001, 313 VK_VIDEO_DECODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 314 } VkVideoDecodeFlagBitsKHR; 315 typedef VkFlags VkVideoDecodeFlagsKHR; 316 typedef struct VkVideoDecodeInfoKHR { 317 VkStructureType sType; 318 const void* pNext; 319 VkVideoDecodeFlagsKHR flags; 320 VkOffset2D codedOffset; 321 VkExtent2D codedExtent; 322 VkBuffer srcBuffer; 323 VkDeviceSize srcBufferOffset; 324 VkDeviceSize srcBufferRange; 325 VkVideoPictureResourceKHR dstPictureResource; 326 const VkVideoReferenceSlotKHR* pSetupReferenceSlot; 327 uint32_t referenceSlotCount; 328 const VkVideoReferenceSlotKHR* pReferenceSlots; 329 } VkVideoDecodeInfoKHR; 330 331 typedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo); 332 333 #ifndef VK_NO_PROTOTYPES 334 VKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR( 335 VkCommandBuffer commandBuffer, 336 const VkVideoDecodeInfoKHR* pFrameInfo); 337 #endif 338 339 340 #define VK_KHR_portability_subset 1 341 #define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1 342 #define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset" 343 typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR { 344 VkStructureType sType; 345 void* pNext; 346 VkBool32 constantAlphaColorBlendFactors; 347 VkBool32 events; 348 VkBool32 imageViewFormatReinterpretation; 349 VkBool32 imageViewFormatSwizzle; 350 VkBool32 imageView2DOn3DImage; 351 VkBool32 multisampleArrayImage; 352 VkBool32 mutableComparisonSamplers; 353 VkBool32 pointPolygons; 354 VkBool32 samplerMipLodBias; 355 VkBool32 separateStencilMaskRef; 356 VkBool32 shaderSampleRateInterpolationFunctions; 357 VkBool32 tessellationIsolines; 358 VkBool32 tessellationPointMode; 359 VkBool32 triangleFans; 360 VkBool32 vertexAttributeAccessBeyondStride; 361 } VkPhysicalDevicePortabilitySubsetFeaturesKHR; 362 363 typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR { 364 VkStructureType sType; 365 void* pNext; 366 uint32_t minVertexInputBindingStrideAlignment; 367 } VkPhysicalDevicePortabilitySubsetPropertiesKHR; 368 369 370 371 #define VK_KHR_video_encode_queue 1 372 #define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 3 373 #define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue" 374 375 typedef enum VkVideoEncodeFlagBitsKHR { 376 VK_VIDEO_ENCODE_DEFAULT_KHR = 0, 377 VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR = 0x00000001, 378 VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 379 } VkVideoEncodeFlagBitsKHR; 380 typedef VkFlags VkVideoEncodeFlagsKHR; 381 382 typedef enum VkVideoEncodeRateControlFlagBitsKHR { 383 VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR = 0, 384 VK_VIDEO_ENCODE_RATE_CONTROL_RESET_BIT_KHR = 0x00000001, 385 VK_VIDEO_ENCODE_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 386 } VkVideoEncodeRateControlFlagBitsKHR; 387 typedef VkFlags VkVideoEncodeRateControlFlagsKHR; 388 389 typedef enum VkVideoEncodeRateControlModeFlagBitsKHR { 390 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR = 0, 391 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 1, 392 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 2, 393 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 394 } VkVideoEncodeRateControlModeFlagBitsKHR; 395 typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR; 396 typedef struct VkVideoEncodeInfoKHR { 397 VkStructureType sType; 398 const void* pNext; 399 VkVideoEncodeFlagsKHR flags; 400 uint32_t qualityLevel; 401 VkExtent2D codedExtent; 402 VkBuffer dstBitstreamBuffer; 403 VkDeviceSize dstBitstreamBufferOffset; 404 VkDeviceSize dstBitstreamBufferMaxRange; 405 VkVideoPictureResourceKHR srcPictureResource; 406 const VkVideoReferenceSlotKHR* pSetupReferenceSlot; 407 uint32_t referenceSlotCount; 408 const VkVideoReferenceSlotKHR* pReferenceSlots; 409 } VkVideoEncodeInfoKHR; 410 411 typedef struct VkVideoEncodeRateControlInfoKHR { 412 VkStructureType sType; 413 const void* pNext; 414 VkVideoEncodeRateControlFlagsKHR flags; 415 VkVideoEncodeRateControlModeFlagBitsKHR rateControlMode; 416 uint32_t averageBitrate; 417 uint16_t peakToAverageBitrateRatio; 418 uint16_t frameRateNumerator; 419 uint16_t frameRateDenominator; 420 uint32_t virtualBufferSizeInMs; 421 } VkVideoEncodeRateControlInfoKHR; 422 423 typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo); 424 425 #ifndef VK_NO_PROTOTYPES 426 VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR( 427 VkCommandBuffer commandBuffer, 428 const VkVideoEncodeInfoKHR* pEncodeInfo); 429 #endif 430 431 432 #define VK_EXT_video_encode_h264 1 433 #include "vk_video/vulkan_video_codec_h264std.h" 434 #include "vk_video/vulkan_video_codec_h264std_encode.h" 435 #define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 2 436 #define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264" 437 438 typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT { 439 VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00000001, 440 VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00000002, 441 VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT = 0x00000004, 442 VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00000008, 443 VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000010, 444 VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000020, 445 VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00000040, 446 VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00000080, 447 VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00000100, 448 VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00000200, 449 VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT = 0x00000400, 450 VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 451 } VkVideoEncodeH264CapabilityFlagBitsEXT; 452 typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT; 453 454 typedef enum VkVideoEncodeH264InputModeFlagBitsEXT { 455 VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 0x00000001, 456 VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 0x00000002, 457 VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, 458 VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 459 } VkVideoEncodeH264InputModeFlagBitsEXT; 460 typedef VkFlags VkVideoEncodeH264InputModeFlagsEXT; 461 462 typedef enum VkVideoEncodeH264OutputModeFlagBitsEXT { 463 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001, 464 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002, 465 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, 466 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 467 } VkVideoEncodeH264OutputModeFlagBitsEXT; 468 typedef VkFlags VkVideoEncodeH264OutputModeFlagsEXT; 469 470 typedef enum VkVideoEncodeH264CreateFlagBitsEXT { 471 VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT = 0, 472 VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT = 0x00000001, 473 VK_VIDEO_ENCODE_H264_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 474 } VkVideoEncodeH264CreateFlagBitsEXT; 475 typedef VkFlags VkVideoEncodeH264CreateFlagsEXT; 476 typedef struct VkVideoEncodeH264CapabilitiesEXT { 477 VkStructureType sType; 478 const void* pNext; 479 VkVideoEncodeH264CapabilityFlagsEXT flags; 480 VkVideoEncodeH264InputModeFlagsEXT inputModeFlags; 481 VkVideoEncodeH264OutputModeFlagsEXT outputModeFlags; 482 VkExtent2D minPictureSizeInMbs; 483 VkExtent2D maxPictureSizeInMbs; 484 VkExtent2D inputImageDataAlignment; 485 uint8_t maxNumL0ReferenceForP; 486 uint8_t maxNumL0ReferenceForB; 487 uint8_t maxNumL1Reference; 488 uint8_t qualityLevelCount; 489 VkExtensionProperties stdExtensionVersion; 490 } VkVideoEncodeH264CapabilitiesEXT; 491 492 typedef struct VkVideoEncodeH264SessionCreateInfoEXT { 493 VkStructureType sType; 494 const void* pNext; 495 VkVideoEncodeH264CreateFlagsEXT flags; 496 VkExtent2D maxPictureSizeInMbs; 497 const VkExtensionProperties* pStdExtensionVersion; 498 } VkVideoEncodeH264SessionCreateInfoEXT; 499 500 typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT { 501 VkStructureType sType; 502 const void* pNext; 503 uint32_t spsStdCount; 504 const StdVideoH264SequenceParameterSet* pSpsStd; 505 uint32_t ppsStdCount; 506 const StdVideoH264PictureParameterSet* pPpsStd; 507 } VkVideoEncodeH264SessionParametersAddInfoEXT; 508 509 typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT { 510 VkStructureType sType; 511 const void* pNext; 512 uint32_t maxSpsStdCount; 513 uint32_t maxPpsStdCount; 514 const VkVideoEncodeH264SessionParametersAddInfoEXT* pParametersAddInfo; 515 } VkVideoEncodeH264SessionParametersCreateInfoEXT; 516 517 typedef struct VkVideoEncodeH264DpbSlotInfoEXT { 518 VkStructureType sType; 519 const void* pNext; 520 int8_t slotIndex; 521 const StdVideoEncodeH264PictureInfo* pStdPictureInfo; 522 } VkVideoEncodeH264DpbSlotInfoEXT; 523 524 typedef struct VkVideoEncodeH264NaluSliceEXT { 525 VkStructureType sType; 526 const void* pNext; 527 const StdVideoEncodeH264SliceHeader* pSliceHeaderStd; 528 uint32_t mbCount; 529 uint8_t refFinalList0EntryCount; 530 const VkVideoEncodeH264DpbSlotInfoEXT* pRefFinalList0Entries; 531 uint8_t refFinalList1EntryCount; 532 const VkVideoEncodeH264DpbSlotInfoEXT* pRefFinalList1Entries; 533 uint32_t precedingNaluBytes; 534 uint8_t minQp; 535 uint8_t maxQp; 536 } VkVideoEncodeH264NaluSliceEXT; 537 538 typedef struct VkVideoEncodeH264VclFrameInfoEXT { 539 VkStructureType sType; 540 const void* pNext; 541 uint8_t refDefaultFinalList0EntryCount; 542 const VkVideoEncodeH264DpbSlotInfoEXT* pRefDefaultFinalList0Entries; 543 uint8_t refDefaultFinalList1EntryCount; 544 const VkVideoEncodeH264DpbSlotInfoEXT* pRefDefaultFinalList1Entries; 545 uint32_t naluSliceEntryCount; 546 const VkVideoEncodeH264NaluSliceEXT* pNaluSliceEntries; 547 const VkVideoEncodeH264DpbSlotInfoEXT* pCurrentPictureInfo; 548 } VkVideoEncodeH264VclFrameInfoEXT; 549 550 typedef struct VkVideoEncodeH264EmitPictureParametersEXT { 551 VkStructureType sType; 552 const void* pNext; 553 uint8_t spsId; 554 VkBool32 emitSpsEnable; 555 uint32_t ppsIdEntryCount; 556 const uint8_t* ppsIdEntries; 557 } VkVideoEncodeH264EmitPictureParametersEXT; 558 559 typedef struct VkVideoEncodeH264ProfileEXT { 560 VkStructureType sType; 561 const void* pNext; 562 StdVideoH264ProfileIdc stdProfileIdc; 563 } VkVideoEncodeH264ProfileEXT; 564 565 566 567 #define VK_EXT_video_decode_h264 1 568 #include "vk_video/vulkan_video_codec_h264std_decode.h" 569 #define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 3 570 #define VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME "VK_EXT_video_decode_h264" 571 572 typedef enum VkVideoDecodeH264PictureLayoutFlagBitsEXT { 573 VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT = 0, 574 VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT = 0x00000001, 575 VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT = 0x00000002, 576 VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 577 } VkVideoDecodeH264PictureLayoutFlagBitsEXT; 578 typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsEXT; 579 typedef VkFlags VkVideoDecodeH264CreateFlagsEXT; 580 typedef struct VkVideoDecodeH264ProfileEXT { 581 VkStructureType sType; 582 const void* pNext; 583 StdVideoH264ProfileIdc stdProfileIdc; 584 VkVideoDecodeH264PictureLayoutFlagsEXT pictureLayout; 585 } VkVideoDecodeH264ProfileEXT; 586 587 typedef struct VkVideoDecodeH264CapabilitiesEXT { 588 VkStructureType sType; 589 void* pNext; 590 uint32_t maxLevel; 591 VkOffset2D fieldOffsetGranularity; 592 VkExtensionProperties stdExtensionVersion; 593 } VkVideoDecodeH264CapabilitiesEXT; 594 595 typedef struct VkVideoDecodeH264SessionCreateInfoEXT { 596 VkStructureType sType; 597 const void* pNext; 598 VkVideoDecodeH264CreateFlagsEXT flags; 599 const VkExtensionProperties* pStdExtensionVersion; 600 } VkVideoDecodeH264SessionCreateInfoEXT; 601 602 typedef struct VkVideoDecodeH264SessionParametersAddInfoEXT { 603 VkStructureType sType; 604 const void* pNext; 605 uint32_t spsStdCount; 606 const StdVideoH264SequenceParameterSet* pSpsStd; 607 uint32_t ppsStdCount; 608 const StdVideoH264PictureParameterSet* pPpsStd; 609 } VkVideoDecodeH264SessionParametersAddInfoEXT; 610 611 typedef struct VkVideoDecodeH264SessionParametersCreateInfoEXT { 612 VkStructureType sType; 613 const void* pNext; 614 uint32_t maxSpsStdCount; 615 uint32_t maxPpsStdCount; 616 const VkVideoDecodeH264SessionParametersAddInfoEXT* pParametersAddInfo; 617 } VkVideoDecodeH264SessionParametersCreateInfoEXT; 618 619 typedef struct VkVideoDecodeH264PictureInfoEXT { 620 VkStructureType sType; 621 const void* pNext; 622 const StdVideoDecodeH264PictureInfo* pStdPictureInfo; 623 uint32_t slicesCount; 624 const uint32_t* pSlicesDataOffsets; 625 } VkVideoDecodeH264PictureInfoEXT; 626 627 typedef struct VkVideoDecodeH264MvcEXT { 628 VkStructureType sType; 629 const void* pNext; 630 const StdVideoDecodeH264Mvc* pStdMvc; 631 } VkVideoDecodeH264MvcEXT; 632 633 typedef struct VkVideoDecodeH264DpbSlotInfoEXT { 634 VkStructureType sType; 635 const void* pNext; 636 const StdVideoDecodeH264ReferenceInfo* pStdReferenceInfo; 637 } VkVideoDecodeH264DpbSlotInfoEXT; 638 639 640 641 #define VK_EXT_video_decode_h265 1 642 #include "vk_video/vulkan_video_codec_h265std.h" 643 #include "vk_video/vulkan_video_codec_h265std_decode.h" 644 #define VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION 1 645 #define VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME "VK_EXT_video_decode_h265" 646 typedef VkFlags VkVideoDecodeH265CreateFlagsEXT; 647 typedef struct VkVideoDecodeH265ProfileEXT { 648 VkStructureType sType; 649 const void* pNext; 650 StdVideoH265ProfileIdc stdProfileIdc; 651 } VkVideoDecodeH265ProfileEXT; 652 653 typedef struct VkVideoDecodeH265CapabilitiesEXT { 654 VkStructureType sType; 655 void* pNext; 656 uint32_t maxLevel; 657 VkExtensionProperties stdExtensionVersion; 658 } VkVideoDecodeH265CapabilitiesEXT; 659 660 typedef struct VkVideoDecodeH265SessionCreateInfoEXT { 661 VkStructureType sType; 662 const void* pNext; 663 VkVideoDecodeH265CreateFlagsEXT flags; 664 const VkExtensionProperties* pStdExtensionVersion; 665 } VkVideoDecodeH265SessionCreateInfoEXT; 666 667 typedef struct VkVideoDecodeH265SessionParametersAddInfoEXT { 668 VkStructureType sType; 669 const void* pNext; 670 uint32_t spsStdCount; 671 const StdVideoH265SequenceParameterSet* pSpsStd; 672 uint32_t ppsStdCount; 673 const StdVideoH265PictureParameterSet* pPpsStd; 674 } VkVideoDecodeH265SessionParametersAddInfoEXT; 675 676 typedef struct VkVideoDecodeH265SessionParametersCreateInfoEXT { 677 VkStructureType sType; 678 const void* pNext; 679 uint32_t maxSpsStdCount; 680 uint32_t maxPpsStdCount; 681 const VkVideoDecodeH265SessionParametersAddInfoEXT* pParametersAddInfo; 682 } VkVideoDecodeH265SessionParametersCreateInfoEXT; 683 684 typedef struct VkVideoDecodeH265PictureInfoEXT { 685 VkStructureType sType; 686 const void* pNext; 687 StdVideoDecodeH265PictureInfo* pStdPictureInfo; 688 uint32_t slicesCount; 689 const uint32_t* pSlicesDataOffsets; 690 } VkVideoDecodeH265PictureInfoEXT; 691 692 typedef struct VkVideoDecodeH265DpbSlotInfoEXT { 693 VkStructureType sType; 694 const void* pNext; 695 const StdVideoDecodeH265ReferenceInfo* pStdReferenceInfo; 696 } VkVideoDecodeH265DpbSlotInfoEXT; 697 698 699 #ifdef __cplusplus 700 } 701 #endif 702 703 #endif 704