• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef VULKAN_BETA_H_
2 #define VULKAN_BETA_H_ 1
3 
4 /*
5 ** Copyright 2015-2021 The Khronos Group Inc.
6 **
7 ** SPDX-License-Identifier: Apache-2.0
8 */
9 
10 /*
11 ** This header is generated from the Khronos Vulkan XML API Registry.
12 **
13 */
14 
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 
21 
22 #define VK_KHR_video_queue 1
23 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR)
24 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR)
25 #define VK_KHR_VIDEO_QUEUE_SPEC_VERSION   2
26 #define VK_KHR_VIDEO_QUEUE_EXTENSION_NAME "VK_KHR_video_queue"
27 
28 typedef enum VkQueryResultStatusKHR {
29     VK_QUERY_RESULT_STATUS_ERROR_KHR = -1,
30     VK_QUERY_RESULT_STATUS_NOT_READY_KHR = 0,
31     VK_QUERY_RESULT_STATUS_COMPLETE_KHR = 1,
32     VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 0x7FFFFFFF
33 } VkQueryResultStatusKHR;
34 
35 typedef enum VkVideoCodecOperationFlagBitsKHR {
36     VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR = 0,
37 #ifdef VK_ENABLE_BETA_EXTENSIONS
38     VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT = 0x00010000,
39 #endif
40 #ifdef VK_ENABLE_BETA_EXTENSIONS
41     VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT = 0x00020000,
42 #endif
43 #ifdef VK_ENABLE_BETA_EXTENSIONS
44     VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT = 0x00000001,
45 #endif
46 #ifdef VK_ENABLE_BETA_EXTENSIONS
47     VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT = 0x00000002,
48 #endif
49     VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
50 } VkVideoCodecOperationFlagBitsKHR;
51 typedef VkFlags VkVideoCodecOperationFlagsKHR;
52 
53 typedef enum VkVideoChromaSubsamplingFlagBitsKHR {
54     VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR = 0,
55     VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0x00000001,
56     VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0x00000002,
57     VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0x00000004,
58     VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x00000008,
59     VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
60 } VkVideoChromaSubsamplingFlagBitsKHR;
61 typedef VkFlags VkVideoChromaSubsamplingFlagsKHR;
62 
63 typedef enum VkVideoComponentBitDepthFlagBitsKHR {
64     VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0,
65     VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0x00000001,
66     VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0x00000004,
67     VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x00000010,
68     VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
69 } VkVideoComponentBitDepthFlagBitsKHR;
70 typedef VkFlags VkVideoComponentBitDepthFlagsKHR;
71 
72 typedef enum VkVideoCapabilityFlagBitsKHR {
73     VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
74     VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002,
75     VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
76 } VkVideoCapabilityFlagBitsKHR;
77 typedef VkFlags VkVideoCapabilityFlagsKHR;
78 
79 typedef enum VkVideoSessionCreateFlagBitsKHR {
80     VK_VIDEO_SESSION_CREATE_DEFAULT_KHR = 0,
81     VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
82     VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
83 } VkVideoSessionCreateFlagBitsKHR;
84 typedef VkFlags VkVideoSessionCreateFlagsKHR;
85 typedef VkFlags VkVideoBeginCodingFlagsKHR;
86 typedef VkFlags VkVideoEndCodingFlagsKHR;
87 
88 typedef enum VkVideoCodingControlFlagBitsKHR {
89     VK_VIDEO_CODING_CONTROL_DEFAULT_KHR = 0,
90     VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0x00000001,
91     VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
92 } VkVideoCodingControlFlagBitsKHR;
93 typedef VkFlags VkVideoCodingControlFlagsKHR;
94 
95 typedef enum VkVideoCodingQualityPresetFlagBitsKHR {
96     VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR = 0x00000001,
97     VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR = 0x00000002,
98     VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR = 0x00000004,
99     VK_VIDEO_CODING_QUALITY_PRESET_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
100 } VkVideoCodingQualityPresetFlagBitsKHR;
101 typedef VkFlags VkVideoCodingQualityPresetFlagsKHR;
102 typedef struct VkQueueFamilyQueryResultStatusProperties2KHR {
103     VkStructureType    sType;
104     void*              pNext;
105     VkBool32           supported;
106 } VkQueueFamilyQueryResultStatusProperties2KHR;
107 
108 typedef struct VkVideoQueueFamilyProperties2KHR {
109     VkStructureType                  sType;
110     void*                            pNext;
111     VkVideoCodecOperationFlagsKHR    videoCodecOperations;
112 } VkVideoQueueFamilyProperties2KHR;
113 
114 typedef struct VkVideoProfileKHR {
115     VkStructureType                     sType;
116     void*                               pNext;
117     VkVideoCodecOperationFlagBitsKHR    videoCodecOperation;
118     VkVideoChromaSubsamplingFlagsKHR    chromaSubsampling;
119     VkVideoComponentBitDepthFlagsKHR    lumaBitDepth;
120     VkVideoComponentBitDepthFlagsKHR    chromaBitDepth;
121 } VkVideoProfileKHR;
122 
123 typedef struct VkVideoProfilesKHR {
124     VkStructureType             sType;
125     void*                       pNext;
126     uint32_t                    profileCount;
127     const VkVideoProfileKHR*    pProfiles;
128 } VkVideoProfilesKHR;
129 
130 typedef struct VkVideoCapabilitiesKHR {
131     VkStructureType              sType;
132     void*                        pNext;
133     VkVideoCapabilityFlagsKHR    capabilityFlags;
134     VkDeviceSize                 minBitstreamBufferOffsetAlignment;
135     VkDeviceSize                 minBitstreamBufferSizeAlignment;
136     VkExtent2D                   videoPictureExtentGranularity;
137     VkExtent2D                   minExtent;
138     VkExtent2D                   maxExtent;
139     uint32_t                     maxReferencePicturesSlotsCount;
140     uint32_t                     maxReferencePicturesActiveCount;
141 } VkVideoCapabilitiesKHR;
142 
143 typedef struct VkPhysicalDeviceVideoFormatInfoKHR {
144     VkStructureType              sType;
145     void*                        pNext;
146     VkImageUsageFlags            imageUsage;
147     const VkVideoProfilesKHR*    pVideoProfiles;
148 } VkPhysicalDeviceVideoFormatInfoKHR;
149 
150 typedef struct VkVideoFormatPropertiesKHR {
151     VkStructureType    sType;
152     void*              pNext;
153     VkFormat           format;
154 } VkVideoFormatPropertiesKHR;
155 
156 typedef struct VkVideoPictureResourceKHR {
157     VkStructureType    sType;
158     const void*        pNext;
159     VkOffset2D         codedOffset;
160     VkExtent2D         codedExtent;
161     uint32_t           baseArrayLayer;
162     VkImageView        imageViewBinding;
163 } VkVideoPictureResourceKHR;
164 
165 typedef struct VkVideoReferenceSlotKHR {
166     VkStructureType                     sType;
167     const void*                         pNext;
168     int8_t                              slotIndex;
169     const VkVideoPictureResourceKHR*    pPictureResource;
170 } VkVideoReferenceSlotKHR;
171 
172 typedef struct VkVideoGetMemoryPropertiesKHR {
173     VkStructureType           sType;
174     const void*               pNext;
175     uint32_t                  memoryBindIndex;
176     VkMemoryRequirements2*    pMemoryRequirements;
177 } VkVideoGetMemoryPropertiesKHR;
178 
179 typedef struct VkVideoBindMemoryKHR {
180     VkStructureType    sType;
181     const void*        pNext;
182     uint32_t           memoryBindIndex;
183     VkDeviceMemory     memory;
184     VkDeviceSize       memoryOffset;
185     VkDeviceSize       memorySize;
186 } VkVideoBindMemoryKHR;
187 
188 typedef struct VkVideoSessionCreateInfoKHR {
189     VkStructureType                 sType;
190     const void*                     pNext;
191     uint32_t                        queueFamilyIndex;
192     VkVideoSessionCreateFlagsKHR    flags;
193     const VkVideoProfileKHR*        pVideoProfile;
194     VkFormat                        pictureFormat;
195     VkExtent2D                      maxCodedExtent;
196     VkFormat                        referencePicturesFormat;
197     uint32_t                        maxReferencePicturesSlotsCount;
198     uint32_t                        maxReferencePicturesActiveCount;
199 } VkVideoSessionCreateInfoKHR;
200 
201 typedef struct VkVideoSessionParametersCreateInfoKHR {
202     VkStructureType                sType;
203     const void*                    pNext;
204     VkVideoSessionParametersKHR    videoSessionParametersTemplate;
205     VkVideoSessionKHR              videoSession;
206 } VkVideoSessionParametersCreateInfoKHR;
207 
208 typedef struct VkVideoSessionParametersUpdateInfoKHR {
209     VkStructureType    sType;
210     const void*        pNext;
211     uint32_t           updateSequenceCount;
212 } VkVideoSessionParametersUpdateInfoKHR;
213 
214 typedef struct VkVideoBeginCodingInfoKHR {
215     VkStructureType                       sType;
216     const void*                           pNext;
217     VkVideoBeginCodingFlagsKHR            flags;
218     VkVideoCodingQualityPresetFlagsKHR    codecQualityPreset;
219     VkVideoSessionKHR                     videoSession;
220     VkVideoSessionParametersKHR           videoSessionParameters;
221     uint32_t                              referenceSlotCount;
222     const VkVideoReferenceSlotKHR*        pReferenceSlots;
223 } VkVideoBeginCodingInfoKHR;
224 
225 typedef struct VkVideoEndCodingInfoKHR {
226     VkStructureType             sType;
227     const void*                 pNext;
228     VkVideoEndCodingFlagsKHR    flags;
229 } VkVideoEndCodingInfoKHR;
230 
231 typedef struct VkVideoCodingControlInfoKHR {
232     VkStructureType                 sType;
233     const void*                     pNext;
234     VkVideoCodingControlFlagsKHR    flags;
235 } VkVideoCodingControlInfoKHR;
236 
237 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities);
238 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties);
239 typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession);
240 typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator);
241 typedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements);
242 typedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories);
243 typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters);
244 typedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
245 typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator);
246 typedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo);
247 typedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo);
248 typedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo);
249 
250 #ifndef VK_NO_PROTOTYPES
251 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR(
252     VkPhysicalDevice                            physicalDevice,
253     const VkVideoProfileKHR*                    pVideoProfile,
254     VkVideoCapabilitiesKHR*                     pCapabilities);
255 
256 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR(
257     VkPhysicalDevice                            physicalDevice,
258     const VkPhysicalDeviceVideoFormatInfoKHR*   pVideoFormatInfo,
259     uint32_t*                                   pVideoFormatPropertyCount,
260     VkVideoFormatPropertiesKHR*                 pVideoFormatProperties);
261 
262 VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR(
263     VkDevice                                    device,
264     const VkVideoSessionCreateInfoKHR*          pCreateInfo,
265     const VkAllocationCallbacks*                pAllocator,
266     VkVideoSessionKHR*                          pVideoSession);
267 
268 VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR(
269     VkDevice                                    device,
270     VkVideoSessionKHR                           videoSession,
271     const VkAllocationCallbacks*                pAllocator);
272 
273 VKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR(
274     VkDevice                                    device,
275     VkVideoSessionKHR                           videoSession,
276     uint32_t*                                   pVideoSessionMemoryRequirementsCount,
277     VkVideoGetMemoryPropertiesKHR*              pVideoSessionMemoryRequirements);
278 
279 VKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR(
280     VkDevice                                    device,
281     VkVideoSessionKHR                           videoSession,
282     uint32_t                                    videoSessionBindMemoryCount,
283     const VkVideoBindMemoryKHR*                 pVideoSessionBindMemories);
284 
285 VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR(
286     VkDevice                                    device,
287     const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
288     const VkAllocationCallbacks*                pAllocator,
289     VkVideoSessionParametersKHR*                pVideoSessionParameters);
290 
291 VKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR(
292     VkDevice                                    device,
293     VkVideoSessionParametersKHR                 videoSessionParameters,
294     const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
295 
296 VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR(
297     VkDevice                                    device,
298     VkVideoSessionParametersKHR                 videoSessionParameters,
299     const VkAllocationCallbacks*                pAllocator);
300 
301 VKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR(
302     VkCommandBuffer                             commandBuffer,
303     const VkVideoBeginCodingInfoKHR*            pBeginInfo);
304 
305 VKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR(
306     VkCommandBuffer                             commandBuffer,
307     const VkVideoEndCodingInfoKHR*              pEndCodingInfo);
308 
309 VKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR(
310     VkCommandBuffer                             commandBuffer,
311     const VkVideoCodingControlInfoKHR*          pCodingControlInfo);
312 #endif
313 
314 
315 #define VK_KHR_video_decode_queue 1
316 #define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 2
317 #define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue"
318 
319 typedef enum VkVideoDecodeFlagBitsKHR {
320     VK_VIDEO_DECODE_DEFAULT_KHR = 0,
321     VK_VIDEO_DECODE_RESERVED_0_BIT_KHR = 0x00000001,
322     VK_VIDEO_DECODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
323 } VkVideoDecodeFlagBitsKHR;
324 typedef VkFlags VkVideoDecodeFlagsKHR;
325 typedef struct VkVideoDecodeInfoKHR {
326     VkStructureType                   sType;
327     const void*                       pNext;
328     VkVideoDecodeFlagsKHR             flags;
329     VkOffset2D                        codedOffset;
330     VkExtent2D                        codedExtent;
331     VkBuffer                          srcBuffer;
332     VkDeviceSize                      srcBufferOffset;
333     VkDeviceSize                      srcBufferRange;
334     VkVideoPictureResourceKHR         dstPictureResource;
335     const VkVideoReferenceSlotKHR*    pSetupReferenceSlot;
336     uint32_t                          referenceSlotCount;
337     const VkVideoReferenceSlotKHR*    pReferenceSlots;
338 } VkVideoDecodeInfoKHR;
339 
340 typedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo);
341 
342 #ifndef VK_NO_PROTOTYPES
343 VKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR(
344     VkCommandBuffer                             commandBuffer,
345     const VkVideoDecodeInfoKHR*                 pFrameInfo);
346 #endif
347 
348 
349 #define VK_KHR_portability_subset 1
350 #define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1
351 #define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset"
352 typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR {
353     VkStructureType    sType;
354     void*              pNext;
355     VkBool32           constantAlphaColorBlendFactors;
356     VkBool32           events;
357     VkBool32           imageViewFormatReinterpretation;
358     VkBool32           imageViewFormatSwizzle;
359     VkBool32           imageView2DOn3DImage;
360     VkBool32           multisampleArrayImage;
361     VkBool32           mutableComparisonSamplers;
362     VkBool32           pointPolygons;
363     VkBool32           samplerMipLodBias;
364     VkBool32           separateStencilMaskRef;
365     VkBool32           shaderSampleRateInterpolationFunctions;
366     VkBool32           tessellationIsolines;
367     VkBool32           tessellationPointMode;
368     VkBool32           triangleFans;
369     VkBool32           vertexAttributeAccessBeyondStride;
370 } VkPhysicalDevicePortabilitySubsetFeaturesKHR;
371 
372 typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR {
373     VkStructureType    sType;
374     void*              pNext;
375     uint32_t           minVertexInputBindingStrideAlignment;
376 } VkPhysicalDevicePortabilitySubsetPropertiesKHR;
377 
378 
379 
380 #define VK_KHR_video_encode_queue 1
381 #define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 3
382 #define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue"
383 
384 typedef enum VkVideoEncodeFlagBitsKHR {
385     VK_VIDEO_ENCODE_DEFAULT_KHR = 0,
386     VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR = 0x00000001,
387     VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
388 } VkVideoEncodeFlagBitsKHR;
389 typedef VkFlags VkVideoEncodeFlagsKHR;
390 
391 typedef enum VkVideoEncodeRateControlFlagBitsKHR {
392     VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR = 0,
393     VK_VIDEO_ENCODE_RATE_CONTROL_RESERVED_0_BIT_KHR = 0x00000001,
394     VK_VIDEO_ENCODE_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
395 } VkVideoEncodeRateControlFlagBitsKHR;
396 typedef VkFlags VkVideoEncodeRateControlFlagsKHR;
397 
398 typedef enum VkVideoEncodeRateControlModeFlagBitsKHR {
399     VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR = 0,
400     VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 1,
401     VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 2,
402     VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
403 } VkVideoEncodeRateControlModeFlagBitsKHR;
404 typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR;
405 typedef struct VkVideoEncodeInfoKHR {
406     VkStructureType                   sType;
407     const void*                       pNext;
408     VkVideoEncodeFlagsKHR             flags;
409     uint32_t                          qualityLevel;
410     VkExtent2D                        codedExtent;
411     VkBuffer                          dstBitstreamBuffer;
412     VkDeviceSize                      dstBitstreamBufferOffset;
413     VkDeviceSize                      dstBitstreamBufferMaxRange;
414     VkVideoPictureResourceKHR         srcPictureResource;
415     const VkVideoReferenceSlotKHR*    pSetupReferenceSlot;
416     uint32_t                          referenceSlotCount;
417     const VkVideoReferenceSlotKHR*    pReferenceSlots;
418     uint32_t                          precedingExternallyEncodedBytes;
419 } VkVideoEncodeInfoKHR;
420 
421 typedef struct VkVideoEncodeRateControlLayerInfoKHR {
422     VkStructureType    sType;
423     const void*        pNext;
424     uint32_t           averageBitrate;
425     uint32_t           maxBitrate;
426     uint32_t           frameRateNumerator;
427     uint32_t           frameRateDenominator;
428     uint32_t           virtualBufferSizeInMs;
429     uint32_t           initialVirtualBufferSizeInMs;
430 } VkVideoEncodeRateControlLayerInfoKHR;
431 
432 typedef struct VkVideoEncodeRateControlInfoKHR {
433     VkStructureType                                sType;
434     const void*                                    pNext;
435     VkVideoEncodeRateControlFlagsKHR               flags;
436     VkVideoEncodeRateControlModeFlagBitsKHR        rateControlMode;
437     uint8_t                                        layerCount;
438     const VkVideoEncodeRateControlLayerInfoKHR*    pLayerConfigs;
439 } VkVideoEncodeRateControlInfoKHR;
440 
441 typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo);
442 
443 #ifndef VK_NO_PROTOTYPES
444 VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR(
445     VkCommandBuffer                             commandBuffer,
446     const VkVideoEncodeInfoKHR*                 pEncodeInfo);
447 #endif
448 
449 
450 #define VK_EXT_video_encode_h264 1
451 #include "vk_video/vulkan_video_codec_h264std.h"
452 #include "vk_video/vulkan_video_codec_h264std_encode.h"
453 #define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 3
454 #define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264"
455 
456 typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT {
457     VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00000001,
458     VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00000002,
459     VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT = 0x00000004,
460     VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00000008,
461     VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000010,
462     VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000020,
463     VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00000040,
464     VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00000080,
465     VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00000100,
466     VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00000200,
467     VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT = 0x00000400,
468     VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
469 } VkVideoEncodeH264CapabilityFlagBitsEXT;
470 typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT;
471 
472 typedef enum VkVideoEncodeH264InputModeFlagBitsEXT {
473     VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 0x00000001,
474     VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 0x00000002,
475     VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
476     VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
477 } VkVideoEncodeH264InputModeFlagBitsEXT;
478 typedef VkFlags VkVideoEncodeH264InputModeFlagsEXT;
479 
480 typedef enum VkVideoEncodeH264OutputModeFlagBitsEXT {
481     VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001,
482     VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002,
483     VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
484     VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
485 } VkVideoEncodeH264OutputModeFlagBitsEXT;
486 typedef VkFlags VkVideoEncodeH264OutputModeFlagsEXT;
487 
488 typedef enum VkVideoEncodeH264CreateFlagBitsEXT {
489     VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT = 0,
490     VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT = 0x00000001,
491     VK_VIDEO_ENCODE_H264_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
492 } VkVideoEncodeH264CreateFlagBitsEXT;
493 typedef VkFlags VkVideoEncodeH264CreateFlagsEXT;
494 
495 typedef enum VkVideoEncodeH264RateControlStructureFlagBitsEXT {
496     VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0,
497     VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT = 0x00000001,
498     VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT = 0x00000002,
499     VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
500 } VkVideoEncodeH264RateControlStructureFlagBitsEXT;
501 typedef VkFlags VkVideoEncodeH264RateControlStructureFlagsEXT;
502 typedef struct VkVideoEncodeH264CapabilitiesEXT {
503     VkStructureType                        sType;
504     const void*                            pNext;
505     VkVideoEncodeH264CapabilityFlagsEXT    flags;
506     VkVideoEncodeH264InputModeFlagsEXT     inputModeFlags;
507     VkVideoEncodeH264OutputModeFlagsEXT    outputModeFlags;
508     VkExtent2D                             minPictureSizeInMbs;
509     VkExtent2D                             maxPictureSizeInMbs;
510     VkExtent2D                             inputImageDataAlignment;
511     uint8_t                                maxNumL0ReferenceForP;
512     uint8_t                                maxNumL0ReferenceForB;
513     uint8_t                                maxNumL1Reference;
514     uint8_t                                qualityLevelCount;
515     VkExtensionProperties                  stdExtensionVersion;
516 } VkVideoEncodeH264CapabilitiesEXT;
517 
518 typedef struct VkVideoEncodeH264SessionCreateInfoEXT {
519     VkStructureType                    sType;
520     const void*                        pNext;
521     VkVideoEncodeH264CreateFlagsEXT    flags;
522     VkExtent2D                         maxPictureSizeInMbs;
523     const VkExtensionProperties*       pStdExtensionVersion;
524 } VkVideoEncodeH264SessionCreateInfoEXT;
525 
526 typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT {
527     VkStructureType                            sType;
528     const void*                                pNext;
529     uint32_t                                   spsStdCount;
530     const StdVideoH264SequenceParameterSet*    pSpsStd;
531     uint32_t                                   ppsStdCount;
532     const StdVideoH264PictureParameterSet*     pPpsStd;
533 } VkVideoEncodeH264SessionParametersAddInfoEXT;
534 
535 typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT {
536     VkStructureType                                        sType;
537     const void*                                            pNext;
538     uint32_t                                               maxSpsStdCount;
539     uint32_t                                               maxPpsStdCount;
540     const VkVideoEncodeH264SessionParametersAddInfoEXT*    pParametersAddInfo;
541 } VkVideoEncodeH264SessionParametersCreateInfoEXT;
542 
543 typedef struct VkVideoEncodeH264DpbSlotInfoEXT {
544     VkStructureType                         sType;
545     const void*                             pNext;
546     int8_t                                  slotIndex;
547     const StdVideoEncodeH264PictureInfo*    pStdPictureInfo;
548 } VkVideoEncodeH264DpbSlotInfoEXT;
549 
550 typedef struct VkVideoEncodeH264NaluSliceEXT {
551     VkStructureType                           sType;
552     const void*                               pNext;
553     const StdVideoEncodeH264SliceHeader*      pSliceHeaderStd;
554     uint32_t                                  mbCount;
555     uint8_t                                   refFinalList0EntryCount;
556     const VkVideoEncodeH264DpbSlotInfoEXT*    pRefFinalList0Entries;
557     uint8_t                                   refFinalList1EntryCount;
558     const VkVideoEncodeH264DpbSlotInfoEXT*    pRefFinalList1Entries;
559 } VkVideoEncodeH264NaluSliceEXT;
560 
561 typedef struct VkVideoEncodeH264VclFrameInfoEXT {
562     VkStructureType                           sType;
563     const void*                               pNext;
564     uint8_t                                   refDefaultFinalList0EntryCount;
565     const VkVideoEncodeH264DpbSlotInfoEXT*    pRefDefaultFinalList0Entries;
566     uint8_t                                   refDefaultFinalList1EntryCount;
567     const VkVideoEncodeH264DpbSlotInfoEXT*    pRefDefaultFinalList1Entries;
568     uint32_t                                  naluSliceEntryCount;
569     const VkVideoEncodeH264NaluSliceEXT*      pNaluSliceEntries;
570     const VkVideoEncodeH264DpbSlotInfoEXT*    pCurrentPictureInfo;
571 } VkVideoEncodeH264VclFrameInfoEXT;
572 
573 typedef struct VkVideoEncodeH264EmitPictureParametersEXT {
574     VkStructureType    sType;
575     const void*        pNext;
576     uint8_t            spsId;
577     VkBool32           emitSpsEnable;
578     uint32_t           ppsIdEntryCount;
579     const uint8_t*     ppsIdEntries;
580 } VkVideoEncodeH264EmitPictureParametersEXT;
581 
582 typedef struct VkVideoEncodeH264ProfileEXT {
583     VkStructureType           sType;
584     const void*               pNext;
585     StdVideoH264ProfileIdc    stdProfileIdc;
586 } VkVideoEncodeH264ProfileEXT;
587 
588 typedef struct VkVideoEncodeH264RateControlInfoEXT {
589     VkStructureType                                     sType;
590     const void*                                         pNext;
591     uint32_t                                            gopFrameCount;
592     uint32_t                                            idrPeriod;
593     uint32_t                                            consecutiveBFrameCount;
594     VkVideoEncodeH264RateControlStructureFlagBitsEXT    rateControlStructure;
595     uint8_t                                             temporalLayerCount;
596 } VkVideoEncodeH264RateControlInfoEXT;
597 
598 typedef struct VkVideoEncodeH264QpEXT {
599     int32_t    qpI;
600     int32_t    qpP;
601     int32_t    qpB;
602 } VkVideoEncodeH264QpEXT;
603 
604 typedef struct VkVideoEncodeH264FrameSizeEXT {
605     uint32_t    frameISize;
606     uint32_t    framePSize;
607     uint32_t    frameBSize;
608 } VkVideoEncodeH264FrameSizeEXT;
609 
610 typedef struct VkVideoEncodeH264RateControlLayerInfoEXT {
611     VkStructureType                  sType;
612     const void*                      pNext;
613     uint8_t                          temporalLayerId;
614     VkBool32                         useInitialRcQp;
615     VkVideoEncodeH264QpEXT           initialRcQp;
616     VkBool32                         useMinQp;
617     VkVideoEncodeH264QpEXT           minQp;
618     VkBool32                         useMaxQp;
619     VkVideoEncodeH264QpEXT           maxQp;
620     VkBool32                         useMaxFrameSize;
621     VkVideoEncodeH264FrameSizeEXT    maxFrameSize;
622 } VkVideoEncodeH264RateControlLayerInfoEXT;
623 
624 
625 
626 #define VK_EXT_video_encode_h265 1
627 #include "vk_video/vulkan_video_codec_h265std.h"
628 #include "vk_video/vulkan_video_codec_h265std_encode.h"
629 #define VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION 3
630 #define VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_EXT_video_encode_h265"
631 typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT;
632 
633 typedef enum VkVideoEncodeH265InputModeFlagBitsEXT {
634     VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT = 0x00000001,
635     VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_BIT_EXT = 0x00000002,
636     VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
637     VK_VIDEO_ENCODE_H265_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
638 } VkVideoEncodeH265InputModeFlagBitsEXT;
639 typedef VkFlags VkVideoEncodeH265InputModeFlagsEXT;
640 
641 typedef enum VkVideoEncodeH265OutputModeFlagBitsEXT {
642     VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001,
643     VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002,
644     VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
645     VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
646 } VkVideoEncodeH265OutputModeFlagBitsEXT;
647 typedef VkFlags VkVideoEncodeH265OutputModeFlagsEXT;
648 typedef VkFlags VkVideoEncodeH265CreateFlagsEXT;
649 
650 typedef enum VkVideoEncodeH265CtbSizeFlagBitsEXT {
651     VK_VIDEO_ENCODE_H265_CTB_SIZE_8_BIT_EXT = 0x00000001,
652     VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT = 0x00000002,
653     VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT = 0x00000004,
654     VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT = 0x00000008,
655     VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
656 } VkVideoEncodeH265CtbSizeFlagBitsEXT;
657 typedef VkFlags VkVideoEncodeH265CtbSizeFlagsEXT;
658 
659 typedef enum VkVideoEncodeH265RateControlStructureFlagBitsEXT {
660     VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0,
661     VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT = 0x00000001,
662     VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT = 0x00000002,
663     VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
664 } VkVideoEncodeH265RateControlStructureFlagBitsEXT;
665 typedef VkFlags VkVideoEncodeH265RateControlStructureFlagsEXT;
666 typedef struct VkVideoEncodeH265CapabilitiesEXT {
667     VkStructureType                        sType;
668     const void*                            pNext;
669     VkVideoEncodeH265CapabilityFlagsEXT    flags;
670     VkVideoEncodeH265InputModeFlagsEXT     inputModeFlags;
671     VkVideoEncodeH265OutputModeFlagsEXT    outputModeFlags;
672     VkVideoEncodeH265CtbSizeFlagsEXT       ctbSizes;
673     VkExtent2D                             inputImageDataAlignment;
674     uint8_t                                maxNumL0ReferenceForP;
675     uint8_t                                maxNumL0ReferenceForB;
676     uint8_t                                maxNumL1Reference;
677     uint8_t                                maxNumSubLayers;
678     uint8_t                                qualityLevelCount;
679     VkExtensionProperties                  stdExtensionVersion;
680 } VkVideoEncodeH265CapabilitiesEXT;
681 
682 typedef struct VkVideoEncodeH265SessionCreateInfoEXT {
683     VkStructureType                    sType;
684     const void*                        pNext;
685     VkVideoEncodeH265CreateFlagsEXT    flags;
686     const VkExtensionProperties*       pStdExtensionVersion;
687 } VkVideoEncodeH265SessionCreateInfoEXT;
688 
689 typedef struct VkVideoEncodeH265SessionParametersAddInfoEXT {
690     VkStructureType                            sType;
691     const void*                                pNext;
692     uint32_t                                   vpsStdCount;
693     const StdVideoH265VideoParameterSet*       pVpsStd;
694     uint32_t                                   spsStdCount;
695     const StdVideoH265SequenceParameterSet*    pSpsStd;
696     uint32_t                                   ppsStdCount;
697     const StdVideoH265PictureParameterSet*     pPpsStd;
698 } VkVideoEncodeH265SessionParametersAddInfoEXT;
699 
700 typedef struct VkVideoEncodeH265SessionParametersCreateInfoEXT {
701     VkStructureType                                        sType;
702     const void*                                            pNext;
703     uint32_t                                               maxVpsStdCount;
704     uint32_t                                               maxSpsStdCount;
705     uint32_t                                               maxPpsStdCount;
706     const VkVideoEncodeH265SessionParametersAddInfoEXT*    pParametersAddInfo;
707 } VkVideoEncodeH265SessionParametersCreateInfoEXT;
708 
709 typedef struct VkVideoEncodeH265DpbSlotInfoEXT {
710     VkStructureType                           sType;
711     const void*                               pNext;
712     int8_t                                    slotIndex;
713     const StdVideoEncodeH265ReferenceInfo*    pStdReferenceInfo;
714 } VkVideoEncodeH265DpbSlotInfoEXT;
715 
716 typedef struct VkVideoEncodeH265ReferenceListsEXT {
717     VkStructureType                                    sType;
718     const void*                                        pNext;
719     uint8_t                                            referenceList0EntryCount;
720     const VkVideoEncodeH265DpbSlotInfoEXT*             pReferenceList0Entries;
721     uint8_t                                            referenceList1EntryCount;
722     const VkVideoEncodeH265DpbSlotInfoEXT*             pReferenceList1Entries;
723     const StdVideoEncodeH265ReferenceModifications*    pReferenceModifications;
724 } VkVideoEncodeH265ReferenceListsEXT;
725 
726 typedef struct VkVideoEncodeH265NaluSliceEXT {
727     VkStructureType                              sType;
728     const void*                                  pNext;
729     uint32_t                                     ctbCount;
730     const VkVideoEncodeH265ReferenceListsEXT*    pReferenceFinalLists;
731     const StdVideoEncodeH265SliceHeader*         pSliceHeaderStd;
732 } VkVideoEncodeH265NaluSliceEXT;
733 
734 typedef struct VkVideoEncodeH265VclFrameInfoEXT {
735     VkStructureType                              sType;
736     const void*                                  pNext;
737     const VkVideoEncodeH265ReferenceListsEXT*    pReferenceFinalLists;
738     uint32_t                                     naluSliceEntryCount;
739     const VkVideoEncodeH265NaluSliceEXT*         pNaluSliceEntries;
740     const StdVideoEncodeH265PictureInfo*         pCurrentPictureInfo;
741 } VkVideoEncodeH265VclFrameInfoEXT;
742 
743 typedef struct VkVideoEncodeH265EmitPictureParametersEXT {
744     VkStructureType    sType;
745     const void*        pNext;
746     uint8_t            vpsId;
747     uint8_t            spsId;
748     VkBool32           emitVpsEnable;
749     VkBool32           emitSpsEnable;
750     uint32_t           ppsIdEntryCount;
751     const uint8_t*     ppsIdEntries;
752 } VkVideoEncodeH265EmitPictureParametersEXT;
753 
754 typedef struct VkVideoEncodeH265ProfileEXT {
755     VkStructureType           sType;
756     const void*               pNext;
757     StdVideoH265ProfileIdc    stdProfileIdc;
758 } VkVideoEncodeH265ProfileEXT;
759 
760 typedef struct VkVideoEncodeH265RateControlInfoEXT {
761     VkStructureType                                     sType;
762     const void*                                         pNext;
763     uint32_t                                            gopFrameCount;
764     uint32_t                                            idrPeriod;
765     uint32_t                                            consecutiveBFrameCount;
766     VkVideoEncodeH265RateControlStructureFlagBitsEXT    rateControlStructure;
767     uint8_t                                             subLayerCount;
768 } VkVideoEncodeH265RateControlInfoEXT;
769 
770 typedef struct VkVideoEncodeH265QpEXT {
771     int32_t    qpI;
772     int32_t    qpP;
773     int32_t    qpB;
774 } VkVideoEncodeH265QpEXT;
775 
776 typedef struct VkVideoEncodeH265FrameSizeEXT {
777     uint32_t    frameISize;
778     uint32_t    framePSize;
779     uint32_t    frameBSize;
780 } VkVideoEncodeH265FrameSizeEXT;
781 
782 typedef struct VkVideoEncodeH265RateControlLayerInfoEXT {
783     VkStructureType                  sType;
784     const void*                      pNext;
785     uint8_t                          temporalId;
786     VkBool32                         useInitialRcQp;
787     VkVideoEncodeH265QpEXT           initialRcQp;
788     VkBool32                         useMinQp;
789     VkVideoEncodeH265QpEXT           minQp;
790     VkBool32                         useMaxQp;
791     VkVideoEncodeH265QpEXT           maxQp;
792     VkBool32                         useMaxFrameSize;
793     VkVideoEncodeH265FrameSizeEXT    maxFrameSize;
794 } VkVideoEncodeH265RateControlLayerInfoEXT;
795 
796 
797 
798 #define VK_EXT_video_decode_h264 1
799 #include "vk_video/vulkan_video_codec_h264std_decode.h"
800 #define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 3
801 #define VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME "VK_EXT_video_decode_h264"
802 
803 typedef enum VkVideoDecodeH264PictureLayoutFlagBitsEXT {
804     VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT = 0,
805     VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT = 0x00000001,
806     VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT = 0x00000002,
807     VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
808 } VkVideoDecodeH264PictureLayoutFlagBitsEXT;
809 typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsEXT;
810 typedef VkFlags VkVideoDecodeH264CreateFlagsEXT;
811 typedef struct VkVideoDecodeH264ProfileEXT {
812     VkStructureType                           sType;
813     const void*                               pNext;
814     StdVideoH264ProfileIdc                    stdProfileIdc;
815     VkVideoDecodeH264PictureLayoutFlagsEXT    pictureLayout;
816 } VkVideoDecodeH264ProfileEXT;
817 
818 typedef struct VkVideoDecodeH264CapabilitiesEXT {
819     VkStructureType          sType;
820     void*                    pNext;
821     uint32_t                 maxLevel;
822     VkOffset2D               fieldOffsetGranularity;
823     VkExtensionProperties    stdExtensionVersion;
824 } VkVideoDecodeH264CapabilitiesEXT;
825 
826 typedef struct VkVideoDecodeH264SessionCreateInfoEXT {
827     VkStructureType                    sType;
828     const void*                        pNext;
829     VkVideoDecodeH264CreateFlagsEXT    flags;
830     const VkExtensionProperties*       pStdExtensionVersion;
831 } VkVideoDecodeH264SessionCreateInfoEXT;
832 
833 typedef struct VkVideoDecodeH264SessionParametersAddInfoEXT {
834     VkStructureType                            sType;
835     const void*                                pNext;
836     uint32_t                                   spsStdCount;
837     const StdVideoH264SequenceParameterSet*    pSpsStd;
838     uint32_t                                   ppsStdCount;
839     const StdVideoH264PictureParameterSet*     pPpsStd;
840 } VkVideoDecodeH264SessionParametersAddInfoEXT;
841 
842 typedef struct VkVideoDecodeH264SessionParametersCreateInfoEXT {
843     VkStructureType                                        sType;
844     const void*                                            pNext;
845     uint32_t                                               maxSpsStdCount;
846     uint32_t                                               maxPpsStdCount;
847     const VkVideoDecodeH264SessionParametersAddInfoEXT*    pParametersAddInfo;
848 } VkVideoDecodeH264SessionParametersCreateInfoEXT;
849 
850 typedef struct VkVideoDecodeH264PictureInfoEXT {
851     VkStructureType                         sType;
852     const void*                             pNext;
853     const StdVideoDecodeH264PictureInfo*    pStdPictureInfo;
854     uint32_t                                slicesCount;
855     const uint32_t*                         pSlicesDataOffsets;
856 } VkVideoDecodeH264PictureInfoEXT;
857 
858 typedef struct VkVideoDecodeH264MvcEXT {
859     VkStructureType                 sType;
860     const void*                     pNext;
861     const StdVideoDecodeH264Mvc*    pStdMvc;
862 } VkVideoDecodeH264MvcEXT;
863 
864 typedef struct VkVideoDecodeH264DpbSlotInfoEXT {
865     VkStructureType                           sType;
866     const void*                               pNext;
867     const StdVideoDecodeH264ReferenceInfo*    pStdReferenceInfo;
868 } VkVideoDecodeH264DpbSlotInfoEXT;
869 
870 
871 
872 #define VK_EXT_video_decode_h265 1
873 #include "vk_video/vulkan_video_codec_h265std_decode.h"
874 #define VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION 1
875 #define VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME "VK_EXT_video_decode_h265"
876 typedef VkFlags VkVideoDecodeH265CreateFlagsEXT;
877 typedef struct VkVideoDecodeH265ProfileEXT {
878     VkStructureType           sType;
879     const void*               pNext;
880     StdVideoH265ProfileIdc    stdProfileIdc;
881 } VkVideoDecodeH265ProfileEXT;
882 
883 typedef struct VkVideoDecodeH265CapabilitiesEXT {
884     VkStructureType          sType;
885     void*                    pNext;
886     uint32_t                 maxLevel;
887     VkExtensionProperties    stdExtensionVersion;
888 } VkVideoDecodeH265CapabilitiesEXT;
889 
890 typedef struct VkVideoDecodeH265SessionCreateInfoEXT {
891     VkStructureType                    sType;
892     const void*                        pNext;
893     VkVideoDecodeH265CreateFlagsEXT    flags;
894     const VkExtensionProperties*       pStdExtensionVersion;
895 } VkVideoDecodeH265SessionCreateInfoEXT;
896 
897 typedef struct VkVideoDecodeH265SessionParametersAddInfoEXT {
898     VkStructureType                            sType;
899     const void*                                pNext;
900     uint32_t                                   spsStdCount;
901     const StdVideoH265SequenceParameterSet*    pSpsStd;
902     uint32_t                                   ppsStdCount;
903     const StdVideoH265PictureParameterSet*     pPpsStd;
904 } VkVideoDecodeH265SessionParametersAddInfoEXT;
905 
906 typedef struct VkVideoDecodeH265SessionParametersCreateInfoEXT {
907     VkStructureType                                        sType;
908     const void*                                            pNext;
909     uint32_t                                               maxSpsStdCount;
910     uint32_t                                               maxPpsStdCount;
911     const VkVideoDecodeH265SessionParametersAddInfoEXT*    pParametersAddInfo;
912 } VkVideoDecodeH265SessionParametersCreateInfoEXT;
913 
914 typedef struct VkVideoDecodeH265PictureInfoEXT {
915     VkStructureType                   sType;
916     const void*                       pNext;
917     StdVideoDecodeH265PictureInfo*    pStdPictureInfo;
918     uint32_t                          slicesCount;
919     const uint32_t*                   pSlicesDataOffsets;
920 } VkVideoDecodeH265PictureInfoEXT;
921 
922 typedef struct VkVideoDecodeH265DpbSlotInfoEXT {
923     VkStructureType                           sType;
924     const void*                               pNext;
925     const StdVideoDecodeH265ReferenceInfo*    pStdReferenceInfo;
926 } VkVideoDecodeH265DpbSlotInfoEXT;
927 
928 
929 #ifdef __cplusplus
930 }
931 #endif
932 
933 #endif
934