• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef VULKAN_BETA_H_
2 #define VULKAN_BETA_H_ 1
3 
4 /*
5 ** Copyright 2015-2022 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   4
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           queryResultStatusSupport;
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     const 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     const 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     VkExtensionProperties        stdHeaderVersion;
142 } VkVideoCapabilitiesKHR;
143 
144 typedef struct VkPhysicalDeviceVideoFormatInfoKHR {
145      VkStructureType     sType;
146     void*                pNext;
147     VkImageUsageFlags    imageUsage;
148 } VkPhysicalDeviceVideoFormatInfoKHR;
149 
150 typedef struct VkVideoFormatPropertiesKHR {
151     VkStructureType       sType;
152     void*                 pNext;
153     VkFormat              format;
154     VkComponentMapping    componentMapping;
155     VkImageCreateFlags    imageCreateFlags;
156     VkImageType           imageType;
157     VkImageTiling         imageTiling;
158     VkImageUsageFlags     imageUsageFlags;
159 } VkVideoFormatPropertiesKHR;
160 
161 typedef struct VkVideoPictureResourceKHR {
162     VkStructureType    sType;
163     const void*        pNext;
164     VkOffset2D         codedOffset;
165     VkExtent2D         codedExtent;
166     uint32_t           baseArrayLayer;
167     VkImageView        imageViewBinding;
168 } VkVideoPictureResourceKHR;
169 
170 typedef struct VkVideoReferenceSlotKHR {
171     VkStructureType                     sType;
172     const void*                         pNext;
173     int8_t                              slotIndex;
174     const VkVideoPictureResourceKHR*    pPictureResource;
175 } VkVideoReferenceSlotKHR;
176 
177 typedef struct VkVideoGetMemoryPropertiesKHR {
178     VkStructureType           sType;
179     const void*               pNext;
180     uint32_t                  memoryBindIndex;
181     VkMemoryRequirements2*    pMemoryRequirements;
182 } VkVideoGetMemoryPropertiesKHR;
183 
184 typedef struct VkVideoBindMemoryKHR {
185     VkStructureType    sType;
186     const void*        pNext;
187     uint32_t           memoryBindIndex;
188     VkDeviceMemory     memory;
189     VkDeviceSize       memoryOffset;
190     VkDeviceSize       memorySize;
191 } VkVideoBindMemoryKHR;
192 
193 typedef struct VkVideoSessionCreateInfoKHR {
194     VkStructureType                 sType;
195     const void*                     pNext;
196     uint32_t                        queueFamilyIndex;
197     VkVideoSessionCreateFlagsKHR    flags;
198     const VkVideoProfileKHR*        pVideoProfile;
199     VkFormat                        pictureFormat;
200     VkExtent2D                      maxCodedExtent;
201     VkFormat                        referencePicturesFormat;
202     uint32_t                        maxReferencePicturesSlotsCount;
203     uint32_t                        maxReferencePicturesActiveCount;
204     const VkExtensionProperties*    pStdHeaderVersion;
205 } VkVideoSessionCreateInfoKHR;
206 
207 typedef struct VkVideoSessionParametersCreateInfoKHR {
208     VkStructureType                sType;
209     const void*                    pNext;
210     VkVideoSessionParametersKHR    videoSessionParametersTemplate;
211     VkVideoSessionKHR              videoSession;
212 } VkVideoSessionParametersCreateInfoKHR;
213 
214 typedef struct VkVideoSessionParametersUpdateInfoKHR {
215     VkStructureType    sType;
216     const void*        pNext;
217     uint32_t           updateSequenceCount;
218 } VkVideoSessionParametersUpdateInfoKHR;
219 
220 typedef struct VkVideoBeginCodingInfoKHR {
221     VkStructureType                       sType;
222     const void*                           pNext;
223     VkVideoBeginCodingFlagsKHR            flags;
224     VkVideoCodingQualityPresetFlagsKHR    codecQualityPreset;
225     VkVideoSessionKHR                     videoSession;
226     VkVideoSessionParametersKHR           videoSessionParameters;
227     uint32_t                              referenceSlotCount;
228     const VkVideoReferenceSlotKHR*        pReferenceSlots;
229 } VkVideoBeginCodingInfoKHR;
230 
231 typedef struct VkVideoEndCodingInfoKHR {
232     VkStructureType             sType;
233     const void*                 pNext;
234     VkVideoEndCodingFlagsKHR    flags;
235 } VkVideoEndCodingInfoKHR;
236 
237 typedef struct VkVideoCodingControlInfoKHR {
238     VkStructureType                 sType;
239     const void*                     pNext;
240     VkVideoCodingControlFlagsKHR    flags;
241 } VkVideoCodingControlInfoKHR;
242 
243 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities);
244 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties);
245 typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession);
246 typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator);
247 typedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements);
248 typedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories);
249 typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters);
250 typedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
251 typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator);
252 typedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo);
253 typedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo);
254 typedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo);
255 
256 #ifndef VK_NO_PROTOTYPES
257 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR(
258     VkPhysicalDevice                            physicalDevice,
259     const VkVideoProfileKHR*                    pVideoProfile,
260     VkVideoCapabilitiesKHR*                     pCapabilities);
261 
262 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR(
263     VkPhysicalDevice                            physicalDevice,
264     const VkPhysicalDeviceVideoFormatInfoKHR*   pVideoFormatInfo,
265     uint32_t*                                   pVideoFormatPropertyCount,
266     VkVideoFormatPropertiesKHR*                 pVideoFormatProperties);
267 
268 VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR(
269     VkDevice                                    device,
270     const VkVideoSessionCreateInfoKHR*          pCreateInfo,
271     const VkAllocationCallbacks*                pAllocator,
272     VkVideoSessionKHR*                          pVideoSession);
273 
274 VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR(
275     VkDevice                                    device,
276     VkVideoSessionKHR                           videoSession,
277     const VkAllocationCallbacks*                pAllocator);
278 
279 VKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR(
280     VkDevice                                    device,
281     VkVideoSessionKHR                           videoSession,
282     uint32_t*                                   pVideoSessionMemoryRequirementsCount,
283     VkVideoGetMemoryPropertiesKHR*              pVideoSessionMemoryRequirements);
284 
285 VKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR(
286     VkDevice                                    device,
287     VkVideoSessionKHR                           videoSession,
288     uint32_t                                    videoSessionBindMemoryCount,
289     const VkVideoBindMemoryKHR*                 pVideoSessionBindMemories);
290 
291 VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR(
292     VkDevice                                    device,
293     const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
294     const VkAllocationCallbacks*                pAllocator,
295     VkVideoSessionParametersKHR*                pVideoSessionParameters);
296 
297 VKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR(
298     VkDevice                                    device,
299     VkVideoSessionParametersKHR                 videoSessionParameters,
300     const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
301 
302 VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR(
303     VkDevice                                    device,
304     VkVideoSessionParametersKHR                 videoSessionParameters,
305     const VkAllocationCallbacks*                pAllocator);
306 
307 VKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR(
308     VkCommandBuffer                             commandBuffer,
309     const VkVideoBeginCodingInfoKHR*            pBeginInfo);
310 
311 VKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR(
312     VkCommandBuffer                             commandBuffer,
313     const VkVideoEndCodingInfoKHR*              pEndCodingInfo);
314 
315 VKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR(
316     VkCommandBuffer                             commandBuffer,
317     const VkVideoCodingControlInfoKHR*          pCodingControlInfo);
318 #endif
319 
320 
321 #define VK_KHR_video_decode_queue 1
322 #define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 4
323 #define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue"
324 
325 typedef enum VkVideoDecodeCapabilityFlagBitsKHR {
326     VK_VIDEO_DECODE_CAPABILITY_DEFAULT_KHR = 0,
327     VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 0x00000001,
328     VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 0x00000002,
329     VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
330 } VkVideoDecodeCapabilityFlagBitsKHR;
331 typedef VkFlags VkVideoDecodeCapabilityFlagsKHR;
332 
333 typedef enum VkVideoDecodeFlagBitsKHR {
334     VK_VIDEO_DECODE_DEFAULT_KHR = 0,
335     VK_VIDEO_DECODE_RESERVED_0_BIT_KHR = 0x00000001,
336     VK_VIDEO_DECODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
337 } VkVideoDecodeFlagBitsKHR;
338 typedef VkFlags VkVideoDecodeFlagsKHR;
339 typedef struct VkVideoDecodeCapabilitiesKHR {
340     VkStructureType                    sType;
341     void*                              pNext;
342     VkVideoDecodeCapabilityFlagsKHR    flags;
343 } VkVideoDecodeCapabilitiesKHR;
344 
345 typedef struct VkVideoDecodeInfoKHR {
346     VkStructureType                   sType;
347     const void*                       pNext;
348     VkVideoDecodeFlagsKHR             flags;
349     VkBuffer                          srcBuffer;
350     VkDeviceSize                      srcBufferOffset;
351     VkDeviceSize                      srcBufferRange;
352     VkVideoPictureResourceKHR         dstPictureResource;
353     const VkVideoReferenceSlotKHR*    pSetupReferenceSlot;
354     uint32_t                          referenceSlotCount;
355     const VkVideoReferenceSlotKHR*    pReferenceSlots;
356 } VkVideoDecodeInfoKHR;
357 
358 typedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo);
359 
360 #ifndef VK_NO_PROTOTYPES
361 VKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR(
362     VkCommandBuffer                             commandBuffer,
363     const VkVideoDecodeInfoKHR*                 pFrameInfo);
364 #endif
365 
366 
367 #define VK_KHR_portability_subset 1
368 #define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1
369 #define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset"
370 typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR {
371     VkStructureType    sType;
372     void*              pNext;
373     VkBool32           constantAlphaColorBlendFactors;
374     VkBool32           events;
375     VkBool32           imageViewFormatReinterpretation;
376     VkBool32           imageViewFormatSwizzle;
377     VkBool32           imageView2DOn3DImage;
378     VkBool32           multisampleArrayImage;
379     VkBool32           mutableComparisonSamplers;
380     VkBool32           pointPolygons;
381     VkBool32           samplerMipLodBias;
382     VkBool32           separateStencilMaskRef;
383     VkBool32           shaderSampleRateInterpolationFunctions;
384     VkBool32           tessellationIsolines;
385     VkBool32           tessellationPointMode;
386     VkBool32           triangleFans;
387     VkBool32           vertexAttributeAccessBeyondStride;
388 } VkPhysicalDevicePortabilitySubsetFeaturesKHR;
389 
390 typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR {
391     VkStructureType    sType;
392     void*              pNext;
393     uint32_t           minVertexInputBindingStrideAlignment;
394 } VkPhysicalDevicePortabilitySubsetPropertiesKHR;
395 
396 
397 
398 #define VK_KHR_video_encode_queue 1
399 #define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 5
400 #define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue"
401 
402 typedef enum VkVideoEncodeFlagBitsKHR {
403     VK_VIDEO_ENCODE_DEFAULT_KHR = 0,
404     VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR = 0x00000001,
405     VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
406 } VkVideoEncodeFlagBitsKHR;
407 typedef VkFlags VkVideoEncodeFlagsKHR;
408 
409 typedef enum VkVideoEncodeCapabilityFlagBitsKHR {
410     VK_VIDEO_ENCODE_CAPABILITY_DEFAULT_KHR = 0,
411     VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 0x00000001,
412     VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
413 } VkVideoEncodeCapabilityFlagBitsKHR;
414 typedef VkFlags VkVideoEncodeCapabilityFlagsKHR;
415 
416 typedef enum VkVideoEncodeRateControlModeFlagBitsKHR {
417     VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR = 0,
418     VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 1,
419     VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 2,
420     VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
421 } VkVideoEncodeRateControlModeFlagBitsKHR;
422 typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR;
423 
424 typedef enum VkVideoEncodeRateControlFlagBitsKHR {
425     VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR = 0,
426     VK_VIDEO_ENCODE_RATE_CONTROL_RESERVED_0_BIT_KHR = 0x00000001,
427     VK_VIDEO_ENCODE_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
428 } VkVideoEncodeRateControlFlagBitsKHR;
429 typedef VkFlags VkVideoEncodeRateControlFlagsKHR;
430 typedef struct VkVideoEncodeInfoKHR {
431     VkStructureType                   sType;
432     const void*                       pNext;
433     VkVideoEncodeFlagsKHR             flags;
434     uint32_t                          qualityLevel;
435     VkBuffer                          dstBitstreamBuffer;
436     VkDeviceSize                      dstBitstreamBufferOffset;
437     VkDeviceSize                      dstBitstreamBufferMaxRange;
438     VkVideoPictureResourceKHR         srcPictureResource;
439     const VkVideoReferenceSlotKHR*    pSetupReferenceSlot;
440     uint32_t                          referenceSlotCount;
441     const VkVideoReferenceSlotKHR*    pReferenceSlots;
442     uint32_t                          precedingExternallyEncodedBytes;
443 } VkVideoEncodeInfoKHR;
444 
445 typedef struct VkVideoEncodeCapabilitiesKHR {
446     VkStructureType                         sType;
447     void*                                   pNext;
448     VkVideoEncodeCapabilityFlagsKHR         flags;
449     VkVideoEncodeRateControlModeFlagsKHR    rateControlModes;
450     uint8_t                                 rateControlLayerCount;
451     uint8_t                                 qualityLevelCount;
452     VkExtent2D                              inputImageDataFillAlignment;
453 } VkVideoEncodeCapabilitiesKHR;
454 
455 typedef struct VkVideoEncodeRateControlLayerInfoKHR {
456     VkStructureType    sType;
457     const void*        pNext;
458     uint32_t           averageBitrate;
459     uint32_t           maxBitrate;
460     uint32_t           frameRateNumerator;
461     uint32_t           frameRateDenominator;
462     uint32_t           virtualBufferSizeInMs;
463     uint32_t           initialVirtualBufferSizeInMs;
464 } VkVideoEncodeRateControlLayerInfoKHR;
465 
466 typedef struct VkVideoEncodeRateControlInfoKHR {
467     VkStructureType                                sType;
468     const void*                                    pNext;
469     VkVideoEncodeRateControlFlagsKHR               flags;
470     VkVideoEncodeRateControlModeFlagBitsKHR        rateControlMode;
471     uint8_t                                        layerCount;
472     const VkVideoEncodeRateControlLayerInfoKHR*    pLayerConfigs;
473 } VkVideoEncodeRateControlInfoKHR;
474 
475 typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo);
476 
477 #ifndef VK_NO_PROTOTYPES
478 VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR(
479     VkCommandBuffer                             commandBuffer,
480     const VkVideoEncodeInfoKHR*                 pEncodeInfo);
481 #endif
482 
483 
484 #define VK_EXT_video_encode_h264 1
485 #include "vk_video/vulkan_video_codec_h264std.h"
486 #include "vk_video/vulkan_video_codec_h264std_encode.h"
487 #define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 7
488 #define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264"
489 
490 typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT {
491     VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_ENABLED_BIT_EXT = 0x00000001,
492     VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_DISABLED_BIT_EXT = 0x00000002,
493     VK_VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000004,
494     VK_VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXT = 0x00000008,
495     VK_VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000010,
496     VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020,
497     VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000040,
498     VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000080,
499     VK_VIDEO_ENCODE_H264_CAPABILITY_PIC_INIT_QP_MINUS26_BIT_EXT = 0x00000100,
500     VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00000200,
501     VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_EXPLICIT_BIT_EXT = 0x00000400,
502     VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_IMPLICIT_BIT_EXT = 0x00000800,
503     VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00001000,
504     VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00002000,
505     VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00004000,
506     VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00008000,
507     VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00010000,
508     VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00020000,
509     VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00040000,
510     VK_VIDEO_ENCODE_H264_CAPABILITY_DISABLE_DIRECT_SPATIAL_MV_PRED_BIT_EXT = 0x00080000,
511     VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00100000,
512     VK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT = 0x00200000,
513     VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT = 0x00400000,
514     VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x00800000,
515     VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x01000000,
516     VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
517 } VkVideoEncodeH264CapabilityFlagBitsEXT;
518 typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT;
519 
520 typedef enum VkVideoEncodeH264InputModeFlagBitsEXT {
521     VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 0x00000001,
522     VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 0x00000002,
523     VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
524     VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
525 } VkVideoEncodeH264InputModeFlagBitsEXT;
526 typedef VkFlags VkVideoEncodeH264InputModeFlagsEXT;
527 
528 typedef enum VkVideoEncodeH264OutputModeFlagBitsEXT {
529     VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001,
530     VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002,
531     VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
532     VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
533 } VkVideoEncodeH264OutputModeFlagBitsEXT;
534 typedef VkFlags VkVideoEncodeH264OutputModeFlagsEXT;
535 
536 typedef enum VkVideoEncodeH264RateControlStructureFlagBitsEXT {
537     VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0,
538     VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT = 0x00000001,
539     VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT = 0x00000002,
540     VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
541 } VkVideoEncodeH264RateControlStructureFlagBitsEXT;
542 typedef VkFlags VkVideoEncodeH264RateControlStructureFlagsEXT;
543 typedef struct VkVideoEncodeH264CapabilitiesEXT {
544     VkStructureType                        sType;
545     void*                                  pNext;
546     VkVideoEncodeH264CapabilityFlagsEXT    flags;
547     VkVideoEncodeH264InputModeFlagsEXT     inputModeFlags;
548     VkVideoEncodeH264OutputModeFlagsEXT    outputModeFlags;
549     uint8_t                                maxPPictureL0ReferenceCount;
550     uint8_t                                maxBPictureL0ReferenceCount;
551     uint8_t                                maxL1ReferenceCount;
552     VkBool32                               motionVectorsOverPicBoundariesFlag;
553     uint32_t                               maxBytesPerPicDenom;
554     uint32_t                               maxBitsPerMbDenom;
555     uint32_t                               log2MaxMvLengthHorizontal;
556     uint32_t                               log2MaxMvLengthVertical;
557 } VkVideoEncodeH264CapabilitiesEXT;
558 
559 typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT {
560     VkStructureType                            sType;
561     const void*                                pNext;
562     uint32_t                                   spsStdCount;
563     const StdVideoH264SequenceParameterSet*    pSpsStd;
564     uint32_t                                   ppsStdCount;
565     const StdVideoH264PictureParameterSet*     pPpsStd;
566 } VkVideoEncodeH264SessionParametersAddInfoEXT;
567 
568 typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT {
569     VkStructureType                                        sType;
570     const void*                                            pNext;
571     uint32_t                                               maxSpsStdCount;
572     uint32_t                                               maxPpsStdCount;
573     const VkVideoEncodeH264SessionParametersAddInfoEXT*    pParametersAddInfo;
574 } VkVideoEncodeH264SessionParametersCreateInfoEXT;
575 
576 typedef struct VkVideoEncodeH264DpbSlotInfoEXT {
577     VkStructureType                           sType;
578     const void*                               pNext;
579     int8_t                                    slotIndex;
580     const StdVideoEncodeH264ReferenceInfo*    pStdReferenceInfo;
581 } VkVideoEncodeH264DpbSlotInfoEXT;
582 
583 typedef struct VkVideoEncodeH264ReferenceListsEXT {
584     VkStructureType                                      sType;
585     const void*                                          pNext;
586     uint8_t                                              referenceList0EntryCount;
587     const VkVideoEncodeH264DpbSlotInfoEXT*               pReferenceList0Entries;
588     uint8_t                                              referenceList1EntryCount;
589     const VkVideoEncodeH264DpbSlotInfoEXT*               pReferenceList1Entries;
590     const StdVideoEncodeH264RefMemMgmtCtrlOperations*    pMemMgmtCtrlOperations;
591 } VkVideoEncodeH264ReferenceListsEXT;
592 
593 typedef struct VkVideoEncodeH264NaluSliceEXT {
594     VkStructureType                              sType;
595     const void*                                  pNext;
596     uint32_t                                     mbCount;
597     const VkVideoEncodeH264ReferenceListsEXT*    pReferenceFinalLists;
598     const StdVideoEncodeH264SliceHeader*         pSliceHeaderStd;
599 } VkVideoEncodeH264NaluSliceEXT;
600 
601 typedef struct VkVideoEncodeH264VclFrameInfoEXT {
602     VkStructureType                              sType;
603     const void*                                  pNext;
604     const VkVideoEncodeH264ReferenceListsEXT*    pReferenceFinalLists;
605     uint32_t                                     naluSliceEntryCount;
606     const VkVideoEncodeH264NaluSliceEXT*         pNaluSliceEntries;
607     const StdVideoEncodeH264PictureInfo*         pCurrentPictureInfo;
608 } VkVideoEncodeH264VclFrameInfoEXT;
609 
610 typedef struct VkVideoEncodeH264EmitPictureParametersEXT {
611     VkStructureType    sType;
612     const void*        pNext;
613     uint8_t            spsId;
614     VkBool32           emitSpsEnable;
615     uint32_t           ppsIdEntryCount;
616     const uint8_t*     ppsIdEntries;
617 } VkVideoEncodeH264EmitPictureParametersEXT;
618 
619 typedef struct VkVideoEncodeH264ProfileEXT {
620     VkStructureType           sType;
621     const void*               pNext;
622     StdVideoH264ProfileIdc    stdProfileIdc;
623 } VkVideoEncodeH264ProfileEXT;
624 
625 typedef struct VkVideoEncodeH264RateControlInfoEXT {
626     VkStructureType                                     sType;
627     const void*                                         pNext;
628     uint32_t                                            gopFrameCount;
629     uint32_t                                            idrPeriod;
630     uint32_t                                            consecutiveBFrameCount;
631     VkVideoEncodeH264RateControlStructureFlagBitsEXT    rateControlStructure;
632     uint8_t                                             temporalLayerCount;
633 } VkVideoEncodeH264RateControlInfoEXT;
634 
635 typedef struct VkVideoEncodeH264QpEXT {
636     int32_t    qpI;
637     int32_t    qpP;
638     int32_t    qpB;
639 } VkVideoEncodeH264QpEXT;
640 
641 typedef struct VkVideoEncodeH264FrameSizeEXT {
642     uint32_t    frameISize;
643     uint32_t    framePSize;
644     uint32_t    frameBSize;
645 } VkVideoEncodeH264FrameSizeEXT;
646 
647 typedef struct VkVideoEncodeH264RateControlLayerInfoEXT {
648     VkStructureType                  sType;
649     const void*                      pNext;
650     uint8_t                          temporalLayerId;
651     VkBool32                         useInitialRcQp;
652     VkVideoEncodeH264QpEXT           initialRcQp;
653     VkBool32                         useMinQp;
654     VkVideoEncodeH264QpEXT           minQp;
655     VkBool32                         useMaxQp;
656     VkVideoEncodeH264QpEXT           maxQp;
657     VkBool32                         useMaxFrameSize;
658     VkVideoEncodeH264FrameSizeEXT    maxFrameSize;
659 } VkVideoEncodeH264RateControlLayerInfoEXT;
660 
661 
662 
663 #define VK_EXT_video_encode_h265 1
664 #include "vk_video/vulkan_video_codec_h265std.h"
665 #include "vk_video/vulkan_video_codec_h265std_encode.h"
666 #define VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION 7
667 #define VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_EXT_video_encode_h265"
668 
669 typedef enum VkVideoEncodeH265CapabilityFlagBitsEXT {
670     VK_VIDEO_ENCODE_H265_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000001,
671     VK_VIDEO_ENCODE_H265_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000002,
672     VK_VIDEO_ENCODE_H265_CAPABILITY_SAMPLE_ADAPTIVE_OFFSET_ENABLED_BIT_EXT = 0x00000004,
673     VK_VIDEO_ENCODE_H265_CAPABILITY_PCM_ENABLE_BIT_EXT = 0x00000008,
674     VK_VIDEO_ENCODE_H265_CAPABILITY_SPS_TEMPORAL_MVP_ENABLED_BIT_EXT = 0x00000010,
675     VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020,
676     VK_VIDEO_ENCODE_H265_CAPABILITY_INIT_QP_MINUS26_BIT_EXT = 0x00000040,
677     VK_VIDEO_ENCODE_H265_CAPABILITY_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT = 0x00000080,
678     VK_VIDEO_ENCODE_H265_CAPABILITY_SIGN_DATA_HIDING_ENABLED_BIT_EXT = 0x00000100,
679     VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_ENABLED_BIT_EXT = 0x00000200,
680     VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_DISABLED_BIT_EXT = 0x00000400,
681     VK_VIDEO_ENCODE_H265_CAPABILITY_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_BIT_EXT = 0x00000800,
682     VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00001000,
683     VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_BIPRED_BIT_EXT = 0x00002000,
684     VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00004000,
685     VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSQUANT_BYPASS_ENABLED_BIT_EXT = 0x00008000,
686     VK_VIDEO_ENCODE_H265_CAPABILITY_ENTROPY_CODING_SYNC_ENABLED_BIT_EXT = 0x00010000,
687     VK_VIDEO_ENCODE_H265_CAPABILITY_DEBLOCKING_FILTER_OVERRIDE_ENABLED_BIT_EXT = 0x00020000,
688     VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_FRAME_BIT_EXT = 0x00040000,
689     VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_PER_TILE_BIT_EXT = 0x00080000,
690     VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_SLICE_BIT_EXT = 0x00100000,
691     VK_VIDEO_ENCODE_H265_CAPABILITY_SLICE_SEGMENT_CTB_COUNT_BIT_EXT = 0x00200000,
692     VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT = 0x00400000,
693     VK_VIDEO_ENCODE_H265_CAPABILITY_DEPENDENT_SLICE_SEGMENT_BIT_EXT = 0x00800000,
694     VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x01000000,
695     VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x02000000,
696     VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
697 } VkVideoEncodeH265CapabilityFlagBitsEXT;
698 typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT;
699 
700 typedef enum VkVideoEncodeH265InputModeFlagBitsEXT {
701     VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT = 0x00000001,
702     VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_SEGMENT_BIT_EXT = 0x00000002,
703     VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
704     VK_VIDEO_ENCODE_H265_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
705 } VkVideoEncodeH265InputModeFlagBitsEXT;
706 typedef VkFlags VkVideoEncodeH265InputModeFlagsEXT;
707 
708 typedef enum VkVideoEncodeH265OutputModeFlagBitsEXT {
709     VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001,
710     VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_SEGMENT_BIT_EXT = 0x00000002,
711     VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
712     VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
713 } VkVideoEncodeH265OutputModeFlagBitsEXT;
714 typedef VkFlags VkVideoEncodeH265OutputModeFlagsEXT;
715 
716 typedef enum VkVideoEncodeH265CtbSizeFlagBitsEXT {
717     VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT = 0x00000001,
718     VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT = 0x00000002,
719     VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT = 0x00000004,
720     VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
721 } VkVideoEncodeH265CtbSizeFlagBitsEXT;
722 typedef VkFlags VkVideoEncodeH265CtbSizeFlagsEXT;
723 
724 typedef enum VkVideoEncodeH265TransformBlockSizeFlagBitsEXT {
725     VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_EXT = 0x00000001,
726     VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_EXT = 0x00000002,
727     VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_EXT = 0x00000004,
728     VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_EXT = 0x00000008,
729     VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
730 } VkVideoEncodeH265TransformBlockSizeFlagBitsEXT;
731 typedef VkFlags VkVideoEncodeH265TransformBlockSizeFlagsEXT;
732 
733 typedef enum VkVideoEncodeH265RateControlStructureFlagBitsEXT {
734     VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0,
735     VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT = 0x00000001,
736     VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT = 0x00000002,
737     VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
738 } VkVideoEncodeH265RateControlStructureFlagBitsEXT;
739 typedef VkFlags VkVideoEncodeH265RateControlStructureFlagsEXT;
740 typedef struct VkVideoEncodeH265CapabilitiesEXT {
741     VkStructureType                                sType;
742     void*                                          pNext;
743     VkVideoEncodeH265CapabilityFlagsEXT            flags;
744     VkVideoEncodeH265InputModeFlagsEXT             inputModeFlags;
745     VkVideoEncodeH265OutputModeFlagsEXT            outputModeFlags;
746     VkVideoEncodeH265CtbSizeFlagsEXT               ctbSizes;
747     VkVideoEncodeH265TransformBlockSizeFlagsEXT    transformBlockSizes;
748     uint8_t                                        maxPPictureL0ReferenceCount;
749     uint8_t                                        maxBPictureL0ReferenceCount;
750     uint8_t                                        maxL1ReferenceCount;
751     uint8_t                                        maxSubLayersCount;
752     uint8_t                                        minLog2MinLumaCodingBlockSizeMinus3;
753     uint8_t                                        maxLog2MinLumaCodingBlockSizeMinus3;
754     uint8_t                                        minLog2MinLumaTransformBlockSizeMinus2;
755     uint8_t                                        maxLog2MinLumaTransformBlockSizeMinus2;
756     uint8_t                                        minMaxTransformHierarchyDepthInter;
757     uint8_t                                        maxMaxTransformHierarchyDepthInter;
758     uint8_t                                        minMaxTransformHierarchyDepthIntra;
759     uint8_t                                        maxMaxTransformHierarchyDepthIntra;
760     uint8_t                                        maxDiffCuQpDeltaDepth;
761     uint8_t                                        minMaxNumMergeCand;
762     uint8_t                                        maxMaxNumMergeCand;
763 } VkVideoEncodeH265CapabilitiesEXT;
764 
765 typedef struct VkVideoEncodeH265SessionParametersAddInfoEXT {
766     VkStructureType                            sType;
767     const void*                                pNext;
768     uint32_t                                   vpsStdCount;
769     const StdVideoH265VideoParameterSet*       pVpsStd;
770     uint32_t                                   spsStdCount;
771     const StdVideoH265SequenceParameterSet*    pSpsStd;
772     uint32_t                                   ppsStdCount;
773     const StdVideoH265PictureParameterSet*     pPpsStd;
774 } VkVideoEncodeH265SessionParametersAddInfoEXT;
775 
776 typedef struct VkVideoEncodeH265SessionParametersCreateInfoEXT {
777     VkStructureType                                        sType;
778     const void*                                            pNext;
779     uint32_t                                               maxVpsStdCount;
780     uint32_t                                               maxSpsStdCount;
781     uint32_t                                               maxPpsStdCount;
782     const VkVideoEncodeH265SessionParametersAddInfoEXT*    pParametersAddInfo;
783 } VkVideoEncodeH265SessionParametersCreateInfoEXT;
784 
785 typedef struct VkVideoEncodeH265DpbSlotInfoEXT {
786     VkStructureType                           sType;
787     const void*                               pNext;
788     int8_t                                    slotIndex;
789     const StdVideoEncodeH265ReferenceInfo*    pStdReferenceInfo;
790 } VkVideoEncodeH265DpbSlotInfoEXT;
791 
792 typedef struct VkVideoEncodeH265ReferenceListsEXT {
793     VkStructureType                                    sType;
794     const void*                                        pNext;
795     uint8_t                                            referenceList0EntryCount;
796     const VkVideoEncodeH265DpbSlotInfoEXT*             pReferenceList0Entries;
797     uint8_t                                            referenceList1EntryCount;
798     const VkVideoEncodeH265DpbSlotInfoEXT*             pReferenceList1Entries;
799     const StdVideoEncodeH265ReferenceModifications*    pReferenceModifications;
800 } VkVideoEncodeH265ReferenceListsEXT;
801 
802 typedef struct VkVideoEncodeH265NaluSliceSegmentEXT {
803     VkStructureType                                sType;
804     const void*                                    pNext;
805     uint32_t                                       ctbCount;
806     const VkVideoEncodeH265ReferenceListsEXT*      pReferenceFinalLists;
807     const StdVideoEncodeH265SliceSegmentHeader*    pSliceSegmentHeaderStd;
808 } VkVideoEncodeH265NaluSliceSegmentEXT;
809 
810 typedef struct VkVideoEncodeH265VclFrameInfoEXT {
811     VkStructureType                                sType;
812     const void*                                    pNext;
813     const VkVideoEncodeH265ReferenceListsEXT*      pReferenceFinalLists;
814     uint32_t                                       naluSliceSegmentEntryCount;
815     const VkVideoEncodeH265NaluSliceSegmentEXT*    pNaluSliceSegmentEntries;
816     const StdVideoEncodeH265PictureInfo*           pCurrentPictureInfo;
817 } VkVideoEncodeH265VclFrameInfoEXT;
818 
819 typedef struct VkVideoEncodeH265EmitPictureParametersEXT {
820     VkStructureType    sType;
821     const void*        pNext;
822     uint8_t            vpsId;
823     uint8_t            spsId;
824     VkBool32           emitVpsEnable;
825     VkBool32           emitSpsEnable;
826     uint32_t           ppsIdEntryCount;
827     const uint8_t*     ppsIdEntries;
828 } VkVideoEncodeH265EmitPictureParametersEXT;
829 
830 typedef struct VkVideoEncodeH265ProfileEXT {
831     VkStructureType           sType;
832     const void*               pNext;
833     StdVideoH265ProfileIdc    stdProfileIdc;
834 } VkVideoEncodeH265ProfileEXT;
835 
836 typedef struct VkVideoEncodeH265RateControlInfoEXT {
837     VkStructureType                                     sType;
838     const void*                                         pNext;
839     uint32_t                                            gopFrameCount;
840     uint32_t                                            idrPeriod;
841     uint32_t                                            consecutiveBFrameCount;
842     VkVideoEncodeH265RateControlStructureFlagBitsEXT    rateControlStructure;
843     uint8_t                                             subLayerCount;
844 } VkVideoEncodeH265RateControlInfoEXT;
845 
846 typedef struct VkVideoEncodeH265QpEXT {
847     int32_t    qpI;
848     int32_t    qpP;
849     int32_t    qpB;
850 } VkVideoEncodeH265QpEXT;
851 
852 typedef struct VkVideoEncodeH265FrameSizeEXT {
853     uint32_t    frameISize;
854     uint32_t    framePSize;
855     uint32_t    frameBSize;
856 } VkVideoEncodeH265FrameSizeEXT;
857 
858 typedef struct VkVideoEncodeH265RateControlLayerInfoEXT {
859     VkStructureType                  sType;
860     const void*                      pNext;
861     uint8_t                          temporalId;
862     VkBool32                         useInitialRcQp;
863     VkVideoEncodeH265QpEXT           initialRcQp;
864     VkBool32                         useMinQp;
865     VkVideoEncodeH265QpEXT           minQp;
866     VkBool32                         useMaxQp;
867     VkVideoEncodeH265QpEXT           maxQp;
868     VkBool32                         useMaxFrameSize;
869     VkVideoEncodeH265FrameSizeEXT    maxFrameSize;
870 } VkVideoEncodeH265RateControlLayerInfoEXT;
871 
872 
873 
874 #define VK_EXT_video_decode_h264 1
875 #include "vk_video/vulkan_video_codec_h264std_decode.h"
876 #define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 5
877 #define VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME "VK_EXT_video_decode_h264"
878 
879 typedef enum VkVideoDecodeH264PictureLayoutFlagBitsEXT {
880     VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT = 0,
881     VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT = 0x00000001,
882     VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT = 0x00000002,
883     VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
884 } VkVideoDecodeH264PictureLayoutFlagBitsEXT;
885 typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsEXT;
886 typedef struct VkVideoDecodeH264ProfileEXT {
887     VkStructureType                           sType;
888     const void*                               pNext;
889     StdVideoH264ProfileIdc                    stdProfileIdc;
890     VkVideoDecodeH264PictureLayoutFlagsEXT    pictureLayout;
891 } VkVideoDecodeH264ProfileEXT;
892 
893 typedef struct VkVideoDecodeH264CapabilitiesEXT {
894     VkStructureType      sType;
895     void*                pNext;
896     StdVideoH264Level    maxLevel;
897     VkOffset2D           fieldOffsetGranularity;
898 } VkVideoDecodeH264CapabilitiesEXT;
899 
900 typedef struct VkVideoDecodeH264SessionParametersAddInfoEXT {
901     VkStructureType                            sType;
902     const void*                                pNext;
903     uint32_t                                   spsStdCount;
904     const StdVideoH264SequenceParameterSet*    pSpsStd;
905     uint32_t                                   ppsStdCount;
906     const StdVideoH264PictureParameterSet*     pPpsStd;
907 } VkVideoDecodeH264SessionParametersAddInfoEXT;
908 
909 typedef struct VkVideoDecodeH264SessionParametersCreateInfoEXT {
910     VkStructureType                                        sType;
911     const void*                                            pNext;
912     uint32_t                                               maxSpsStdCount;
913     uint32_t                                               maxPpsStdCount;
914     const VkVideoDecodeH264SessionParametersAddInfoEXT*    pParametersAddInfo;
915 } VkVideoDecodeH264SessionParametersCreateInfoEXT;
916 
917 typedef struct VkVideoDecodeH264PictureInfoEXT {
918     VkStructureType                         sType;
919     const void*                             pNext;
920     const StdVideoDecodeH264PictureInfo*    pStdPictureInfo;
921     uint32_t                                slicesCount;
922     const uint32_t*                         pSlicesDataOffsets;
923 } VkVideoDecodeH264PictureInfoEXT;
924 
925 typedef struct VkVideoDecodeH264MvcEXT {
926     VkStructureType                 sType;
927     const void*                     pNext;
928     const StdVideoDecodeH264Mvc*    pStdMvc;
929 } VkVideoDecodeH264MvcEXT;
930 
931 typedef struct VkVideoDecodeH264DpbSlotInfoEXT {
932     VkStructureType                           sType;
933     const void*                               pNext;
934     const StdVideoDecodeH264ReferenceInfo*    pStdReferenceInfo;
935 } VkVideoDecodeH264DpbSlotInfoEXT;
936 
937 
938 
939 #define VK_EXT_video_decode_h265 1
940 #include "vk_video/vulkan_video_codec_h265std_decode.h"
941 #define VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION 3
942 #define VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME "VK_EXT_video_decode_h265"
943 typedef struct VkVideoDecodeH265ProfileEXT {
944     VkStructureType           sType;
945     const void*               pNext;
946     StdVideoH265ProfileIdc    stdProfileIdc;
947 } VkVideoDecodeH265ProfileEXT;
948 
949 typedef struct VkVideoDecodeH265CapabilitiesEXT {
950     VkStructureType      sType;
951     void*                pNext;
952     StdVideoH265Level    maxLevel;
953 } VkVideoDecodeH265CapabilitiesEXT;
954 
955 typedef struct VkVideoDecodeH265SessionParametersAddInfoEXT {
956     VkStructureType                            sType;
957     const void*                                pNext;
958     uint32_t                                   vpsStdCount;
959     const StdVideoH265VideoParameterSet*       pVpsStd;
960     uint32_t                                   spsStdCount;
961     const StdVideoH265SequenceParameterSet*    pSpsStd;
962     uint32_t                                   ppsStdCount;
963     const StdVideoH265PictureParameterSet*     pPpsStd;
964 } VkVideoDecodeH265SessionParametersAddInfoEXT;
965 
966 typedef struct VkVideoDecodeH265SessionParametersCreateInfoEXT {
967     VkStructureType                                        sType;
968     const void*                                            pNext;
969     uint32_t                                               maxVpsStdCount;
970     uint32_t                                               maxSpsStdCount;
971     uint32_t                                               maxPpsStdCount;
972     const VkVideoDecodeH265SessionParametersAddInfoEXT*    pParametersAddInfo;
973 } VkVideoDecodeH265SessionParametersCreateInfoEXT;
974 
975 typedef struct VkVideoDecodeH265PictureInfoEXT {
976     VkStructureType                   sType;
977     const void*                       pNext;
978     StdVideoDecodeH265PictureInfo*    pStdPictureInfo;
979     uint32_t                          slicesCount;
980     const uint32_t*                   pSlicesDataOffsets;
981 } VkVideoDecodeH265PictureInfoEXT;
982 
983 typedef struct VkVideoDecodeH265DpbSlotInfoEXT {
984     VkStructureType                           sType;
985     const void*                               pNext;
986     const StdVideoDecodeH265ReferenceInfo*    pStdReferenceInfo;
987 } VkVideoDecodeH265DpbSlotInfoEXT;
988 
989 
990 #ifdef __cplusplus
991 }
992 #endif
993 
994 #endif
995