934 lines
		
	
	
		
			42 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			934 lines
		
	
	
		
			42 KiB
		
	
	
	
		
			C
		
	
	
	
| #ifndef VULKAN_BETA_H_
 | |
| #define VULKAN_BETA_H_ 1
 | |
| 
 | |
| /*
 | |
| ** Copyright 2015-2021 The Khronos Group Inc.
 | |
| **
 | |
| ** SPDX-License-Identifier: Apache-2.0
 | |
| */
 | |
| 
 | |
| /*
 | |
| ** This header is generated from the Khronos Vulkan XML API Registry.
 | |
| **
 | |
| */
 | |
| 
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| 
 | |
| 
 | |
| #define VK_KHR_video_queue 1
 | |
| VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR)
 | |
| VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR)
 | |
| #define VK_KHR_VIDEO_QUEUE_SPEC_VERSION   2
 | |
| #define VK_KHR_VIDEO_QUEUE_EXTENSION_NAME "VK_KHR_video_queue"
 | |
| 
 | |
| typedef enum VkQueryResultStatusKHR {
 | |
|     VK_QUERY_RESULT_STATUS_ERROR_KHR = -1,
 | |
|     VK_QUERY_RESULT_STATUS_NOT_READY_KHR = 0,
 | |
|     VK_QUERY_RESULT_STATUS_COMPLETE_KHR = 1,
 | |
|     VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 0x7FFFFFFF
 | |
| } VkQueryResultStatusKHR;
 | |
| 
 | |
| typedef enum VkVideoCodecOperationFlagBitsKHR {
 | |
|     VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR = 0,
 | |
| #ifdef VK_ENABLE_BETA_EXTENSIONS
 | |
|     VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT = 0x00010000,
 | |
| #endif
 | |
| #ifdef VK_ENABLE_BETA_EXTENSIONS
 | |
|     VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT = 0x00020000,
 | |
| #endif
 | |
| #ifdef VK_ENABLE_BETA_EXTENSIONS
 | |
|     VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT = 0x00000001,
 | |
| #endif
 | |
| #ifdef VK_ENABLE_BETA_EXTENSIONS
 | |
|     VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT = 0x00000002,
 | |
| #endif
 | |
|     VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 | |
| } VkVideoCodecOperationFlagBitsKHR;
 | |
| typedef VkFlags VkVideoCodecOperationFlagsKHR;
 | |
| 
 | |
| typedef enum VkVideoChromaSubsamplingFlagBitsKHR {
 | |
|     VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR = 0,
 | |
|     VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0x00000001,
 | |
|     VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0x00000002,
 | |
|     VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0x00000004,
 | |
|     VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x00000008,
 | |
|     VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 | |
| } VkVideoChromaSubsamplingFlagBitsKHR;
 | |
| typedef VkFlags VkVideoChromaSubsamplingFlagsKHR;
 | |
| 
 | |
| typedef enum VkVideoComponentBitDepthFlagBitsKHR {
 | |
|     VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0,
 | |
|     VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0x00000001,
 | |
|     VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0x00000004,
 | |
|     VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x00000010,
 | |
|     VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 | |
| } VkVideoComponentBitDepthFlagBitsKHR;
 | |
| typedef VkFlags VkVideoComponentBitDepthFlagsKHR;
 | |
| 
 | |
| typedef enum VkVideoCapabilityFlagBitsKHR {
 | |
|     VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
 | |
|     VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002,
 | |
|     VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 | |
| } VkVideoCapabilityFlagBitsKHR;
 | |
| typedef VkFlags VkVideoCapabilityFlagsKHR;
 | |
| 
 | |
| typedef enum VkVideoSessionCreateFlagBitsKHR {
 | |
|     VK_VIDEO_SESSION_CREATE_DEFAULT_KHR = 0,
 | |
|     VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
 | |
|     VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 | |
| } VkVideoSessionCreateFlagBitsKHR;
 | |
| typedef VkFlags VkVideoSessionCreateFlagsKHR;
 | |
| typedef VkFlags VkVideoBeginCodingFlagsKHR;
 | |
| typedef VkFlags VkVideoEndCodingFlagsKHR;
 | |
| 
 | |
| typedef enum VkVideoCodingControlFlagBitsKHR {
 | |
|     VK_VIDEO_CODING_CONTROL_DEFAULT_KHR = 0,
 | |
|     VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0x00000001,
 | |
|     VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 | |
| } VkVideoCodingControlFlagBitsKHR;
 | |
| typedef VkFlags VkVideoCodingControlFlagsKHR;
 | |
| 
 | |
| typedef enum VkVideoCodingQualityPresetFlagBitsKHR {
 | |
|     VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR = 0x00000001,
 | |
|     VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR = 0x00000002,
 | |
|     VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR = 0x00000004,
 | |
|     VK_VIDEO_CODING_QUALITY_PRESET_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 | |
| } VkVideoCodingQualityPresetFlagBitsKHR;
 | |
| typedef VkFlags VkVideoCodingQualityPresetFlagsKHR;
 | |
| typedef struct VkQueueFamilyQueryResultStatusProperties2KHR {
 | |
|     VkStructureType    sType;
 | |
|     void*              pNext;
 | |
|     VkBool32           supported;
 | |
| } VkQueueFamilyQueryResultStatusProperties2KHR;
 | |
| 
 | |
| typedef struct VkVideoQueueFamilyProperties2KHR {
 | |
|     VkStructureType                  sType;
 | |
|     void*                            pNext;
 | |
|     VkVideoCodecOperationFlagsKHR    videoCodecOperations;
 | |
| } VkVideoQueueFamilyProperties2KHR;
 | |
| 
 | |
| typedef struct VkVideoProfileKHR {
 | |
|     VkStructureType                     sType;
 | |
|     void*                               pNext;
 | |
|     VkVideoCodecOperationFlagBitsKHR    videoCodecOperation;
 | |
|     VkVideoChromaSubsamplingFlagsKHR    chromaSubsampling;
 | |
|     VkVideoComponentBitDepthFlagsKHR    lumaBitDepth;
 | |
|     VkVideoComponentBitDepthFlagsKHR    chromaBitDepth;
 | |
| } VkVideoProfileKHR;
 | |
