vulkan_beta.h revision 7ec681f3
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 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 2 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_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; 48typedef VkFlags VkVideoCodecOperationFlagsKHR; 49 50typedef 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; 58typedef VkFlags VkVideoChromaSubsamplingFlagsKHR; 59 60typedef 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; 67typedef VkFlags VkVideoComponentBitDepthFlagsKHR; 68 69typedef 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; 74typedef VkFlags VkVideoCapabilityFlagsKHR; 75 76typedef 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; 81typedef VkFlags VkVideoSessionCreateFlagsKHR; 82typedef VkFlags VkVideoBeginCodingFlagsKHR; 83typedef VkFlags VkVideoEndCodingFlagsKHR; 84 85typedef 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; 90typedef VkFlags VkVideoCodingControlFlagsKHR; 91 92typedef 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; 98typedef VkFlags VkVideoCodingQualityPresetFlagsKHR; 99typedef struct VkVideoQueueFamilyProperties2KHR { 100 VkStructureType sType; 101 void* pNext; 102 VkVideoCodecOperationFlagsKHR videoCodecOperations; 103} VkVideoQueueFamilyProperties2KHR; 104 105typedef struct VkVideoProfileKHR { 106 VkStructureType sType; 107 void* pNext; 108 VkVideoCodecOperationFlagBitsKHR videoCodecOperation; 109 VkVideoChromaSubsamplingFlagsKHR chromaSubsampling; 110 VkVideoComponentBitDepthFlagsKHR lumaBitDepth; 111 VkVideoComponentBitDepthFlagsKHR chromaBitDepth; 112} VkVideoProfileKHR; 113 114typedef struct VkVideoProfilesKHR { 115 VkStructureType sType; 116 void* pNext; 117 uint32_t profileCount; 118 const VkVideoProfileKHR* pProfiles; 119} VkVideoProfilesKHR; 120 121typedef 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 134typedef struct VkPhysicalDeviceVideoFormatInfoKHR { 135 VkStructureType sType; 136 void* pNext; 137 VkImageUsageFlags imageUsage; 138 const VkVideoProfilesKHR* pVideoProfiles; 139} VkPhysicalDeviceVideoFormatInfoKHR; 140 141typedef struct VkVideoFormatPropertiesKHR { 142 VkStructureType sType; 143 void* pNext; 144 VkFormat format; 145} VkVideoFormatPropertiesKHR; 146 147typedef 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 156typedef struct VkVideoReferenceSlotKHR { 157 VkStructureType sType; 158 const void* pNext; 159 int8_t slotIndex; 160 const VkVideoPictureResourceKHR* pPictureResource; 161} VkVideoReferenceSlotKHR; 162 163typedef struct VkVideoGetMemoryPropertiesKHR { 164 VkStructureType sType; 165 const void* pNext; 166 uint32_t memoryBindIndex; 167 VkMemoryRequirements2* pMemoryRequirements; 168} VkVideoGetMemoryPropertiesKHR; 169 170typedef 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 179typedef 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 192typedef struct VkVideoSessionParametersCreateInfoKHR { 193 VkStructureType sType; 194 const void* pNext; 195 VkVideoSessionParametersKHR videoSessionParametersTemplate; 196 VkVideoSessionKHR videoSession; 197} VkVideoSessionParametersCreateInfoKHR; 198 199typedef struct VkVideoSessionParametersUpdateInfoKHR { 200 VkStructureType sType; 201 const void* pNext; 202 uint32_t updateSequenceCount; 203} VkVideoSessionParametersUpdateInfoKHR; 204 205typedef 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 216typedef struct VkVideoEndCodingInfoKHR { 217 VkStructureType sType; 218 const void* pNext; 219 VkVideoEndCodingFlagsKHR flags; 220} VkVideoEndCodingInfoKHR; 221 222typedef struct VkVideoCodingControlInfoKHR { 223 VkStructureType sType; 224 const void* pNext; 225 VkVideoCodingControlFlagsKHR flags; 226} VkVideoCodingControlInfoKHR; 227 228typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities); 229typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties); 230typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession); 231typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator); 232typedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements); 233typedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories); 234typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters); 235typedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo); 236typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator); 237typedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo); 238typedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo); 239typedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo); 240 241#ifndef VK_NO_PROTOTYPES 242VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR( 243 VkPhysicalDevice physicalDevice, 244 const VkVideoProfileKHR* pVideoProfile, 245 VkVideoCapabilitiesKHR* pCapabilities); 246 247VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR( 248 VkPhysicalDevice physicalDevice, 249 const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, 250 uint32_t* pVideoFormatPropertyCount, 251 VkVideoFormatPropertiesKHR* pVideoFormatProperties); 252 253VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR( 254 VkDevice device, 255 const VkVideoSessionCreateInfoKHR* pCreateInfo, 256 const VkAllocationCallbacks* pAllocator, 257 VkVideoSessionKHR* pVideoSession); 258 259VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR( 260 VkDevice device, 261 VkVideoSessionKHR videoSession, 262 const VkAllocationCallbacks* pAllocator); 263 264VKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR( 265 VkDevice device, 266 VkVideoSessionKHR videoSession, 267 uint32_t* pVideoSessionMemoryRequirementsCount, 268 VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements); 269 270VKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR( 271 VkDevice device, 272 VkVideoSessionKHR videoSession, 273 uint32_t videoSessionBindMemoryCount, 274 const VkVideoBindMemoryKHR* pVideoSessionBindMemories); 275 276VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR( 277 VkDevice device, 278 const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, 279 const VkAllocationCallbacks* pAllocator, 280 VkVideoSessionParametersKHR* pVideoSessionParameters); 281 282VKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR( 283 VkDevice device, 284 VkVideoSessionParametersKHR videoSessionParameters, 285 const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo); 286 287VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR( 288 VkDevice device, 289 VkVideoSessionParametersKHR videoSessionParameters, 290 const VkAllocationCallbacks* pAllocator); 291 292VKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR( 293 VkCommandBuffer commandBuffer, 294 const VkVideoBeginCodingInfoKHR* pBeginInfo); 295 296VKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR( 297 VkCommandBuffer commandBuffer, 298 const VkVideoEndCodingInfoKHR* pEndCodingInfo); 299 300VKAPI_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 310typedef 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; 315typedef VkFlags VkVideoDecodeFlagsKHR; 316typedef 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 331typedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo); 332 333#ifndef VK_NO_PROTOTYPES 334VKAPI_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" 343typedef 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 363typedef 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 375typedef 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; 380typedef VkFlags VkVideoEncodeFlagsKHR; 381 382typedef 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; 387typedef VkFlags VkVideoEncodeRateControlFlagsKHR; 388 389typedef 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; 395typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR; 396typedef 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 411typedef 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 423typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo); 424 425#ifndef VK_NO_PROTOTYPES 426VKAPI_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 438typedef 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; 452typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT; 453 454typedef 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; 460typedef VkFlags VkVideoEncodeH264InputModeFlagsEXT; 461 462typedef 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; 468typedef VkFlags VkVideoEncodeH264OutputModeFlagsEXT; 469 470typedef 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; 475typedef VkFlags VkVideoEncodeH264CreateFlagsEXT; 476typedef 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 492typedef struct VkVideoEncodeH264SessionCreateInfoEXT { 493 VkStructureType sType; 494 const void* pNext; 495 VkVideoEncodeH264CreateFlagsEXT flags; 496 VkExtent2D maxPictureSizeInMbs; 497 const VkExtensionProperties* pStdExtensionVersion; 498} VkVideoEncodeH264SessionCreateInfoEXT; 499 500typedef 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 509typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT { 510 VkStructureType sType; 511 const void* pNext; 512 uint32_t maxSpsStdCount; 513 uint32_t maxPpsStdCount; 514 const VkVideoEncodeH264SessionParametersAddInfoEXT* pParametersAddInfo; 515} VkVideoEncodeH264SessionParametersCreateInfoEXT; 516 517typedef struct VkVideoEncodeH264DpbSlotInfoEXT { 518 VkStructureType sType; 519 const void* pNext; 520 int8_t slotIndex; 521 const StdVideoEncodeH264PictureInfo* pStdPictureInfo; 522} VkVideoEncodeH264DpbSlotInfoEXT; 523 524typedef 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 538typedef 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 550typedef 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 559typedef 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 572typedef 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; 578typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsEXT; 579typedef VkFlags VkVideoDecodeH264CreateFlagsEXT; 580typedef struct VkVideoDecodeH264ProfileEXT { 581 VkStructureType sType; 582 const void* pNext; 583 StdVideoH264ProfileIdc stdProfileIdc; 584 VkVideoDecodeH264PictureLayoutFlagsEXT pictureLayout; 585} VkVideoDecodeH264ProfileEXT; 586 587typedef struct VkVideoDecodeH264CapabilitiesEXT { 588 VkStructureType sType; 589 void* pNext; 590 uint32_t maxLevel; 591 VkOffset2D fieldOffsetGranularity; 592 VkExtensionProperties stdExtensionVersion; 593} VkVideoDecodeH264CapabilitiesEXT; 594 595typedef struct VkVideoDecodeH264SessionCreateInfoEXT { 596 VkStructureType sType; 597 const void* pNext; 598 VkVideoDecodeH264CreateFlagsEXT flags; 599 const VkExtensionProperties* pStdExtensionVersion; 600} VkVideoDecodeH264SessionCreateInfoEXT; 601 602typedef 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 611typedef struct VkVideoDecodeH264SessionParametersCreateInfoEXT { 612 VkStructureType sType; 613 const void* pNext; 614 uint32_t maxSpsStdCount; 615 uint32_t maxPpsStdCount; 616 const VkVideoDecodeH264SessionParametersAddInfoEXT* pParametersAddInfo; 617} VkVideoDecodeH264SessionParametersCreateInfoEXT; 618 619typedef 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 627typedef struct VkVideoDecodeH264MvcEXT { 628 VkStructureType sType; 629 const void* pNext; 630 const StdVideoDecodeH264Mvc* pStdMvc; 631} VkVideoDecodeH264MvcEXT; 632 633typedef 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" 646typedef VkFlags VkVideoDecodeH265CreateFlagsEXT; 647typedef struct VkVideoDecodeH265ProfileEXT { 648 VkStructureType sType; 649 const void* pNext; 650 StdVideoH265ProfileIdc stdProfileIdc; 651} VkVideoDecodeH265ProfileEXT; 652 653typedef struct VkVideoDecodeH265CapabilitiesEXT { 654 VkStructureType sType; 655 void* pNext; 656 uint32_t maxLevel; 657 VkExtensionProperties stdExtensionVersion; 658} VkVideoDecodeH265CapabilitiesEXT; 659 660typedef struct VkVideoDecodeH265SessionCreateInfoEXT { 661 VkStructureType sType; 662 const void* pNext; 663 VkVideoDecodeH265CreateFlagsEXT flags; 664 const VkExtensionProperties* pStdExtensionVersion; 665} VkVideoDecodeH265SessionCreateInfoEXT; 666 667typedef 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 676typedef struct VkVideoDecodeH265SessionParametersCreateInfoEXT { 677 VkStructureType sType; 678 const void* pNext; 679 uint32_t maxSpsStdCount; 680 uint32_t maxPpsStdCount; 681 const VkVideoDecodeH265SessionParametersAddInfoEXT* pParametersAddInfo; 682} VkVideoDecodeH265SessionParametersCreateInfoEXT; 683 684typedef struct VkVideoDecodeH265PictureInfoEXT { 685 VkStructureType sType; 686 const void* pNext; 687 StdVideoDecodeH265PictureInfo* pStdPictureInfo; 688 uint32_t slicesCount; 689 const uint32_t* pSlicesDataOffsets; 690} VkVideoDecodeH265PictureInfoEXT; 691 692typedef 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