blob: d862b2c49b16c5b76fb3b81e1a13513b8d75f8ce [file] [log] [blame]
Caio Marcelo de Oliveira Filho643cbe12020-05-31 13:53:41 -07001#ifndef VULKAN_BETA_H_
2#define VULKAN_BETA_H_ 1
3
4/*
sugoi1bca23442022-01-26 17:49:23 -05005** Copyright 2015-2022 The Khronos Group Inc.
Caio Marcelo de Oliveira Filho643cbe12020-05-31 13:53:41 -07006**
Nicolas Capens3b2cd312020-07-21 11:51:25 -04007** SPDX-License-Identifier: Apache-2.0
Caio Marcelo de Oliveira Filho643cbe12020-05-31 13:53:41 -07008*/
9
10/*
11** This header is generated from the Khronos Vulkan XML API Registry.
12**
13*/
14
Alexis Hetueedcf552022-08-04 15:51:15 -040015
Caio Marcelo de Oliveira Filho643cbe12020-05-31 13:53:41 -070016#ifdef __cplusplus
17extern "C" {
18#endif
19
Alexis Hetueedcf552022-08-04 15:51:15 -040020
21
Nicolas Capensb461e202021-05-13 09:06:18 -040022#define VK_KHR_video_queue 1
23VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR)
24VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR)
Nicolas Capens7d827e92022-08-19 08:58:19 -040025#define VK_KHR_VIDEO_QUEUE_SPEC_VERSION 5
Nicolas Capensb461e202021-05-13 09:06:18 -040026#define VK_KHR_VIDEO_QUEUE_EXTENSION_NAME "VK_KHR_video_queue"
27
Alexis Hetueedcf552022-08-04 15:51:15 -040028typedef 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
Nicolas Capensb461e202021-05-13 09:06:18 -040033} VkQueryResultStatusKHR;
34
Alexis Hetueedcf552022-08-04 15:51:15 -040035typedef enum VkVideoCodecOperationFlagBitsKHR {
Nicolas Capens7d827e92022-08-19 08:58:19 -040036 VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0,
Nicolas Capensb461e202021-05-13 09:06:18 -040037#ifdef VK_ENABLE_BETA_EXTENSIONS
Alexis Hetueedcf552022-08-04 15:51:15 -040038 VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT = 0x00010000,
Nicolas Capensb461e202021-05-13 09:06:18 -040039#endif
40#ifdef VK_ENABLE_BETA_EXTENSIONS
Alexis Hetueedcf552022-08-04 15:51:15 -040041 VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT = 0x00020000,
Sean Risser95b76912021-10-15 12:57:59 -040042#endif
43#ifdef VK_ENABLE_BETA_EXTENSIONS
Alexis Hetueedcf552022-08-04 15:51:15 -040044 VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT = 0x00000001,
Nicolas Capensb461e202021-05-13 09:06:18 -040045#endif
46#ifdef VK_ENABLE_BETA_EXTENSIONS
Alexis Hetueedcf552022-08-04 15:51:15 -040047 VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT = 0x00000002,
Nicolas Capensb461e202021-05-13 09:06:18 -040048#endif
Alexis Hetueedcf552022-08-04 15:51:15 -040049 VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
Nicolas Capensb461e202021-05-13 09:06:18 -040050} VkVideoCodecOperationFlagBitsKHR;
51typedef VkFlags VkVideoCodecOperationFlagsKHR;
52
Alexis Hetueedcf552022-08-04 15:51:15 -040053typedef enum VkVideoChromaSubsamplingFlagBitsKHR {
Nicolas Capens7d827e92022-08-19 08:58:19 -040054 VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_KHR = 0,
Alexis Hetueedcf552022-08-04 15:51:15 -040055 VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0x00000001,
56 VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0x00000002,
57 VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0x00000004,
58 VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x00000008,
59 VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
Nicolas Capensb461e202021-05-13 09:06:18 -040060} VkVideoChromaSubsamplingFlagBitsKHR;
61typedef VkFlags VkVideoChromaSubsamplingFlagsKHR;
62
Alexis Hetueedcf552022-08-04 15:51:15 -040063typedef enum VkVideoComponentBitDepthFlagBitsKHR {
64 VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0,
65 VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0x00000001,
66 VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0x00000004,
67 VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x00000010,
68 VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
Nicolas Capensb461e202021-05-13 09:06:18 -040069} VkVideoComponentBitDepthFlagBitsKHR;
70typedef VkFlags VkVideoComponentBitDepthFlagsKHR;
71
Alexis Hetueedcf552022-08-04 15:51:15 -040072typedef enum VkVideoCapabilityFlagBitsKHR {
73 VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
74 VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002,
75 VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
Nicolas Capens5167e102021-08-24 11:06:59 -040076} VkVideoCapabilityFlagBitsKHR;
77typedef VkFlags VkVideoCapabilityFlagsKHR;
Nicolas Capensb461e202021-05-13 09:06:18 -040078
Alexis Hetueedcf552022-08-04 15:51:15 -040079typedef enum VkVideoSessionCreateFlagBitsKHR {
Alexis Hetueedcf552022-08-04 15:51:15 -040080 VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
81 VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
Nicolas Capensb461e202021-05-13 09:06:18 -040082} VkVideoSessionCreateFlagBitsKHR;
83typedef VkFlags VkVideoSessionCreateFlagsKHR;
Nicolas Capens7d827e92022-08-19 08:58:19 -040084typedef VkFlags VkVideoSessionParametersCreateFlagsKHR;
Nicolas Capensb461e202021-05-13 09:06:18 -040085typedef VkFlags VkVideoBeginCodingFlagsKHR;
86typedef VkFlags VkVideoEndCodingFlagsKHR;
87
Alexis Hetueedcf552022-08-04 15:51:15 -040088typedef enum VkVideoCodingControlFlagBitsKHR {
Alexis Hetueedcf552022-08-04 15:51:15 -040089 VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0x00000001,
Nicolas Capens7d827e92022-08-19 08:58:19 -040090#ifdef VK_ENABLE_BETA_EXTENSIONS
91 VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 0x00000002,
92#endif
93#ifdef VK_ENABLE_BETA_EXTENSIONS
94 VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR = 0x00000004,
95#endif
Alexis Hetueedcf552022-08-04 15:51:15 -040096 VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
Nicolas Capensb461e202021-05-13 09:06:18 -040097} VkVideoCodingControlFlagBitsKHR;
98typedef VkFlags VkVideoCodingControlFlagsKHR;
Nicolas Capens7d827e92022-08-19 08:58:19 -040099typedef struct VkQueueFamilyQueryResultStatusPropertiesKHR {
Alexis Hetueedcf552022-08-04 15:51:15 -0400100 VkStructureType sType;
101 void* pNext;
102 VkBool32 queryResultStatusSupport;
Nicolas Capens7d827e92022-08-19 08:58:19 -0400103} VkQueueFamilyQueryResultStatusPropertiesKHR;
sugoi1bca23442022-01-26 17:49:23 -0500104
Nicolas Capens7d827e92022-08-19 08:58:19 -0400105typedef struct VkQueueFamilyVideoPropertiesKHR {
Alexis Hetueedcf552022-08-04 15:51:15 -0400106 VkStructureType sType;
107 void* pNext;
108 VkVideoCodecOperationFlagsKHR videoCodecOperations;
Nicolas Capens7d827e92022-08-19 08:58:19 -0400109} VkQueueFamilyVideoPropertiesKHR;
Nicolas Capensb461e202021-05-13 09:06:18 -0400110
Nicolas Capens7d827e92022-08-19 08:58:19 -0400111typedef struct VkVideoProfileInfoKHR {
Alexis Hetueedcf552022-08-04 15:51:15 -0400112 VkStructureType sType;
113 const void* pNext;
114 VkVideoCodecOperationFlagBitsKHR videoCodecOperation;
115 VkVideoChromaSubsamplingFlagsKHR chromaSubsampling;
116 VkVideoComponentBitDepthFlagsKHR lumaBitDepth;
117 VkVideoComponentBitDepthFlagsKHR chromaBitDepth;
Nicolas Capens7d827e92022-08-19 08:58:19 -0400118} VkVideoProfileInfoKHR;
Nicolas Capensb461e202021-05-13 09:06:18 -0400119
Nicolas Capens7d827e92022-08-19 08:58:19 -0400120typedef struct VkVideoProfileListInfoKHR {
121 VkStructureType sType;
122 const void* pNext;
123 uint32_t profileCount;
124 const VkVideoProfileInfoKHR* pProfiles;
125} VkVideoProfileListInfoKHR;
Nicolas Capensb461e202021-05-13 09:06:18 -0400126
Alexis Hetueedcf552022-08-04 15:51:15 -0400127typedef struct VkVideoCapabilitiesKHR {
128 VkStructureType sType;
129 void* pNext;
130 VkVideoCapabilityFlagsKHR capabilityFlags;
131 VkDeviceSize minBitstreamBufferOffsetAlignment;
132 VkDeviceSize minBitstreamBufferSizeAlignment;
133 VkExtent2D videoPictureExtentGranularity;
134 VkExtent2D minExtent;
135 VkExtent2D maxExtent;
136 uint32_t maxReferencePicturesSlotsCount;
137 uint32_t maxReferencePicturesActiveCount;
138 VkExtensionProperties stdHeaderVersion;
Nicolas Capensb461e202021-05-13 09:06:18 -0400139} VkVideoCapabilitiesKHR;
140
Alexis Hetueedcf552022-08-04 15:51:15 -0400141typedef struct VkPhysicalDeviceVideoFormatInfoKHR {
142 VkStructureType sType;
Nicolas Capens7d827e92022-08-19 08:58:19 -0400143 const void* pNext;
Alexis Hetueedcf552022-08-04 15:51:15 -0400144 VkImageUsageFlags imageUsage;
Nicolas Capensb461e202021-05-13 09:06:18 -0400145} VkPhysicalDeviceVideoFormatInfoKHR;
146
Alexis Hetueedcf552022-08-04 15:51:15 -0400147typedef struct VkVideoFormatPropertiesKHR {
148 VkStructureType sType;
149 void* pNext;
150 VkFormat format;
151 VkComponentMapping componentMapping;
152 VkImageCreateFlags imageCreateFlags;
153 VkImageType imageType;
154 VkImageTiling imageTiling;
155 VkImageUsageFlags imageUsageFlags;
Nicolas Capensb461e202021-05-13 09:06:18 -0400156} VkVideoFormatPropertiesKHR;
157
Nicolas Capens7d827e92022-08-19 08:58:19 -0400158typedef struct VkVideoPictureResourceInfoKHR {
Alexis Hetueedcf552022-08-04 15:51:15 -0400159 VkStructureType sType;
160 const void* pNext;
161 VkOffset2D codedOffset;
162 VkExtent2D codedExtent;
163 uint32_t baseArrayLayer;
164 VkImageView imageViewBinding;
Nicolas Capens7d827e92022-08-19 08:58:19 -0400165} VkVideoPictureResourceInfoKHR;
Nicolas Capensb461e202021-05-13 09:06:18 -0400166
Nicolas Capens7d827e92022-08-19 08:58:19 -0400167typedef struct VkVideoReferenceSlotInfoKHR {
168 VkStructureType sType;
169 const void* pNext;
170 int8_t slotIndex;
171 const VkVideoPictureResourceInfoKHR* pPictureResource;
172} VkVideoReferenceSlotInfoKHR;
Nicolas Capensb461e202021-05-13 09:06:18 -0400173
Nicolas Capens7d827e92022-08-19 08:58:19 -0400174typedef struct VkVideoSessionMemoryRequirementsKHR {
175 VkStructureType sType;
176 void* pNext;
177 uint32_t memoryBindIndex;
178 VkMemoryRequirements memoryRequirements;
179} VkVideoSessionMemoryRequirementsKHR;
Nicolas Capensb461e202021-05-13 09:06:18 -0400180
Nicolas Capens7d827e92022-08-19 08:58:19 -0400181typedef struct VkBindVideoSessionMemoryInfoKHR {
Alexis Hetueedcf552022-08-04 15:51:15 -0400182 VkStructureType sType;
183 const void* pNext;
184 uint32_t memoryBindIndex;
185 VkDeviceMemory memory;
186 VkDeviceSize memoryOffset;
187 VkDeviceSize memorySize;
Nicolas Capens7d827e92022-08-19 08:58:19 -0400188} VkBindVideoSessionMemoryInfoKHR;
Nicolas Capensb461e202021-05-13 09:06:18 -0400189
Alexis Hetueedcf552022-08-04 15:51:15 -0400190typedef struct VkVideoSessionCreateInfoKHR {
191 VkStructureType sType;
192 const void* pNext;
193 uint32_t queueFamilyIndex;
194 VkVideoSessionCreateFlagsKHR flags;
Nicolas Capens7d827e92022-08-19 08:58:19 -0400195 const VkVideoProfileInfoKHR* pVideoProfile;
Alexis Hetueedcf552022-08-04 15:51:15 -0400196 VkFormat pictureFormat;
197 VkExtent2D maxCodedExtent;
198 VkFormat referencePicturesFormat;
199 uint32_t maxReferencePicturesSlotsCount;
200 uint32_t maxReferencePicturesActiveCount;
201 const VkExtensionProperties* pStdHeaderVersion;
Nicolas Capensb461e202021-05-13 09:06:18 -0400202} VkVideoSessionCreateInfoKHR;
203
Alexis Hetueedcf552022-08-04 15:51:15 -0400204typedef struct VkVideoSessionParametersCreateInfoKHR {
Nicolas Capens7d827e92022-08-19 08:58:19 -0400205 VkStructureType sType;
206 const void* pNext;
207 VkVideoSessionParametersCreateFlagsKHR flags;
208 VkVideoSessionParametersKHR videoSessionParametersTemplate;
209 VkVideoSessionKHR videoSession;
Nicolas Capensb461e202021-05-13 09:06:18 -0400210} VkVideoSessionParametersCreateInfoKHR;
211
Alexis Hetueedcf552022-08-04 15:51:15 -0400212typedef struct VkVideoSessionParametersUpdateInfoKHR {
213 VkStructureType sType;
214 const void* pNext;
215 uint32_t updateSequenceCount;
Nicolas Capensb461e202021-05-13 09:06:18 -0400216} VkVideoSessionParametersUpdateInfoKHR;
217
Alexis Hetueedcf552022-08-04 15:51:15 -0400218typedef struct VkVideoBeginCodingInfoKHR {
219 VkStructureType sType;
220 const void* pNext;
221 VkVideoBeginCodingFlagsKHR flags;
Alexis Hetueedcf552022-08-04 15:51:15 -0400222 VkVideoSessionKHR videoSession;
223 VkVideoSessionParametersKHR videoSessionParameters;
224 uint32_t referenceSlotCount;
Nicolas Capens7d827e92022-08-19 08:58:19 -0400225 const VkVideoReferenceSlotInfoKHR* pReferenceSlots;
Nicolas Capensb461e202021-05-13 09:06:18 -0400226} VkVideoBeginCodingInfoKHR;
227
Alexis Hetueedcf552022-08-04 15:51:15 -0400228typedef struct VkVideoEndCodingInfoKHR {
229 VkStructureType sType;
230 const void* pNext;
231 VkVideoEndCodingFlagsKHR flags;
Nicolas Capensb461e202021-05-13 09:06:18 -0400232} VkVideoEndCodingInfoKHR;
233
Alexis Hetueedcf552022-08-04 15:51:15 -0400234typedef struct VkVideoCodingControlInfoKHR {
235 VkStructureType sType;
236 const void* pNext;
237 VkVideoCodingControlFlagsKHR flags;
Nicolas Capensb461e202021-05-13 09:06:18 -0400238} VkVideoCodingControlInfoKHR;
239
Nicolas Capens7d827e92022-08-19 08:58:19 -0400240typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileInfoKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities);
Alexis Hetueedcf552022-08-04 15:51:15 -0400241typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties);
242typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession);
243typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator);
Nicolas Capens7d827e92022-08-19 08:58:19 -0400244typedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pMemoryRequirementsCount, VkVideoSessionMemoryRequirementsKHR* pMemoryRequirements);
245typedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t bindSessionMemoryInfoCount, const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos);
Alexis Hetueedcf552022-08-04 15:51:15 -0400246typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters);
247typedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
248typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator);
249typedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo);
250typedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo);
251typedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo);
Nicolas Capensb461e202021-05-13 09:06:18 -0400252
253#ifndef VK_NO_PROTOTYPES
254VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR(
Alexis Hetueedcf552022-08-04 15:51:15 -0400255 VkPhysicalDevice physicalDevice,
Nicolas Capens7d827e92022-08-19 08:58:19 -0400256 const VkVideoProfileInfoKHR* pVideoProfile,
Alexis Hetueedcf552022-08-04 15:51:15 -0400257 VkVideoCapabilitiesKHR* pCapabilities);
Nicolas Capensb461e202021-05-13 09:06:18 -0400258
259VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR(
Alexis Hetueedcf552022-08-04 15:51:15 -0400260 VkPhysicalDevice physicalDevice,
261 const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo,
262 uint32_t* pVideoFormatPropertyCount,
263 VkVideoFormatPropertiesKHR* pVideoFormatProperties);
Nicolas Capensb461e202021-05-13 09:06:18 -0400264
265VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR(
Alexis Hetueedcf552022-08-04 15:51:15 -0400266 VkDevice device,
267 const VkVideoSessionCreateInfoKHR* pCreateInfo,
268 const VkAllocationCallbacks* pAllocator,
269 VkVideoSessionKHR* pVideoSession);
Nicolas Capensb461e202021-05-13 09:06:18 -0400270
271VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR(
Alexis Hetueedcf552022-08-04 15:51:15 -0400272 VkDevice device,
273 VkVideoSessionKHR videoSession,
274 const VkAllocationCallbacks* pAllocator);
Nicolas Capensb461e202021-05-13 09:06:18 -0400275
276VKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR(
Alexis Hetueedcf552022-08-04 15:51:15 -0400277 VkDevice device,
278 VkVideoSessionKHR videoSession,
Nicolas Capens7d827e92022-08-19 08:58:19 -0400279 uint32_t* pMemoryRequirementsCount,
280 VkVideoSessionMemoryRequirementsKHR* pMemoryRequirements);
Nicolas Capensb461e202021-05-13 09:06:18 -0400281
282VKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR(
Alexis Hetueedcf552022-08-04 15:51:15 -0400283 VkDevice device,
284 VkVideoSessionKHR videoSession,
Nicolas Capens7d827e92022-08-19 08:58:19 -0400285 uint32_t bindSessionMemoryInfoCount,
286 const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos);
Nicolas Capensb461e202021-05-13 09:06:18 -0400287
288VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR(
Alexis Hetueedcf552022-08-04 15:51:15 -0400289 VkDevice device,
290 const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
291 const VkAllocationCallbacks* pAllocator,
292 VkVideoSessionParametersKHR* pVideoSessionParameters);
Nicolas Capensb461e202021-05-13 09:06:18 -0400293
294VKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR(
Alexis Hetueedcf552022-08-04 15:51:15 -0400295 VkDevice device,
296 VkVideoSessionParametersKHR videoSessionParameters,
297 const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
Nicolas Capensb461e202021-05-13 09:06:18 -0400298
299VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR(
Alexis Hetueedcf552022-08-04 15:51:15 -0400300 VkDevice device,
301 VkVideoSessionParametersKHR videoSessionParameters,
302 const VkAllocationCallbacks* pAllocator);
Nicolas Capensb461e202021-05-13 09:06:18 -0400303
304VKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR(
Alexis Hetueedcf552022-08-04 15:51:15 -0400305 VkCommandBuffer commandBuffer,
306 const VkVideoBeginCodingInfoKHR* pBeginInfo);
Nicolas Capensb461e202021-05-13 09:06:18 -0400307
308VKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR(
Alexis Hetueedcf552022-08-04 15:51:15 -0400309 VkCommandBuffer commandBuffer,
310 const VkVideoEndCodingInfoKHR* pEndCodingInfo);
Nicolas Capensb461e202021-05-13 09:06:18 -0400311
312VKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR(
Alexis Hetueedcf552022-08-04 15:51:15 -0400313 VkCommandBuffer commandBuffer,
314 const VkVideoCodingControlInfoKHR* pCodingControlInfo);
Nicolas Capensb461e202021-05-13 09:06:18 -0400315#endif
316
Alexis Hetueedcf552022-08-04 15:51:15 -0400317
Nicolas Capensb461e202021-05-13 09:06:18 -0400318#define VK_KHR_video_decode_queue 1
Nicolas Capens7d827e92022-08-19 08:58:19 -0400319#define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 5
Nicolas Capensb461e202021-05-13 09:06:18 -0400320#define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue"
321
Alexis Hetueedcf552022-08-04 15:51:15 -0400322typedef enum VkVideoDecodeCapabilityFlagBitsKHR {
Alexis Hetueedcf552022-08-04 15:51:15 -0400323 VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 0x00000001,
324 VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 0x00000002,
325 VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
Alexis Hetud013fbff2022-04-06 14:00:06 -0400326} VkVideoDecodeCapabilityFlagBitsKHR;
327typedef VkFlags VkVideoDecodeCapabilityFlagsKHR;
Nicolas Capensb461e202021-05-13 09:06:18 -0400328typedef VkFlags VkVideoDecodeFlagsKHR;
Alexis Hetueedcf552022-08-04 15:51:15 -0400329typedef struct VkVideoDecodeCapabilitiesKHR {
330 VkStructureType sType;
331 void* pNext;
332 VkVideoDecodeCapabilityFlagsKHR flags;
Alexis Hetud013fbff2022-04-06 14:00:06 -0400333} VkVideoDecodeCapabilitiesKHR;
334
Alexis Hetueedcf552022-08-04 15:51:15 -0400335typedef struct VkVideoDecodeInfoKHR {
Nicolas Capens7d827e92022-08-19 08:58:19 -0400336 VkStructureType sType;
337 const void* pNext;
338 VkVideoDecodeFlagsKHR flags;
339 VkBuffer srcBuffer;
340 VkDeviceSize srcBufferOffset;
341 VkDeviceSize srcBufferRange;
342 VkVideoPictureResourceInfoKHR dstPictureResource;
343 const VkVideoReferenceSlotInfoKHR* pSetupReferenceSlot;
344 uint32_t referenceSlotCount;
345 const VkVideoReferenceSlotInfoKHR* pReferenceSlots;
Nicolas Capensb461e202021-05-13 09:06:18 -0400346} VkVideoDecodeInfoKHR;
347
Alexis Hetueedcf552022-08-04 15:51:15 -0400348typedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo);
Nicolas Capensb461e202021-05-13 09:06:18 -0400349
350#ifndef VK_NO_PROTOTYPES
351VKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR(
Alexis Hetueedcf552022-08-04 15:51:15 -0400352 VkCommandBuffer commandBuffer,
353 const VkVideoDecodeInfoKHR* pFrameInfo);
Nicolas Capensb461e202021-05-13 09:06:18 -0400354#endif
355
Alexis Hetueedcf552022-08-04 15:51:15 -0400356
Yiwei Zhanga3b21352020-10-05 22:28:19 -0700357#define VK_KHR_portability_subset 1
358#define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1
359#define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset"
Alexis Hetueedcf552022-08-04 15:51:15 -0400360typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR {
361 VkStructureType sType;
362 void* pNext;
363 VkBool32 constantAlphaColorBlendFactors;
364 VkBool32 events;
365 VkBool32 imageViewFormatReinterpretation;
366 VkBool32 imageViewFormatSwizzle;
367 VkBool32 imageView2DOn3DImage;
368 VkBool32 multisampleArrayImage;
369 VkBool32 mutableComparisonSamplers;
370 VkBool32 pointPolygons;
371 VkBool32 samplerMipLodBias;
372 VkBool32 separateStencilMaskRef;
373 VkBool32 shaderSampleRateInterpolationFunctions;
374 VkBool32 tessellationIsolines;
375 VkBool32 tessellationPointMode;
376 VkBool32 triangleFans;
377 VkBool32 vertexAttributeAccessBeyondStride;
Yiwei Zhanga3b21352020-10-05 22:28:19 -0700378} VkPhysicalDevicePortabilitySubsetFeaturesKHR;
379
Alexis Hetueedcf552022-08-04 15:51:15 -0400380typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR {
381 VkStructureType sType;
382 void* pNext;
383 uint32_t minVertexInputBindingStrideAlignment;
Yiwei Zhanga3b21352020-10-05 22:28:19 -0700384} VkPhysicalDevicePortabilitySubsetPropertiesKHR;
385
Alexis Hetueedcf552022-08-04 15:51:15 -0400386
387
Nicolas Capensb461e202021-05-13 09:06:18 -0400388#define VK_KHR_video_encode_queue 1
Nicolas Capens7d827e92022-08-19 08:58:19 -0400389#define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 6
Nicolas Capensb461e202021-05-13 09:06:18 -0400390#define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue"
Nicolas Capensb461e202021-05-13 09:06:18 -0400391typedef VkFlags VkVideoEncodeFlagsKHR;
Caio Marcelo de Oliveira Filho643cbe12020-05-31 13:53:41 -0700392
Alexis Hetueedcf552022-08-04 15:51:15 -0400393typedef enum VkVideoEncodeCapabilityFlagBitsKHR {
Alexis Hetueedcf552022-08-04 15:51:15 -0400394 VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 0x00000001,
395 VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
Alexis Hetud013fbff2022-04-06 14:00:06 -0400396} VkVideoEncodeCapabilityFlagBitsKHR;
397typedef VkFlags VkVideoEncodeCapabilityFlagsKHR;
Caio Marcelo de Oliveira Filho643cbe12020-05-31 13:53:41 -0700398
Alexis Hetueedcf552022-08-04 15:51:15 -0400399typedef enum VkVideoEncodeRateControlModeFlagBitsKHR {
400 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR = 0,
401 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 1,
402 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 2,
403 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
Nicolas Capensb461e202021-05-13 09:06:18 -0400404} VkVideoEncodeRateControlModeFlagBitsKHR;
405typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR;
Alexis Hetud013fbff2022-04-06 14:00:06 -0400406typedef VkFlags VkVideoEncodeRateControlFlagsKHR;
Alexis Hetueedcf552022-08-04 15:51:15 -0400407typedef struct VkVideoEncodeInfoKHR {
Nicolas Capens7d827e92022-08-19 08:58:19 -0400408 VkStructureType sType;
409 const void* pNext;
410 VkVideoEncodeFlagsKHR flags;
411 uint32_t qualityLevel;
412 VkBuffer dstBitstreamBuffer;
413 VkDeviceSize dstBitstreamBufferOffset;
414 VkDeviceSize dstBitstreamBufferMaxRange;
415 VkVideoPictureResourceInfoKHR srcPictureResource;
416 const VkVideoReferenceSlotInfoKHR* pSetupReferenceSlot;
417 uint32_t referenceSlotCount;
418 const VkVideoReferenceSlotInfoKHR* pReferenceSlots;
419 uint32_t precedingExternallyEncodedBytes;
Nicolas Capensb461e202021-05-13 09:06:18 -0400420} VkVideoEncodeInfoKHR;
Caio Marcelo de Oliveira Filho643cbe12020-05-31 13:53:41 -0700421
Alexis Hetueedcf552022-08-04 15:51:15 -0400422typedef struct VkVideoEncodeCapabilitiesKHR {
423 VkStructureType sType;
424 void* pNext;
425 VkVideoEncodeCapabilityFlagsKHR flags;
426 VkVideoEncodeRateControlModeFlagsKHR rateControlModes;
427 uint8_t rateControlLayerCount;
428 uint8_t qualityLevelCount;
429 VkExtent2D inputImageDataFillAlignment;
Alexis Hetud013fbff2022-04-06 14:00:06 -0400430} VkVideoEncodeCapabilitiesKHR;
431
Alexis Hetueedcf552022-08-04 15:51:15 -0400432typedef struct VkVideoEncodeRateControlLayerInfoKHR {
433 VkStructureType sType;
434 const void* pNext;
435 uint32_t averageBitrate;
436 uint32_t maxBitrate;
437 uint32_t frameRateNumerator;
438 uint32_t frameRateDenominator;
439 uint32_t virtualBufferSizeInMs;
440 uint32_t initialVirtualBufferSizeInMs;
sugoi1bca23442022-01-26 17:49:23 -0500441} VkVideoEncodeRateControlLayerInfoKHR;
442
Alexis Hetueedcf552022-08-04 15:51:15 -0400443typedef struct VkVideoEncodeRateControlInfoKHR {
444 VkStructureType sType;
445 const void* pNext;
446 VkVideoEncodeRateControlFlagsKHR flags;
447 VkVideoEncodeRateControlModeFlagBitsKHR rateControlMode;
448 uint8_t layerCount;
449 const VkVideoEncodeRateControlLayerInfoKHR* pLayerConfigs;
Nicolas Capensb461e202021-05-13 09:06:18 -0400450} VkVideoEncodeRateControlInfoKHR;
Caio Marcelo de Oliveira Filho643cbe12020-05-31 13:53:41 -0700451
Alexis Hetueedcf552022-08-04 15:51:15 -0400452typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo);
Caio Marcelo de Oliveira Filho643cbe12020-05-31 13:53:41 -0700453
454#ifndef VK_NO_PROTOTYPES
Nicolas Capensb461e202021-05-13 09:06:18 -0400455VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR(
Alexis Hetueedcf552022-08-04 15:51:15 -0400456 VkCommandBuffer commandBuffer,
457 const VkVideoEncodeInfoKHR* pEncodeInfo);
Caio Marcelo de Oliveira Filho643cbe12020-05-31 13:53:41 -0700458#endif
459
Alexis Hetueedcf552022-08-04 15:51:15 -0400460
Nicolas Capensb461e202021-05-13 09:06:18 -0400461#define VK_EXT_video_encode_h264 1
462#include "vk_video/vulkan_video_codec_h264std.h"
463#include "vk_video/vulkan_video_codec_h264std_encode.h"
Nicolas Capens7d827e92022-08-19 08:58:19 -0400464#define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 8
Nicolas Capensb461e202021-05-13 09:06:18 -0400465#define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264"
466
Nicolas Capens7d827e92022-08-19 08:58:19 -0400467typedef enum VkVideoEncodeH264RateControlStructureEXT {
468 VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0,
469 VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_EXT = 1,
470 VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_EXT = 2,
471 VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_MAX_ENUM_EXT = 0x7FFFFFFF
472} VkVideoEncodeH264RateControlStructureEXT;
473
Alexis Hetueedcf552022-08-04 15:51:15 -0400474typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT {
475 VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_ENABLED_BIT_EXT = 0x00000001,
476 VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_DISABLED_BIT_EXT = 0x00000002,
477 VK_VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000004,
478 VK_VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXT = 0x00000008,
479 VK_VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000010,
480 VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020,
481 VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000040,
482 VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000080,
483 VK_VIDEO_ENCODE_H264_CAPABILITY_PIC_INIT_QP_MINUS26_BIT_EXT = 0x00000100,
484 VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00000200,
485 VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_EXPLICIT_BIT_EXT = 0x00000400,
486 VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_IMPLICIT_BIT_EXT = 0x00000800,
487 VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00001000,
488 VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00002000,
489 VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00004000,
490 VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00008000,
491 VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00010000,
492 VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00020000,
493 VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00040000,
494 VK_VIDEO_ENCODE_H264_CAPABILITY_DISABLE_DIRECT_SPATIAL_MV_PRED_BIT_EXT = 0x00080000,
495 VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00100000,
496 VK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT = 0x00200000,
497 VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT = 0x00400000,
498 VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x00800000,
499 VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x01000000,
500 VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
Nicolas Capens5167e102021-08-24 11:06:59 -0400501} VkVideoEncodeH264CapabilityFlagBitsEXT;
502typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT;
Nicolas Capensb461e202021-05-13 09:06:18 -0400503
Alexis Hetueedcf552022-08-04 15:51:15 -0400504typedef enum VkVideoEncodeH264InputModeFlagBitsEXT {
505 VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 0x00000001,
506 VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 0x00000002,
507 VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
508 VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
Nicolas Capensb461e202021-05-13 09:06:18 -0400509} VkVideoEncodeH264InputModeFlagBitsEXT;
510typedef VkFlags VkVideoEncodeH264InputModeFlagsEXT;
511
Alexis Hetueedcf552022-08-04 15:51:15 -0400512typedef enum VkVideoEncodeH264OutputModeFlagBitsEXT {
513 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001,
514 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002,
515 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
516 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
Nicolas Capensb461e202021-05-13 09:06:18 -0400517} VkVideoEncodeH264OutputModeFlagBitsEXT;
518typedef VkFlags VkVideoEncodeH264OutputModeFlagsEXT;
Alexis Hetueedcf552022-08-04 15:51:15 -0400519typedef struct VkVideoEncodeH264CapabilitiesEXT {
520 VkStructureType sType;
521 void* pNext;
522 VkVideoEncodeH264CapabilityFlagsEXT flags;
523 VkVideoEncodeH264InputModeFlagsEXT inputModeFlags;
524 VkVideoEncodeH264OutputModeFlagsEXT outputModeFlags;
525 uint8_t maxPPictureL0ReferenceCount;
526 uint8_t maxBPictureL0ReferenceCount;
527 uint8_t maxL1ReferenceCount;
528 VkBool32 motionVectorsOverPicBoundariesFlag;
529 uint32_t maxBytesPerPicDenom;
530 uint32_t maxBitsPerMbDenom;
531 uint32_t log2MaxMvLengthHorizontal;
532 uint32_t log2MaxMvLengthVertical;
Nicolas Capensb461e202021-05-13 09:06:18 -0400533} VkVideoEncodeH264CapabilitiesEXT;
534
Alexis Hetueedcf552022-08-04 15:51:15 -0400535typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT {
536 VkStructureType sType;
537 const void* pNext;
538 uint32_t spsStdCount;
539 const StdVideoH264SequenceParameterSet* pSpsStd;
540 uint32_t ppsStdCount;
541 const StdVideoH264PictureParameterSet* pPpsStd;
Nicolas Capensb461e202021-05-13 09:06:18 -0400542} VkVideoEncodeH264SessionParametersAddInfoEXT;
543
Alexis Hetueedcf552022-08-04 15:51:15 -0400544typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT {
545 VkStructureType sType;
546 const void* pNext;
547 uint32_t maxSpsStdCount;
548 uint32_t maxPpsStdCount;
549 const VkVideoEncodeH264SessionParametersAddInfoEXT* pParametersAddInfo;
Nicolas Capensb461e202021-05-13 09:06:18 -0400550} VkVideoEncodeH264SessionParametersCreateInfoEXT;
551
Alexis Hetueedcf552022-08-04 15:51:15 -0400552typedef struct VkVideoEncodeH264DpbSlotInfoEXT {
553 VkStructureType sType;
554 const void* pNext;
555 int8_t slotIndex;
556 const StdVideoEncodeH264ReferenceInfo* pStdReferenceInfo;
Nicolas Capensb461e202021-05-13 09:06:18 -0400557} VkVideoEncodeH264DpbSlotInfoEXT;
558
Nicolas Capens7d827e92022-08-19 08:58:19 -0400559typedef struct VkVideoEncodeH264ReferenceListsInfoEXT {
Alexis Hetueedcf552022-08-04 15:51:15 -0400560 VkStructureType sType;
561 const void* pNext;
562 uint8_t referenceList0EntryCount;
563 const VkVideoEncodeH264DpbSlotInfoEXT* pReferenceList0Entries;
564 uint8_t referenceList1EntryCount;
565 const VkVideoEncodeH264DpbSlotInfoEXT* pReferenceList1Entries;
566 const StdVideoEncodeH264RefMemMgmtCtrlOperations* pMemMgmtCtrlOperations;
Nicolas Capens7d827e92022-08-19 08:58:19 -0400567} VkVideoEncodeH264ReferenceListsInfoEXT;
Alexis Hetud013fbff2022-04-06 14:00:06 -0400568
Nicolas Capens7d827e92022-08-19 08:58:19 -0400569typedef struct VkVideoEncodeH264NaluSliceInfoEXT {
570 VkStructureType sType;
571 const void* pNext;
572 uint32_t mbCount;
573 const VkVideoEncodeH264ReferenceListsInfoEXT* pReferenceFinalLists;
574 const StdVideoEncodeH264SliceHeader* pSliceHeaderStd;
575} VkVideoEncodeH264NaluSliceInfoEXT;
Nicolas Capensb461e202021-05-13 09:06:18 -0400576
Alexis Hetueedcf552022-08-04 15:51:15 -0400577typedef struct VkVideoEncodeH264VclFrameInfoEXT {
Nicolas Capens7d827e92022-08-19 08:58:19 -0400578 VkStructureType sType;
579 const void* pNext;
580 const VkVideoEncodeH264ReferenceListsInfoEXT* pReferenceFinalLists;
581 uint32_t naluSliceEntryCount;
582 const VkVideoEncodeH264NaluSliceInfoEXT* pNaluSliceEntries;
583 const StdVideoEncodeH264PictureInfo* pCurrentPictureInfo;
Nicolas Capensb461e202021-05-13 09:06:18 -0400584} VkVideoEncodeH264VclFrameInfoEXT;
585
Nicolas Capens7d827e92022-08-19 08:58:19 -0400586typedef struct VkVideoEncodeH264EmitPictureParametersInfoEXT {
Alexis Hetueedcf552022-08-04 15:51:15 -0400587 VkStructureType sType;
588 const void* pNext;
589 uint8_t spsId;
590 VkBool32 emitSpsEnable;
591 uint32_t ppsIdEntryCount;
592 const uint8_t* ppsIdEntries;
Nicolas Capens7d827e92022-08-19 08:58:19 -0400593} VkVideoEncodeH264EmitPictureParametersInfoEXT;
Nicolas Capensb461e202021-05-13 09:06:18 -0400594
Nicolas Capens7d827e92022-08-19 08:58:19 -0400595typedef struct VkVideoEncodeH264ProfileInfoEXT {
Alexis Hetueedcf552022-08-04 15:51:15 -0400596 VkStructureType sType;
597 const void* pNext;
598 StdVideoH264ProfileIdc stdProfileIdc;
Nicolas Capens7d827e92022-08-19 08:58:19 -0400599} VkVideoEncodeH264ProfileInfoEXT;
Nicolas Capensb461e202021-05-13 09:06:18 -0400600
Alexis Hetueedcf552022-08-04 15:51:15 -0400601typedef struct VkVideoEncodeH264RateControlInfoEXT {
Nicolas Capens7d827e92022-08-19 08:58:19 -0400602 VkStructureType sType;
603 const void* pNext;
604 uint32_t gopFrameCount;
605 uint32_t idrPeriod;
606 uint32_t consecutiveBFrameCount;
607 VkVideoEncodeH264RateControlStructureEXT rateControlStructure;
608 uint8_t temporalLayerCount;
sugoi1bca23442022-01-26 17:49:23 -0500609} VkVideoEncodeH264RateControlInfoEXT;
610
Alexis Hetueedcf552022-08-04 15:51:15 -0400611typedef struct VkVideoEncodeH264QpEXT {
612 int32_t qpI;
613 int32_t qpP;
614 int32_t qpB;
sugoi1bca23442022-01-26 17:49:23 -0500615} VkVideoEncodeH264QpEXT;
616
Alexis Hetueedcf552022-08-04 15:51:15 -0400617typedef struct VkVideoEncodeH264FrameSizeEXT {
618 uint32_t frameISize;
619 uint32_t framePSize;
620 uint32_t frameBSize;
sugoi1bca23442022-01-26 17:49:23 -0500621} VkVideoEncodeH264FrameSizeEXT;
622
Alexis Hetueedcf552022-08-04 15:51:15 -0400623typedef struct VkVideoEncodeH264RateControlLayerInfoEXT {
624 VkStructureType sType;
625 const void* pNext;
626 uint8_t temporalLayerId;
627 VkBool32 useInitialRcQp;
628 VkVideoEncodeH264QpEXT initialRcQp;
629 VkBool32 useMinQp;
630 VkVideoEncodeH264QpEXT minQp;
631 VkBool32 useMaxQp;
632 VkVideoEncodeH264QpEXT maxQp;
633 VkBool32 useMaxFrameSize;
634 VkVideoEncodeH264FrameSizeEXT maxFrameSize;
sugoi1bca23442022-01-26 17:49:23 -0500635} VkVideoEncodeH264RateControlLayerInfoEXT;
636
Alexis Hetueedcf552022-08-04 15:51:15 -0400637
638
Sean Risser95b76912021-10-15 12:57:59 -0400639#define VK_EXT_video_encode_h265 1
640#include "vk_video/vulkan_video_codec_h265std.h"
641#include "vk_video/vulkan_video_codec_h265std_encode.h"
Nicolas Capens7d827e92022-08-19 08:58:19 -0400642#define VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION 8
Sean Risser95b76912021-10-15 12:57:59 -0400643#define VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_EXT_video_encode_h265"
Alexis Hetud013fbff2022-04-06 14:00:06 -0400644
Nicolas Capens7d827e92022-08-19 08:58:19 -0400645typedef enum VkVideoEncodeH265RateControlStructureEXT {
646 VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0,
647 VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_EXT = 1,
648 VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_EXT = 2,
649 VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_MAX_ENUM_EXT = 0x7FFFFFFF
650} VkVideoEncodeH265RateControlStructureEXT;
651
Alexis Hetueedcf552022-08-04 15:51:15 -0400652typedef enum VkVideoEncodeH265CapabilityFlagBitsEXT {
653 VK_VIDEO_ENCODE_H265_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000001,
654 VK_VIDEO_ENCODE_H265_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000002,
655 VK_VIDEO_ENCODE_H265_CAPABILITY_SAMPLE_ADAPTIVE_OFFSET_ENABLED_BIT_EXT = 0x00000004,
656 VK_VIDEO_ENCODE_H265_CAPABILITY_PCM_ENABLE_BIT_EXT = 0x00000008,
657 VK_VIDEO_ENCODE_H265_CAPABILITY_SPS_TEMPORAL_MVP_ENABLED_BIT_EXT = 0x00000010,
658 VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020,
659 VK_VIDEO_ENCODE_H265_CAPABILITY_INIT_QP_MINUS26_BIT_EXT = 0x00000040,
660 VK_VIDEO_ENCODE_H265_CAPABILITY_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT = 0x00000080,
661 VK_VIDEO_ENCODE_H265_CAPABILITY_SIGN_DATA_HIDING_ENABLED_BIT_EXT = 0x00000100,
662 VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_ENABLED_BIT_EXT = 0x00000200,
663 VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_DISABLED_BIT_EXT = 0x00000400,
664 VK_VIDEO_ENCODE_H265_CAPABILITY_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_BIT_EXT = 0x00000800,
665 VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00001000,
666 VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_BIPRED_BIT_EXT = 0x00002000,
667 VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00004000,
668 VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSQUANT_BYPASS_ENABLED_BIT_EXT = 0x00008000,
669 VK_VIDEO_ENCODE_H265_CAPABILITY_ENTROPY_CODING_SYNC_ENABLED_BIT_EXT = 0x00010000,
670 VK_VIDEO_ENCODE_H265_CAPABILITY_DEBLOCKING_FILTER_OVERRIDE_ENABLED_BIT_EXT = 0x00020000,
671 VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_FRAME_BIT_EXT = 0x00040000,
672 VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_PER_TILE_BIT_EXT = 0x00080000,
673 VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_SLICE_BIT_EXT = 0x00100000,
674 VK_VIDEO_ENCODE_H265_CAPABILITY_SLICE_SEGMENT_CTB_COUNT_BIT_EXT = 0x00200000,
675 VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT = 0x00400000,
676 VK_VIDEO_ENCODE_H265_CAPABILITY_DEPENDENT_SLICE_SEGMENT_BIT_EXT = 0x00800000,
677 VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x01000000,
678 VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x02000000,
679 VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
Alexis Hetud013fbff2022-04-06 14:00:06 -0400680} VkVideoEncodeH265CapabilityFlagBitsEXT;
Sean Risser95b76912021-10-15 12:57:59 -0400681typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT;
682
Alexis Hetueedcf552022-08-04 15:51:15 -0400683typedef enum VkVideoEncodeH265InputModeFlagBitsEXT {
684 VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT = 0x00000001,
685 VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_SEGMENT_BIT_EXT = 0x00000002,
686 VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
687 VK_VIDEO_ENCODE_H265_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
Sean Risser95b76912021-10-15 12:57:59 -0400688} VkVideoEncodeH265InputModeFlagBitsEXT;
689typedef VkFlags VkVideoEncodeH265InputModeFlagsEXT;
690
Alexis Hetueedcf552022-08-04 15:51:15 -0400691typedef enum VkVideoEncodeH265OutputModeFlagBitsEXT {
692 VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001,
693 VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_SEGMENT_BIT_EXT = 0x00000002,
694 VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
695 VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
Sean Risser95b76912021-10-15 12:57:59 -0400696} VkVideoEncodeH265OutputModeFlagBitsEXT;
697typedef VkFlags VkVideoEncodeH265OutputModeFlagsEXT;
Sean Risser95b76912021-10-15 12:57:59 -0400698
Alexis Hetueedcf552022-08-04 15:51:15 -0400699typedef enum VkVideoEncodeH265CtbSizeFlagBitsEXT {
700 VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT = 0x00000001,
701 VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT = 0x00000002,
702 VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT = 0x00000004,
703 VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
Sean Risser95b76912021-10-15 12:57:59 -0400704} VkVideoEncodeH265CtbSizeFlagBitsEXT;
705typedef VkFlags VkVideoEncodeH265CtbSizeFlagsEXT;
sugoi1bca23442022-01-26 17:49:23 -0500706
Alexis Hetueedcf552022-08-04 15:51:15 -0400707typedef enum VkVideoEncodeH265TransformBlockSizeFlagBitsEXT {
708 VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_EXT = 0x00000001,
709 VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_EXT = 0x00000002,
710 VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_EXT = 0x00000004,
711 VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_EXT = 0x00000008,
712 VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
Alexis Hetud013fbff2022-04-06 14:00:06 -0400713} VkVideoEncodeH265TransformBlockSizeFlagBitsEXT;
714typedef VkFlags VkVideoEncodeH265TransformBlockSizeFlagsEXT;
Alexis Hetueedcf552022-08-04 15:51:15 -0400715typedef struct VkVideoEncodeH265CapabilitiesEXT {
716 VkStructureType sType;
717 void* pNext;
718 VkVideoEncodeH265CapabilityFlagsEXT flags;
719 VkVideoEncodeH265InputModeFlagsEXT inputModeFlags;
720 VkVideoEncodeH265OutputModeFlagsEXT outputModeFlags;
721 VkVideoEncodeH265CtbSizeFlagsEXT ctbSizes;
722 VkVideoEncodeH265TransformBlockSizeFlagsEXT transformBlockSizes;
723 uint8_t maxPPictureL0ReferenceCount;
724 uint8_t maxBPictureL0ReferenceCount;
725 uint8_t maxL1ReferenceCount;
726 uint8_t maxSubLayersCount;
727 uint8_t minLog2MinLumaCodingBlockSizeMinus3;
728 uint8_t maxLog2MinLumaCodingBlockSizeMinus3;
729 uint8_t minLog2MinLumaTransformBlockSizeMinus2;
730 uint8_t maxLog2MinLumaTransformBlockSizeMinus2;
731 uint8_t minMaxTransformHierarchyDepthInter;
732 uint8_t maxMaxTransformHierarchyDepthInter;
733 uint8_t minMaxTransformHierarchyDepthIntra;
734 uint8_t maxMaxTransformHierarchyDepthIntra;
735 uint8_t maxDiffCuQpDeltaDepth;
736 uint8_t minMaxNumMergeCand;
737 uint8_t maxMaxNumMergeCand;
Sean Risser95b76912021-10-15 12:57:59 -0400738} VkVideoEncodeH265CapabilitiesEXT;
739
Alexis Hetueedcf552022-08-04 15:51:15 -0400740typedef struct VkVideoEncodeH265SessionParametersAddInfoEXT {
741 VkStructureType sType;
742 const void* pNext;
743 uint32_t vpsStdCount;
744 const StdVideoH265VideoParameterSet* pVpsStd;
745 uint32_t spsStdCount;
746 const StdVideoH265SequenceParameterSet* pSpsStd;
747 uint32_t ppsStdCount;
748 const StdVideoH265PictureParameterSet* pPpsStd;
Sean Risser95b76912021-10-15 12:57:59 -0400749} VkVideoEncodeH265SessionParametersAddInfoEXT;
750
Alexis Hetueedcf552022-08-04 15:51:15 -0400751typedef struct VkVideoEncodeH265SessionParametersCreateInfoEXT {
752 VkStructureType sType;
753 const void* pNext;
754 uint32_t maxVpsStdCount;
755 uint32_t maxSpsStdCount;
756 uint32_t maxPpsStdCount;
757 const VkVideoEncodeH265SessionParametersAddInfoEXT* pParametersAddInfo;
Sean Risser95b76912021-10-15 12:57:59 -0400758} VkVideoEncodeH265SessionParametersCreateInfoEXT;
759
Alexis Hetueedcf552022-08-04 15:51:15 -0400760typedef struct VkVideoEncodeH265DpbSlotInfoEXT {
761 VkStructureType sType;
762 const void* pNext;
763 int8_t slotIndex;
764 const StdVideoEncodeH265ReferenceInfo* pStdReferenceInfo;
Sean Risser95b76912021-10-15 12:57:59 -0400765} VkVideoEncodeH265DpbSlotInfoEXT;
766
Nicolas Capens7d827e92022-08-19 08:58:19 -0400767typedef struct VkVideoEncodeH265ReferenceListsInfoEXT {
Alexis Hetueedcf552022-08-04 15:51:15 -0400768 VkStructureType sType;
769 const void* pNext;
770 uint8_t referenceList0EntryCount;
771 const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList0Entries;
772 uint8_t referenceList1EntryCount;
773 const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList1Entries;
774 const StdVideoEncodeH265ReferenceModifications* pReferenceModifications;
Nicolas Capens7d827e92022-08-19 08:58:19 -0400775} VkVideoEncodeH265ReferenceListsInfoEXT;
Sean Risser95b76912021-10-15 12:57:59 -0400776
Nicolas Capens7d827e92022-08-19 08:58:19 -0400777typedef struct VkVideoEncodeH265NaluSliceSegmentInfoEXT {
778 VkStructureType sType;
779 const void* pNext;
780 uint32_t ctbCount;
781 const VkVideoEncodeH265ReferenceListsInfoEXT* pReferenceFinalLists;
782 const StdVideoEncodeH265SliceSegmentHeader* pSliceSegmentHeaderStd;
783} VkVideoEncodeH265NaluSliceSegmentInfoEXT;
Sean Risser95b76912021-10-15 12:57:59 -0400784
Alexis Hetueedcf552022-08-04 15:51:15 -0400785typedef struct VkVideoEncodeH265VclFrameInfoEXT {
Nicolas Capens7d827e92022-08-19 08:58:19 -0400786 VkStructureType sType;
787 const void* pNext;
788 const VkVideoEncodeH265ReferenceListsInfoEXT* pReferenceFinalLists;
789 uint32_t naluSliceSegmentEntryCount;
790 const VkVideoEncodeH265NaluSliceSegmentInfoEXT* pNaluSliceSegmentEntries;
791 const StdVideoEncodeH265PictureInfo* pCurrentPictureInfo;
Sean Risser95b76912021-10-15 12:57:59 -0400792} VkVideoEncodeH265VclFrameInfoEXT;
793
Nicolas Capens7d827e92022-08-19 08:58:19 -0400794typedef struct VkVideoEncodeH265EmitPictureParametersInfoEXT {
Alexis Hetueedcf552022-08-04 15:51:15 -0400795 VkStructureType sType;
796 const void* pNext;
797 uint8_t vpsId;
798 uint8_t spsId;
799 VkBool32 emitVpsEnable;
800 VkBool32 emitSpsEnable;
801 uint32_t ppsIdEntryCount;
802 const uint8_t* ppsIdEntries;
Nicolas Capens7d827e92022-08-19 08:58:19 -0400803} VkVideoEncodeH265EmitPictureParametersInfoEXT;
Sean Risser95b76912021-10-15 12:57:59 -0400804
Nicolas Capens7d827e92022-08-19 08:58:19 -0400805typedef struct VkVideoEncodeH265ProfileInfoEXT {
Alexis Hetueedcf552022-08-04 15:51:15 -0400806 VkStructureType sType;
807 const void* pNext;
808 StdVideoH265ProfileIdc stdProfileIdc;
Nicolas Capens7d827e92022-08-19 08:58:19 -0400809} VkVideoEncodeH265ProfileInfoEXT;
Sean Risser95b76912021-10-15 12:57:59 -0400810
Alexis Hetueedcf552022-08-04 15:51:15 -0400811typedef struct VkVideoEncodeH265RateControlInfoEXT {
Nicolas Capens7d827e92022-08-19 08:58:19 -0400812 VkStructureType sType;
813 const void* pNext;
814 uint32_t gopFrameCount;
815 uint32_t idrPeriod;
816 uint32_t consecutiveBFrameCount;
817 VkVideoEncodeH265RateControlStructureEXT rateControlStructure;
818 uint8_t subLayerCount;
sugoi1bca23442022-01-26 17:49:23 -0500819} VkVideoEncodeH265RateControlInfoEXT;
820
Alexis Hetueedcf552022-08-04 15:51:15 -0400821typedef struct VkVideoEncodeH265QpEXT {
822 int32_t qpI;
823 int32_t qpP;
824 int32_t qpB;
sugoi1bca23442022-01-26 17:49:23 -0500825} VkVideoEncodeH265QpEXT;
826
Alexis Hetueedcf552022-08-04 15:51:15 -0400827typedef struct VkVideoEncodeH265FrameSizeEXT {
828 uint32_t frameISize;
829 uint32_t framePSize;
830 uint32_t frameBSize;
sugoi1bca23442022-01-26 17:49:23 -0500831} VkVideoEncodeH265FrameSizeEXT;
832
Alexis Hetueedcf552022-08-04 15:51:15 -0400833typedef struct VkVideoEncodeH265RateControlLayerInfoEXT {
834 VkStructureType sType;
835 const void* pNext;
836 uint8_t temporalId;
837 VkBool32 useInitialRcQp;
838 VkVideoEncodeH265QpEXT initialRcQp;
839 VkBool32 useMinQp;
840 VkVideoEncodeH265QpEXT minQp;
841 VkBool32 useMaxQp;
842 VkVideoEncodeH265QpEXT maxQp;
843 VkBool32 useMaxFrameSize;
844 VkVideoEncodeH265FrameSizeEXT maxFrameSize;
sugoi1bca23442022-01-26 17:49:23 -0500845} VkVideoEncodeH265RateControlLayerInfoEXT;
846
Alexis Hetueedcf552022-08-04 15:51:15 -0400847
848
Nicolas Capensb461e202021-05-13 09:06:18 -0400849#define VK_EXT_video_decode_h264 1
850#include "vk_video/vulkan_video_codec_h264std_decode.h"
Nicolas Capens7d827e92022-08-19 08:58:19 -0400851#define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 6
Nicolas Capensb461e202021-05-13 09:06:18 -0400852#define VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME "VK_EXT_video_decode_h264"
853
Alexis Hetueedcf552022-08-04 15:51:15 -0400854typedef enum VkVideoDecodeH264PictureLayoutFlagBitsEXT {
855 VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT = 0,
856 VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT = 0x00000001,
857 VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT = 0x00000002,
858 VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
Nicolas Capens5167e102021-08-24 11:06:59 -0400859} VkVideoDecodeH264PictureLayoutFlagBitsEXT;
860typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsEXT;
Nicolas Capens7d827e92022-08-19 08:58:19 -0400861typedef struct VkVideoDecodeH264ProfileInfoEXT {
Alexis Hetueedcf552022-08-04 15:51:15 -0400862 VkStructureType sType;
863 const void* pNext;
864 StdVideoH264ProfileIdc stdProfileIdc;
865 VkVideoDecodeH264PictureLayoutFlagsEXT pictureLayout;
Nicolas Capens7d827e92022-08-19 08:58:19 -0400866} VkVideoDecodeH264ProfileInfoEXT;
Nicolas Capensb461e202021-05-13 09:06:18 -0400867
Alexis Hetueedcf552022-08-04 15:51:15 -0400868typedef struct VkVideoDecodeH264CapabilitiesEXT {
869 VkStructureType sType;
870 void* pNext;
871 StdVideoH264Level maxLevel;
872 VkOffset2D fieldOffsetGranularity;
Nicolas Capensb461e202021-05-13 09:06:18 -0400873} VkVideoDecodeH264CapabilitiesEXT;
874
Alexis Hetueedcf552022-08-04 15:51:15 -0400875typedef struct VkVideoDecodeH264SessionParametersAddInfoEXT {
876 VkStructureType sType;
877 const void* pNext;
878 uint32_t spsStdCount;
879 const StdVideoH264SequenceParameterSet* pSpsStd;
880 uint32_t ppsStdCount;
881 const StdVideoH264PictureParameterSet* pPpsStd;
Nicolas Capensb461e202021-05-13 09:06:18 -0400882} VkVideoDecodeH264SessionParametersAddInfoEXT;
883
Alexis Hetueedcf552022-08-04 15:51:15 -0400884typedef struct VkVideoDecodeH264SessionParametersCreateInfoEXT {
885 VkStructureType sType;
886 const void* pNext;
887 uint32_t maxSpsStdCount;
888 uint32_t maxPpsStdCount;
889 const VkVideoDecodeH264SessionParametersAddInfoEXT* pParametersAddInfo;
Nicolas Capensb461e202021-05-13 09:06:18 -0400890} VkVideoDecodeH264SessionParametersCreateInfoEXT;
891
Alexis Hetueedcf552022-08-04 15:51:15 -0400892typedef struct VkVideoDecodeH264PictureInfoEXT {
893 VkStructureType sType;
894 const void* pNext;
895 const StdVideoDecodeH264PictureInfo* pStdPictureInfo;
896 uint32_t slicesCount;
897 const uint32_t* pSlicesDataOffsets;
Nicolas Capensb461e202021-05-13 09:06:18 -0400898} VkVideoDecodeH264PictureInfoEXT;
899
Nicolas Capens7d827e92022-08-19 08:58:19 -0400900typedef struct VkVideoDecodeH264MvcInfoEXT {
Alexis Hetueedcf552022-08-04 15:51:15 -0400901 VkStructureType sType;
902 const void* pNext;
903 const StdVideoDecodeH264Mvc* pStdMvc;
Nicolas Capens7d827e92022-08-19 08:58:19 -0400904} VkVideoDecodeH264MvcInfoEXT;
Nicolas Capensb461e202021-05-13 09:06:18 -0400905
Alexis Hetueedcf552022-08-04 15:51:15 -0400906typedef struct VkVideoDecodeH264DpbSlotInfoEXT {
907 VkStructureType sType;
908 const void* pNext;
909 const StdVideoDecodeH264ReferenceInfo* pStdReferenceInfo;
Nicolas Capensb461e202021-05-13 09:06:18 -0400910} VkVideoDecodeH264DpbSlotInfoEXT;
911
Alexis Hetueedcf552022-08-04 15:51:15 -0400912
913
Nicolas Capensb461e202021-05-13 09:06:18 -0400914#define VK_EXT_video_decode_h265 1
Nicolas Capensb461e202021-05-13 09:06:18 -0400915#include "vk_video/vulkan_video_codec_h265std_decode.h"
Nicolas Capens7d827e92022-08-19 08:58:19 -0400916#define VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION 4
Nicolas Capensb461e202021-05-13 09:06:18 -0400917#define VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME "VK_EXT_video_decode_h265"
Nicolas Capens7d827e92022-08-19 08:58:19 -0400918typedef struct VkVideoDecodeH265ProfileInfoEXT {
Alexis Hetueedcf552022-08-04 15:51:15 -0400919 VkStructureType sType;
920 const void* pNext;
921 StdVideoH265ProfileIdc stdProfileIdc;
Nicolas Capens7d827e92022-08-19 08:58:19 -0400922} VkVideoDecodeH265ProfileInfoEXT;
Nicolas Capensb461e202021-05-13 09:06:18 -0400923
Alexis Hetueedcf552022-08-04 15:51:15 -0400924typedef struct VkVideoDecodeH265CapabilitiesEXT {
925 VkStructureType sType;
926 void* pNext;
927 StdVideoH265Level maxLevel;
Nicolas Capensb461e202021-05-13 09:06:18 -0400928} VkVideoDecodeH265CapabilitiesEXT;
929
Alexis Hetueedcf552022-08-04 15:51:15 -0400930typedef struct VkVideoDecodeH265SessionParametersAddInfoEXT {
931 VkStructureType sType;
932 const void* pNext;
933 uint32_t vpsStdCount;
934 const StdVideoH265VideoParameterSet* pVpsStd;
935 uint32_t spsStdCount;
936 const StdVideoH265SequenceParameterSet* pSpsStd;
937 uint32_t ppsStdCount;
938 const StdVideoH265PictureParameterSet* pPpsStd;
Nicolas Capensb461e202021-05-13 09:06:18 -0400939} VkVideoDecodeH265SessionParametersAddInfoEXT;
940
Alexis Hetueedcf552022-08-04 15:51:15 -0400941typedef struct VkVideoDecodeH265SessionParametersCreateInfoEXT {
942 VkStructureType sType;
943 const void* pNext;
944 uint32_t maxVpsStdCount;
945 uint32_t maxSpsStdCount;
946 uint32_t maxPpsStdCount;
947 const VkVideoDecodeH265SessionParametersAddInfoEXT* pParametersAddInfo;
Nicolas Capensb461e202021-05-13 09:06:18 -0400948} VkVideoDecodeH265SessionParametersCreateInfoEXT;
949
Alexis Hetueedcf552022-08-04 15:51:15 -0400950typedef struct VkVideoDecodeH265PictureInfoEXT {
951 VkStructureType sType;
952 const void* pNext;
953 StdVideoDecodeH265PictureInfo* pStdPictureInfo;
954 uint32_t slicesCount;
955 const uint32_t* pSlicesDataOffsets;
Nicolas Capensb461e202021-05-13 09:06:18 -0400956} VkVideoDecodeH265PictureInfoEXT;
957
Alexis Hetueedcf552022-08-04 15:51:15 -0400958typedef struct VkVideoDecodeH265DpbSlotInfoEXT {
959 VkStructureType sType;
960 const void* pNext;
961 const StdVideoDecodeH265ReferenceInfo* pStdReferenceInfo;
Nicolas Capensb461e202021-05-13 09:06:18 -0400962} VkVideoDecodeH265DpbSlotInfoEXT;
963
Alexis Hetueedcf552022-08-04 15:51:15 -0400964
Caio Marcelo de Oliveira Filho643cbe12020-05-31 13:53:41 -0700965#ifdef __cplusplus
966}
967#endif
968
969#endif