| 
 | |
| typedef struct VkVideoProfilesKHR {
 | |
|     VkStructureType             sType;
 | |
|     void*                       pNext;
 | |
|     uint32_t                    profileCount;
 | |
|     const VkVideoProfileKHR*    pProfiles;
 | |
| } VkVideoProfilesKHR;
 | |
| 
 | |
| typedef struct VkVideoCapabilitiesKHR {
 | |
|     VkStructureType              sType;
 | |
|     void*                        pNext;
 | |
|     VkVideoCapabilityFlagsKHR    capabilityFlags;
 | |
|     VkDeviceSize                 minBitstreamBufferOffsetAlignment;
 | |
|     VkDeviceSize                 minBitstreamBufferSizeAlignment;
 | |
|     VkExtent2D                   videoPictureExtentGranularity;
 | |
|     VkExtent2D                   minExtent;
 | |
|     VkExtent2D                   maxExtent;
 | |
|     uint32_t                     maxReferencePicturesSlotsCount;
 | |
|     uint32_t                     maxReferencePicturesActiveCount;
 | |
| } VkVideoCapabilitiesKHR;
 | |
| 
 | |
| typedef struct VkPhysicalDeviceVideoFormatInfoKHR {
 | |
|     VkStructureType              sType;
 | |
|     void*                        pNext;
 | |
|     VkImageUsageFlags            imageUsage;
 | |
|     const VkVideoProfilesKHR*    pVideoProfiles;
 | |
| } VkPhysicalDeviceVideoFormatInfoKHR;
 | |
| 
 | |
| typedef struct VkVideoFormatPropertiesKHR {
 | |
|     VkStructureType    sType;
 | |
|     void*              pNext;
 | |
|     VkFormat           format;
 | |
| } VkVideoFormatPropertiesKHR;
 | |
| 
 | |
| typedef struct VkVideoPictureResourceKHR {
 | |
|     VkStructureType    sType;
 | |
|     const void*        pNext;
 | |
|     VkOffset2D         codedOffset;
 | |
|     VkExtent2D         codedExtent;
 | |
|     uint32_t           baseArrayLayer;
 | |
|     VkImageView        imageViewBinding;
 | |
| } VkVideoPictureResourceKHR;
 | |
| 
 | |
| typedef struct VkVideoReferenceSlotKHR {
 | |
|     VkStructureType                     sType;
 | |
|     const void*                         pNext;
 | |
|     int8_t                              slotIndex;
 | |
|     const VkVideoPictureResourceKHR*    pPictureResource;
 | |
| } VkVideoReferenceSlotKHR;
 | |
| 
 | |
| typedef struct VkVideoGetMemoryPropertiesKHR {
 | |
|     VkStructureType           sType;
 | |
|     const void*               pNext;
 | |
|     uint32_t                  memoryBindIndex;
 | |
|     VkMemoryRequirements2*    pMemoryRequirements;
 | |
| } VkVideoGetMemoryPropertiesKHR;
 | |
| 
 | |
| typedef struct VkVideoBindMemoryKHR {
 | |
|     VkStructureType    sType;
 | |
|     const void*        pNext;
 | |
|     uint32_t           memoryBindIndex;
 | |
|     VkDeviceMemory     memory;
 | |
|     VkDeviceSize       memoryOffset;
 | |
|     VkDeviceSize       memorySize;
 | |
| } VkVideoBindMemoryKHR;
 | |
| 
 | |
| typedef struct VkVideoSessionCreateInfoKHR {
 | |
|     VkStructureType                 sType;
 | |
|     const void*                     pNext;
 | |
|     uint32_t                        queueFamilyIndex;
 | |
|     VkVideoSessionCreateFlagsKHR    flags;
 | |
|     const VkVideoProfileKHR*        pVideoProfile;
 | |
|     VkFormat                        pictureFormat;
 | |
|     VkExtent2D                      maxCodedExtent;
 | |
|     VkFormat                        referencePicturesFormat;
 | |
|     uint32_t                        maxReferencePicturesSlotsCount;
 | |
|     uint32_t                        maxReferencePicturesActiveCount;
 | |
| } VkVideoSessionCreateInfoKHR;
 | |
| 
 | |
| typedef struct VkVideoSessionParametersCreateInfoKHR {
 | |
|     VkStructureType                sType;
 | |
|     const void*                    pNext;
 | |
|     VkVideoSessionParametersKHR    videoSessionParametersTemplate;
 | |
|     VkVideoSessionKHR              videoSession;
 | |
| } VkVideoSessionParametersCreateInfoKHR;
 | |
| 
 | |
| typedef struct VkVideoSessionParametersUpdateInfoKHR {
 | |
|     VkStructureType    sType;
 | |
|     const void*        pNext;
 | |
|     uint32_t           updateSequenceCount;
 | |
| } VkVideoSessionParametersUpdateInfoKHR;
 | |
| 
 | |
| typedef struct VkVideoBeginCodingInfoKHR {
 | |
|     VkStructureType                       sType;
 | |
|     const void*                           pNext;
 | |
|     VkVideoBeginCodingFlagsKHR            flags;
 | |
|     VkVideoCodingQualityPresetFlagsKHR    codecQualityPreset;
 | |
|     VkVideoSessionKHR                     videoSession;
 | |
|     VkVideoSessionParametersKHR           videoSessionParameters;
 | |
|     uint32_t                              referenceSlotCount;
 | |
|     const VkVideoReferenceSlotKHR*        pReferenceSlots;
 | |
| } VkVideoBeginCodingInfoKHR;
 | |
| 
 | |
| typedef struct VkVideoEndCodingInfoKHR {
 | |
|     VkStructureType             sType;
 | |
|     const void*                 pNext;
 | |
|     VkVideoEndCodingFlagsKHR    flags;
 | |
| } VkVideoEndCodingInfoKHR;
 | |
| 
 | |
