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