| typedef struct VkVideoCodingControlInfoKHR {
 | |
|     VkStructureType                 sType;
 | |
|     const void*                     pNext;
 | |
|     VkVideoCodingControlFlagsKHR    flags;
 | |
| } VkVideoCodingControlInfoKHR;
 | |
| 
 | |
| typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities);
 | |
| typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties);
 | |
| typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession);
 | |
| typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator);
 | |
| typedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements);
 | |
| typedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories);
 | |
| typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters);
 | |
| typedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
 | |
| typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator);
 | |
| typedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo);
 | |
| typedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo);
 | |
| typedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo);
 | |
| 
 | |
| #ifndef VK_NO_PROTOTYPES
 | |
| VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR(
 | |
|     VkPhysicalDevice                            physicalDevice,
 | |
|     const VkVideoProfileKHR*                    pVideoProfile,
 | |
|     VkVideoCapabilitiesKHR*                     pCapabilities);
 | |
| 
 | |
| VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR(
 | |
|     VkPhysicalDevice                            physicalDevice,
 | |
|     const VkPhysicalDeviceVideoFormatInfoKHR*   pVideoFormatInfo,
 | |
|     uint32_t*                                   pVideoFormatPropertyCount,
 | |
|     VkVideoFormatPropertiesKHR*                 pVideoFormatProperties);
 | |
| 
 | |
| VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR(
 | |
|     VkDevice                                    device,
 | |
|     const VkVideoSessionCreateInfoKHR*          pCreateInfo,
 | |
|     const VkAllocationCallbacks*                pAllocator,
 | |
|     VkVideoSessionKHR*                          pVideoSession);
 | |
| 
 | |
| VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR(
 | |
|     VkDevice                                    device,
 | |
|     VkVideoSessionKHR                           videoSession,
 | |
|     const VkAllocationCallbacks*                pAllocator);
 | |
| 
 | |
| VKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR(
 | |
|     VkDevice                                    device,
 | |
|     VkVideoSessionKHR                           videoSession,
 | |
|     uint32_t*                                   pVideoSessionMemoryRequirementsCount,
 | |
|     VkVideoGetMemoryPropertiesKHR*              pVideoSessionMemoryRequirements);
 | |
| 
 | |
| VKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR(
 | |
|     VkDevice                                    device,
 | |
|     VkVideoSessionKHR                           videoSession,
 | |
|     uint32_t                                    videoSessionBindMemoryCount,
 | |
|     const VkVideoBindMemoryKHR*                 pVideoSessionBindMemories);
 | |
| 
 | |
| VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR(
 | |
|     VkDevice                                    device,
 | |
|     const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
 | |
|     const VkAllocationCallbacks*                pAllocator,
 | |
|     VkVideoSessionParametersKHR*                pVideoSessionParameters);
 | |
| 
 | |
| VKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR(
 | |
|     VkDevice                                    device,
 | |
|     VkVideoSessionParametersKHR                 videoSessionParameters,
 | |
|     const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
 | |
| 
 | |
| VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR(
 | |
|     VkDevice                                    device,
 | |
|     VkVideoSessionParametersKHR                 videoSessionParameters,
 | |
|     const VkAllocationCallbacks*                pAllocator);
 | |
| 
 | |
| VKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR(
 | |
|     VkCommandBuffer                             commandBuffer,
 | |
|     const VkVideoBeginCodingInfoKHR*            pBeginInfo);
 | |
| 
 | |
| VKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR(
 | |
|     VkCommandBuffer                             commandBuffer,
 | |
|     const VkVideoEndCodingInfoKHR*              pEndCodingInfo);
 | |
| 
 | |
| VKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR(
 | |
|     VkCommandBuffer                             commandBuffer,
 | |
|     const VkVideoCodingControlInfoKHR*          pCodingControlInfo);
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #define VK_KHR_video_decode_queue 1
 | |
| #define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 2
 | |
| #define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue"
 | |
| 
 | |
| typedef enum VkVideoDecodeFlagBitsKHR {
 | |
|     VK_VIDEO_DECODE_DEFAULT_KHR = 0,
 | |
|     VK_VIDEO_DECODE_RESERVED_0_BIT_KHR = 0x00000001,
 | |
|     VK_VIDEO_DECODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 | |
| } VkVideoDecodeFlagBitsKHR;
 | |
| typedef VkFlags VkVideoDecodeFlagsKHR;
 | |
| typedef struct VkVideoDecodeInfoKHR {
 | |
|     VkStructureType                   sType;
 | |
|     const void*                       pNext;
 | |
|     VkVideoDecodeFlagsKHR             flags;
 | |
|     VkOffset2D                        codedOffset;
 | |
|     VkExtent2D                        codedExtent;
 | |
|     VkBuffer                          srcBuffer;
 | |
|     VkDeviceSize                      srcBufferOffset;
 | |
|     VkDeviceSize                      srcBufferRange;
 | |
|     VkVideoPictureResourceKHR         dstPictureResource;
 | |
|     const VkVideoReferenceSlotKHR*    pSetupReferenceSlot;
 | |
|     uint32_t                          referenceSlotCount;
 | |
|     const VkVideoReferenceSlotKHR*    pReferenceSlots;
 | |
| } VkVideoDecodeInfoKHR;
 | |
| 
 | |
| typedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo);
 | |
| 
 | |
| #ifndef VK_NO_PROTOTYPES
 | |
| VKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR(
 | |
|     VkCommandBuffer                             commandBuffer,
 | |
|     const VkVideoDecodeInfoKHR*                 pFrameInfo);
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #define VK_KHR_portability_subset 1
 | |
| #define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1
 | |
| #define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset"
 | |
| typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR {
 | |
|     VkStructureType    sType;
 | |
|     void*              pNext;
 | |
|     VkBool32           constantAlphaColorBlendFactors;
 | |
|     VkBool32           events;
 | |
|     VkBool32           imageViewFormatReinterpretation;
 | |
|     VkBool32           imageViewFormatSwizzle;
 | |
|     VkBool32           imageView2DOn3DImage;
 | |
|     VkBool32           multisampleArrayImage;
 | |
|     VkBool32           mutableComparisonSamplers;
 | |
|     VkBool32           pointPolygons;
 | |
|     VkBool32           samplerMipLodBias;
 | |
|     VkBool32           separateStencilMaskRef;
 | |
|     VkBool32           shaderSampleRateInterpolationFunctions;
 | |
|     VkBool32           tessellationIsolines;
 | |
|     VkBool32           tessellationPointMode;
 | |
|     VkBool32           triangleFans;
 | |
|     VkBool32           vertexAttributeAccessBeyondStride;
 | |
| } VkPhysicalDevicePortabilitySubsetFeaturesKHR;
 | |
| 
 | |
| typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR {
 | |
|     VkStructureType    sType;
 | |
|     void*              pNext;
 | |
|     uint32_t           minVertexInputBindingStrideAlignment;
 | |
| } VkPhysicalDevicePortabilitySubsetPropertiesKHR;
 | |
| 
 | |
| 
 | |
| 
 | |
| #define VK_KHR_video_encode_queue 1
 | |
| #define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 3
 | |
| #define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue"
 | |
| 
 | |
| typedef enum VkVideoEncodeFlagBitsKHR {
 | |
|     VK_VIDEO_ENCODE_DEFAULT_KHR = 0,
 | |
|     VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR = 0x00000001,
 | |
|     VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 | |
| } VkVideoEncodeFlagBitsKHR;
 | |
| typedef VkFlags VkVideoEncodeFlagsKHR;
 | |
| 
 | |
| typedef enum VkVideoEncodeRateControlFlagBitsKHR {
 | |
|     VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR = 0,
 | |
|     VK_VIDEO_ENCODE_RATE_CONTROL_RESERVED_0_BIT_KHR = 0x00000001,
 | |
|     VK_VIDEO_ENCODE_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 | |
| } VkVideoEncodeRateControlFlagBitsKHR;
 | |
| typedef VkFlags VkVideoEncodeRateControlFlagsKHR;
 | |
| 
 | |
| typedef enum VkVideoEncodeRateControlModeFlagBitsKHR {
 | |
|     VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR = 0,
 | |
|     VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 1,
 | |
|     VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 2,
 | |
|     VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 | |
| } VkVideoEncodeRateControlModeFlagBitsKHR;
 | |
| typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR;
 | |
| typedef struct VkVideoEncodeInfoKHR {
 | |
|     VkStructureType                   sType;
 | |
|     const void*                       pNext;
 | |
|     VkVideoEncodeFlagsKHR             flags;
 | |
|     uint32_t                          qualityLevel;
 | |
|     VkExtent2D                        codedExtent;
 | |
|     VkBuffer                          dstBitstreamBuffer;
 | |
|     VkDeviceSize                      dstBitstreamBufferOffset;
 | |
|     VkDeviceSize                      dstBitstreamBufferMaxRange;
 | |
|     VkVideoPictureResourceKHR         srcPictureResource;
 | |
|     const VkVideoReferenceSlotKHR*    pSetupReferenceSlot;
 | |
|     uint32_t                          referenceSlotCount;
 | |
|     const VkVideoReferenceSlotKHR*    pReferenceSlots;
 | |
|     uint32_t                          precedingExternallyEncodedBytes;
 | |
| } VkVideoEncodeInfoKHR;
 | |
| 
 | |
| typedef struct VkVideoEncodeRateControlLayerInfoKHR {
 | |
|     VkStructureType    sType;
 | |
|     const void*        pNext;
 | |
|     uint32_t           averageBitrate;
 | |
|     uint32_t           maxBitrate;
 | |
|     uint32_t           frameRateNumerator;
 | |
|     uint32_t           frameRateDenominator;
 | |
|     uint32_t           virtualBufferSizeInMs;
 | |
|     uint32_t           initialVirtualBufferSizeInMs;
 | |
| } VkVideoEncodeRateControlLayerInfoKHR;
 | |
| 
 | |
| typedef struct VkVideoEncodeRateControlInfoKHR {
 | |
|     VkStructureType                                sType;
 | |
|     const void*                                    pNext;
 | |
|     VkVideoEncodeRateControlFlagsKHR               flags;
 | |
|     VkVideoEncodeRateControlModeFlagBitsKHR        rateControlMode;
 | |
|     uint8_t                                        layerCount;
 | |
|     const VkVideoEncodeRateControlLayerInfoKHR*    pLayerConfigs;
 | |
| } VkVideoEncodeRateControlInfoKHR;
 | |
| 
 | |
| typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo);
 | |
| 
 | |
| #ifndef VK_NO_PROTOTYPES
 | |
| VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR(
 | |
|     VkCommandBuffer                             commandBuffer,
 | |
|     const VkVideoEncodeInfoKHR*                 pEncodeInfo);
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #define VK_EXT_video_encode_h264 1
 | |
| #include "vk_video/vulkan_video_codec_h264std.h"
 | |
| #include "vk_video/vulkan_video_codec_h264std_encode.h"
 | |
| #define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 3
 | |
| #define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264"
 | |
| 
 | |
| typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT {
 | |
|     VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00000001,
 | |
|     VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00000002,
 | |
|     VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT = 0x00000004,
 | |
|     VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00000008,
 | |
|     VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000010,
 | |
|     VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000020,
 | |
|     VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00000040,
 | |
|     VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00000080,
 | |
|     VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00000100,
 | |
|     VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00000200,
 | |
|     VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT = 0x00000400,
 | |
|     VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
 | |
| } VkVideoEncodeH264CapabilityFlagBitsEXT;
 | |
| typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT;
 | |
| 
 | |
| typedef enum VkVideoEncodeH264InputModeFlagBitsEXT {
 | |
|     VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 0x00000001,
 | |
|     VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 0x00000002,
 | |
|     VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
 | |
|     VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
 | |
| } VkVideoEncodeH264InputModeFlagBitsEXT;
 | |
| typedef VkFlags VkVideoEncodeH264InputModeFlagsEXT;
 | |
| 
 | |
| typedef enum VkVideoEncodeH264OutputModeFlagBitsEXT {
 | |
|     VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001,
 | |
|     VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002,
 | |
|     VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
 | |
|     VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
 | |
| } VkVideoEncodeH264OutputModeFlagBitsEXT;
 | |
| typedef VkFlags VkVideoEncodeH264OutputModeFlagsEXT;
 | |
| 
 | |
| typedef enum VkVideoEncodeH264CreateFlagBitsEXT {
 | |
|     VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT = 0,
 | |
|     VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT = 0x00000001,
 | |
|     VK_VIDEO_ENCODE_H264_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
 | |
| } VkVideoEncodeH264CreateFlagBitsEXT;
 | |
| typedef VkFlags VkVideoEncodeH264CreateFlagsEXT;
 | |
| 
 | |
| typedef enum VkVideoEncodeH264RateControlStructureFlagBitsEXT {
 | |
|     VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0,
 | |
|     VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT = 0x00000001,
 | |
|     VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT = 0x00000002,
 | |
|     VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
 | |
| } VkVideoEncodeH264RateControlStructureFlagBitsEXT;
 | |
| typedef VkFlags VkVideoEncodeH264RateControlStructureFlagsEXT;
 | |
| typedef struct VkVideoEncodeH264CapabilitiesEXT {
 | |
|     VkStructureType                        sType;
 | |
|     const void*                            pNext;
 | |
|     VkVideoEncodeH264CapabilityFlagsEXT    flags;
 | |
|     VkVideoEncodeH264InputModeFlagsEXT     inputModeFlags;
 | |
|     VkVideoEncodeH264OutputModeFlagsEXT    outputModeFlags;
 | |
|     VkExtent2D                             minPictureSizeInMbs;
 | |
|     VkExtent2D                             maxPictureSizeInMbs;
 | |
|     VkExtent2D                             inputImageDataAlignment;
 | |
|     uint8_t                                maxNumL0ReferenceForP;
 | |
|     uint8_t                                maxNumL0ReferenceForB;
 | |
|     uint8_t                                maxNumL1Reference;
 | |
|     uint8_t                                qualityLevelCount;
 | |
|     VkExtensionProperties                  stdExtensionVersion;
 | |
| } VkVideoEncodeH264CapabilitiesEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH264SessionCreateInfoEXT {
 | |
|     VkStructureType                    sType;
 | |
|     const void*                        pNext;
 | |
|     VkVideoEncodeH264CreateFlagsEXT    flags;
 | |
|     VkExtent2D                         maxPictureSizeInMbs;
 | |
|     const VkExtensionProperties*       pStdExtensionVersion;
 | |
| } VkVideoEncodeH264SessionCreateInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT {
 | |
|     VkStructureType                            sType;
 | |
|     const void*                                pNext;
 | |
|     uint32_t                                   spsStdCount;
 | |
|     const StdVideoH264SequenceParameterSet*    pSpsStd;
 | |
|     uint32_t                                   ppsStdCount;
 | |
|     const StdVideoH264PictureParameterSet*     pPpsStd;
 | |
| } VkVideoEncodeH264SessionParametersAddInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT {
 | |
|     VkStructureType                                        sType;
 | |
|     const void*                                            pNext;
 | |
|     uint32_t                                               maxSpsStdCount;
 | |
|     uint32_t                                               maxPpsStdCount;
 | |
|     const VkVideoEncodeH264SessionParametersAddInfoEXT*    pParametersAddInfo;
 | |
| } VkVideoEncodeH264SessionParametersCreateInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH264DpbSlotInfoEXT {
 | |
|     VkStructureType                         sType;
 | |
|     const void*                             pNext;
 | |
|     int8_t                                  slotIndex;
 | |
|     const StdVideoEncodeH264PictureInfo*    pStdPictureInfo;
 | |
| } VkVideoEncodeH264DpbSlotInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH264NaluSliceEXT {
 | |
|     VkStructureType                           sType;
 | |
|     const void*                               pNext;
 | |
|     const StdVideoEncodeH264SliceHeader*      pSliceHeaderStd;
 | |
|     uint32_t                                  mbCount;
 | |
|     uint8_t                                   refFinalList0EntryCount;
 | |
|     const VkVideoEncodeH264DpbSlotInfoEXT*    pRefFinalList0Entries;
 | |
|     uint8_t                                   refFinalList1EntryCount;
 | |
|     const VkVideoEncodeH264DpbSlotInfoEXT*    pRefFinalList1Entries;
 | |
| } VkVideoEncodeH264NaluSliceEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH264VclFrameInfoEXT {
 | |
|     VkStructureType                           sType;
 | |
|     const void*                               pNext;
 | |
|     uint8_t                                   refDefaultFinalList0EntryCount;
 | |
|     const VkVideoEncodeH264DpbSlotInfoEXT*    pRefDefaultFinalList0Entries;
 | |
|     uint8_t                                   refDefaultFinalList1EntryCount;
 | |
|     const VkVideoEncodeH264DpbSlotInfoEXT*    pRefDefaultFinalList1Entries;
 | |
|     uint32_t                                  naluSliceEntryCount;
 | |
|     const VkVideoEncodeH264NaluSliceEXT*      pNaluSliceEntries;
 | |
|     const VkVideoEncodeH264DpbSlotInfoEXT*    pCurrentPictureInfo;
 | |
| } VkVideoEncodeH264VclFrameInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH264EmitPictureParametersEXT {
 | |
|     VkStructureType    sType;
 | |
|     const void*        pNext;
 | |
|     uint8_t            spsId;
 | |
|     VkBool32           emitSpsEnable;
 | |
|     uint32_t           ppsIdEntryCount;
 | |
|     const uint8_t*     ppsIdEntries;
 | |
| } VkVideoEncodeH264EmitPictureParametersEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH264ProfileEXT {
 | |
|     VkStructureType           sType;
 | |
|     const void*               pNext;
 | |
|     StdVideoH264ProfileIdc    stdProfileIdc;
 | |
| } VkVideoEncodeH264ProfileEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH264RateControlInfoEXT {
 | |
|     VkStructureType                                     sType;
 | |
|     const void*                                         pNext;
 | |
|     uint32_t                                            gopFrameCount;
 | |
|     uint32_t                                            idrPeriod;
 | |
|     uint32_t                                            consecutiveBFrameCount;
 | |
|     VkVideoEncodeH264RateControlStructureFlagBitsEXT    rateControlStructure;
 | |
|     uint8_t                                             temporalLayerCount;
 | |
| } VkVideoEncodeH264RateControlInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH264QpEXT {
 | |
|     int32_t    qpI;
 | |
|     int32_t    qpP;
 | |
|     int32_t    qpB;
 | |
| } VkVideoEncodeH264QpEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH264FrameSizeEXT {
 | |
|     uint32_t    frameISize;
 | |
|     uint32_t    framePSize;
 | |
|     uint32_t    frameBSize;
 | |
| } VkVideoEncodeH264FrameSizeEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH264RateControlLayerInfoEXT {
 | |
|     VkStructureType                  sType;
 | |
|     const void*                      pNext;
 | |
|     uint8_t                          temporalLayerId;
 | |
|     VkBool32                         useInitialRcQp;
 | |
|     VkVideoEncodeH264QpEXT           initialRcQp;
 | |
|     VkBool32                         useMinQp;
 | |
|     VkVideoEncodeH264QpEXT           minQp;
 | |
|     VkBool32                         useMaxQp;
 | |
|     VkVideoEncodeH264QpEXT           maxQp;
 | |
|     VkBool32                         useMaxFrameSize;
 | |
|     VkVideoEncodeH264FrameSizeEXT    maxFrameSize;
 | |
| } VkVideoEncodeH264RateControlLayerInfoEXT;
 | |
| 
 | |
| 
 | |
| 
 | |
| #define VK_EXT_video_encode_h265 1
 | |
| #include "vk_video/vulkan_video_codec_h265std.h"
 | |
| #include "vk_video/vulkan_video_codec_h265std_encode.h"
 | |
| #define VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION 3
 | |
| #define VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_EXT_video_encode_h265"
 | |
| typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT;
 | |
| 
 | |
| typedef enum VkVideoEncodeH265InputModeFlagBitsEXT {
 | |
|     VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT = 0x00000001,
 | |
|     VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_BIT_EXT = 0x00000002,
 | |
|     VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
 | |
|     VK_VIDEO_ENCODE_H265_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
 | |
| } VkVideoEncodeH265InputModeFlagBitsEXT;
 | |
| typedef VkFlags VkVideoEncodeH265InputModeFlagsEXT;
 | |
| 
 | |
| typedef enum VkVideoEncodeH265OutputModeFlagBitsEXT {
 | |
|     VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001,
 | |
|     VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002,
 | |
|     VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
 | |
|     VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
 | |
| } VkVideoEncodeH265OutputModeFlagBitsEXT;
 | |
| typedef VkFlags VkVideoEncodeH265OutputModeFlagsEXT;
 | |
| typedef VkFlags VkVideoEncodeH265CreateFlagsEXT;
 | |
| 
 | |
| typedef enum VkVideoEncodeH265CtbSizeFlagBitsEXT {
 | |
|     VK_VIDEO_ENCODE_H265_CTB_SIZE_8_BIT_EXT = 0x00000001,
 | |
|     VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT = 0x00000002,
 | |
|     VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT = 0x00000004,
 | |
|     VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT = 0x00000008,
 | |
|     VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
 | |
| } VkVideoEncodeH265CtbSizeFlagBitsEXT;
 | |
| typedef VkFlags VkVideoEncodeH265CtbSizeFlagsEXT;
 | |
| 
 | |
| typedef enum VkVideoEncodeH265RateControlStructureFlagBitsEXT {
 | |
|     VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0,
 | |
|     VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT = 0x00000001,
 | |
|     VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT = 0x00000002,
 | |
|     VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
 | |
| } VkVideoEncodeH265RateControlStructureFlagBitsEXT;
 | |
| typedef VkFlags VkVideoEncodeH265RateControlStructureFlagsEXT;
 | |
| typedef struct VkVideoEncodeH265CapabilitiesEXT {
 | |
|     VkStructureType                        sType;
 | |
|     const void*                            pNext;
 | |
|     VkVideoEncodeH265CapabilityFlagsEXT    flags;
 | |
|     VkVideoEncodeH265InputModeFlagsEXT     inputModeFlags;
 | |
|     VkVideoEncodeH265OutputModeFlagsEXT    outputModeFlags;
 | |
|     VkVideoEncodeH265CtbSizeFlagsEXT       ctbSizes;
 | |
|     VkExtent2D                             inputImageDataAlignment;
 | |
|     uint8_t                                maxNumL0ReferenceForP;
 | |
|     uint8_t                                maxNumL0ReferenceForB;
 | |
|     uint8_t                                maxNumL1Reference;
 | |
|     uint8_t                                maxNumSubLayers;
 | |
|     uint8_t                                qualityLevelCount;
 | |
|     VkExtensionProperties                  stdExtensionVersion;
 | |
| } VkVideoEncodeH265CapabilitiesEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH265SessionCreateInfoEXT {
 | |
|     VkStructureType                    sType;
 | |
|     const void*                        pNext;
 | |
|     VkVideoEncodeH265CreateFlagsEXT    flags;
 | |
|     const VkExtensionProperties*       pStdExtensionVersion;
 | |
| } VkVideoEncodeH265SessionCreateInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH265SessionParametersAddInfoEXT {
 | |
|     VkStructureType                            sType;
 | |
|     const void*                                pNext;
 | |
|     uint32_t                                   vpsStdCount;
 | |
|     const StdVideoH265VideoParameterSet*       pVpsStd;
 | |
|     uint32_t                                   spsStdCount;
 | |
|     const StdVideoH265SequenceParameterSet*    pSpsStd;
 | |
|     uint32_t                                   ppsStdCount;
 | |
|     const StdVideoH265PictureParameterSet*     pPpsStd;
 | |
| } VkVideoEncodeH265SessionParametersAddInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH265SessionParametersCreateInfoEXT {
 | |
|     VkStructureType                                        sType;
 | |
|     const void*                                            pNext;
 | |
|     uint32_t                                               maxVpsStdCount;
 | |
|     uint32_t                                               maxSpsStdCount;
 | |
|     uint32_t                                               maxPpsStdCount;
 | |
|     const VkVideoEncodeH265SessionParametersAddInfoEXT*    pParametersAddInfo;
 | |
| } VkVideoEncodeH265SessionParametersCreateInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH265DpbSlotInfoEXT {
 | |
|     VkStructureType                           sType;
 | |
|     const void*                               pNext;
 | |
|     int8_t                                    slotIndex;
 | |
|     const StdVideoEncodeH265ReferenceInfo*    pStdReferenceInfo;
 | |
| } VkVideoEncodeH265DpbSlotInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH265ReferenceListsEXT {
 | |
|     VkStructureType                                    sType;
 | |
|     const void*                                        pNext;
 | |
|     uint8_t                                            referenceList0EntryCount;
 | |
|     const VkVideoEncodeH265DpbSlotInfoEXT*             pReferenceList0Entries;
 | |
|     uint8_t                                            referenceList1EntryCount;
 | |
|     const VkVideoEncodeH265DpbSlotInfoEXT*             pReferenceList1Entries;
 | |
|     const StdVideoEncodeH265ReferenceModifications*    pReferenceModifications;
 | |
| } VkVideoEncodeH265ReferenceListsEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH265NaluSliceEXT {
 | |
|     VkStructureType                              sType;
 | |
|     const void*                                  pNext;
 | |
|     uint32_t                                     ctbCount;
 | |
|     const VkVideoEncodeH265ReferenceListsEXT*    pReferenceFinalLists;
 | |
|     const StdVideoEncodeH265SliceHeader*         pSliceHeaderStd;
 | |
| } VkVideoEncodeH265NaluSliceEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH265VclFrameInfoEXT {
 | |
|     VkStructureType                              sType;
 | |
|     const void*                                  pNext;
 | |
|     const VkVideoEncodeH265ReferenceListsEXT*    pReferenceFinalLists;
 | |
|     uint32_t                                     naluSliceEntryCount;
 | |
|     const VkVideoEncodeH265NaluSliceEXT*         pNaluSliceEntries;
 | |
|     const StdVideoEncodeH265PictureInfo*         pCurrentPictureInfo;
 | |
| } VkVideoEncodeH265VclFrameInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH265EmitPictureParametersEXT {
 | |
|     VkStructureType    sType;
 | |
|     const void*        pNext;
 | |
|     uint8_t            vpsId;
 | |
|     uint8_t            spsId;
 | |
|     VkBool32           emitVpsEnable;
 | |
|     VkBool32           emitSpsEnable;
 | |
|     uint32_t           ppsIdEntryCount;
 | |
|     const uint8_t*     ppsIdEntries;
 | |
| } VkVideoEncodeH265EmitPictureParametersEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH265ProfileEXT {
 | |
|     VkStructureType           sType;
 | |
|     const void*               pNext;
 | |
|     StdVideoH265ProfileIdc    stdProfileIdc;
 | |
| } VkVideoEncodeH265ProfileEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH265RateControlInfoEXT {
 | |
|     VkStructureType                                     sType;
 | |
|     const void*                                         pNext;
 | |
|     uint32_t                                            gopFrameCount;
 | |
|     uint32_t                                            idrPeriod;
 | |
|     uint32_t                                            consecutiveBFrameCount;
 | |
|     VkVideoEncodeH265RateControlStructureFlagBitsEXT    rateControlStructure;
 | |
|     uint8_t                                             subLayerCount;
 | |
| } VkVideoEncodeH265RateControlInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH265QpEXT {
 | |
|     int32_t    qpI;
 | |
|     int32_t    qpP;
 | |
|     int32_t    qpB;
 | |
| } VkVideoEncodeH265QpEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH265FrameSizeEXT {
 | |
|     uint32_t    frameISize;
 | |
|     uint32_t    framePSize;
 | |
|     uint32_t    frameBSize;
 | |
| } VkVideoEncodeH265FrameSizeEXT;
 | |
| 
 | |
| typedef struct VkVideoEncodeH265RateControlLayerInfoEXT {
 | |
|     VkStructureType                  sType;
 | |
|     const void*                      pNext;
 | |
|     uint8_t                          temporalId;
 | |
|     VkBool32                         useInitialRcQp;
 | |
|     VkVideoEncodeH265QpEXT           initialRcQp;
 | |
|     VkBool32                         useMinQp;
 | |
|     VkVideoEncodeH265QpEXT           minQp;
 | |
|     VkBool32                         useMaxQp;
 | |
|     VkVideoEncodeH265QpEXT           maxQp;
 | |
|     VkBool32                         useMaxFrameSize;
 | |
|     VkVideoEncodeH265FrameSizeEXT    maxFrameSize;
 | |
| } VkVideoEncodeH265RateControlLayerInfoEXT;
 | |
| 
 | |
| 
 | |
| 
 | |
| #define VK_EXT_video_decode_h264 1
 | |
| #include "vk_video/vulkan_video_codec_h264std_decode.h"
 | |
| #define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 3
 | |
| #define VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME "VK_EXT_video_decode_h264"
 | |
| 
 | |
| typedef enum VkVideoDecodeH264PictureLayoutFlagBitsEXT {
 | |
|     VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT = 0,
 | |
|     VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT = 0x00000001,
 | |
|     VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT = 0x00000002,
 | |
|     VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
 | |
| } VkVideoDecodeH264PictureLayoutFlagBitsEXT;
 | |
| typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsEXT;
 | |
| typedef VkFlags VkVideoDecodeH264CreateFlagsEXT;
 | |
| typedef struct VkVideoDecodeH264ProfileEXT {
 | |
|     VkStructureType                           sType;
 | |
|     const void*                               pNext;
 | |
|     StdVideoH264ProfileIdc                    stdProfileIdc;
 | |
|     VkVideoDecodeH264PictureLayoutFlagsEXT    pictureLayout;
 | |
| } VkVideoDecodeH264ProfileEXT;
 | |
| 
 | |
| typedef struct VkVideoDecodeH264CapabilitiesEXT {
 | |
|     VkStructureType          sType;
 | |
|     void*                    pNext;
 | |
|     uint32_t                 maxLevel;
 | |
|     VkOffset2D               fieldOffsetGranularity;
 | |
|     VkExtensionProperties    stdExtensionVersion;
 | |
| } VkVideoDecodeH264CapabilitiesEXT;
 | |
| 
 | |
| typedef struct VkVideoDecodeH264SessionCreateInfoEXT {
 | |
|     VkStructureType                    sType;
 | |
|     const void*                        pNext;
 | |
|     VkVideoDecodeH264CreateFlagsEXT    flags;
 | |
|     const VkExtensionProperties*       pStdExtensionVersion;
 | |
| } VkVideoDecodeH264SessionCreateInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoDecodeH264SessionParametersAddInfoEXT {
 | |
|     VkStructureType                            sType;
 | |
|     const void*                                pNext;
 | |
|     uint32_t                                   spsStdCount;
 | |
|     const StdVideoH264SequenceParameterSet*    pSpsStd;
 | |
|     uint32_t                                   ppsStdCount;
 | |
|     const StdVideoH264PictureParameterSet*     pPpsStd;
 | |
| } VkVideoDecodeH264SessionParametersAddInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoDecodeH264SessionParametersCreateInfoEXT {
 | |
|     VkStructureType                                        sType;
 | |
|     const void*                                            pNext;
 | |
|     uint32_t                                               maxSpsStdCount;
 | |
|     uint32_t                                               maxPpsStdCount;
 | |
|     const VkVideoDecodeH264SessionParametersAddInfoEXT*    pParametersAddInfo;
 | |
| } VkVideoDecodeH264SessionParametersCreateInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoDecodeH264PictureInfoEXT {
 | |
|     VkStructureType                         sType;
 | |
|     const void*                             pNext;
 | |
|     const StdVideoDecodeH264PictureInfo*    pStdPictureInfo;
 | |
|     uint32_t                                slicesCount;
 | |
|     const uint32_t*                         pSlicesDataOffsets;
 | |
| } VkVideoDecodeH264PictureInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoDecodeH264MvcEXT {
 | |
|     VkStructureType                 sType;
 | |
|     const void*                     pNext;
 | |
|     const StdVideoDecodeH264Mvc*    pStdMvc;
 | |
| } VkVideoDecodeH264MvcEXT;
 | |
| 
 | |
| typedef struct VkVideoDecodeH264DpbSlotInfoEXT {
 | |
|     VkStructureType                           sType;
 | |
|     const void*                               pNext;
 | |
|     const StdVideoDecodeH264ReferenceInfo*    pStdReferenceInfo;
 | |
| } VkVideoDecodeH264DpbSlotInfoEXT;
 | |
| 
 | |
| 
 | |
| 
 | |
| #define VK_EXT_video_decode_h265 1
 | |
| #include "vk_video/vulkan_video_codec_h265std_decode.h"
 | |
| #define VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION 1
 | |
| #define VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME "VK_EXT_video_decode_h265"
 | |
| typedef VkFlags VkVideoDecodeH265CreateFlagsEXT;
 | |
| typedef struct VkVideoDecodeH265ProfileEXT {
 | |
|     VkStructureType           sType;
 | |
|     const void*               pNext;
 | |
|     StdVideoH265ProfileIdc    stdProfileIdc;
 | |
| } VkVideoDecodeH265ProfileEXT;
 | |
| 
 | |
| typedef struct VkVideoDecodeH265CapabilitiesEXT {
 | |
|     VkStructureType          sType;
 | |
|     void*                    pNext;
 | |
|     uint32_t                 maxLevel;
 | |
|     VkExtensionProperties    stdExtensionVersion;
 | |
| } VkVideoDecodeH265CapabilitiesEXT;
 | |
| 
 | |
| typedef struct VkVideoDecodeH265SessionCreateInfoEXT {
 | |
|     VkStructureType                    sType;
 | |
|     const void*                        pNext;
 | |
|     VkVideoDecodeH265CreateFlagsEXT    flags;
 | |
|     const VkExtensionProperties*       pStdExtensionVersion;
 | |
| } VkVideoDecodeH265SessionCreateInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoDecodeH265SessionParametersAddInfoEXT {
 | |
|     VkStructureType                            sType;
 | |
|     const void*                                pNext;
 | |
|     uint32_t                                   spsStdCount;
 | |
|     const StdVideoH265SequenceParameterSet*    pSpsStd;
 | |
|     uint32_t                                   ppsStdCount;
 | |
|     const StdVideoH265PictureParameterSet*     pPpsStd;
 | |
| } VkVideoDecodeH265SessionParametersAddInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoDecodeH265SessionParametersCreateInfoEXT {
 | |
|     VkStructureType                                        sType;
 | |
|     const void*                                            pNext;
 | |
|     uint32_t                                               maxSpsStdCount;
 | |
|     uint32_t                                               maxPpsStdCount;
 | |
|     const VkVideoDecodeH265SessionParametersAddInfoEXT*    pParametersAddInfo;
 | |
| } VkVideoDecodeH265SessionParametersCreateInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoDecodeH265PictureInfoEXT {
 | |
|     VkStructureType                   sType;
 | |
|     const void*                       pNext;
 | |
|     StdVideoDecodeH265PictureInfo*    pStdPictureInfo;
 | |
|     uint32_t                          slicesCount;
 | |
|     const uint32_t*                   pSlicesDataOffsets;
 | |
| } VkVideoDecodeH265PictureInfoEXT;
 | |
| 
 | |
| typedef struct VkVideoDecodeH265DpbSlotInfoEXT {
 | |
|     VkStructureType                           sType;
 | |
|     const void*                               pNext;
 | |
|     const StdVideoDecodeH265ReferenceInfo*    pStdReferenceInfo;
 | |
| } VkVideoDecodeH265DpbSlotInfoEXT;
 | |
| 
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif
 |