vulkan_beta.h revision 7ec681f3
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
17extern "C" {
18#endif
19
20
21
22#define VK_KHR_video_queue 1
23VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR)
24VK_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
28typedef 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
35typedef 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_DECODE_H264_BIT_EXT = 0x00000001,
42#endif
43#ifdef VK_ENABLE_BETA_EXTENSIONS
44    VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT = 0x00000002,
45#endif
46    VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
47} VkVideoCodecOperationFlagBitsKHR;
48typedef VkFlags VkVideoCodecOperationFlagsKHR;
49
50typedef enum VkVideoChromaSubsamplingFlagBitsKHR {
51    VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR = 0,
52    VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0x00000001,
53    VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0x00000002,
54    VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0x00000004,
55    VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x00000008,
56    VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
57} VkVideoChromaSubsamplingFlagBitsKHR;
58typedef VkFlags VkVideoChromaSubsamplingFlagsKHR;
59
60typedef enum VkVideoComponentBitDepthFlagBitsKHR {
61    VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0,
62    VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0x00000001,
63    VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0x00000004,
64    VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x00000010,
65    VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
66} VkVideoComponentBitDepthFlagBitsKHR;
67typedef VkFlags VkVideoComponentBitDepthFlagsKHR;
68
69typedef enum VkVideoCapabilityFlagBitsKHR {
70    VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
71    VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002,
72    VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
73} VkVideoCapabilityFlagBitsKHR;
74typedef VkFlags VkVideoCapabilityFlagsKHR;
75
76typedef enum VkVideoSessionCreateFlagBitsKHR {
77    VK_VIDEO_SESSION_CREATE_DEFAULT_KHR = 0,
78    VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
79    VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
80} VkVideoSessionCreateFlagBitsKHR;
81typedef VkFlags VkVideoSessionCreateFlagsKHR;
82typedef VkFlags VkVideoBeginCodingFlagsKHR;
83typedef VkFlags VkVideoEndCodingFlagsKHR;
84
85typedef enum VkVideoCodingControlFlagBitsKHR {
86    VK_VIDEO_CODING_CONTROL_DEFAULT_KHR = 0,
87    VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0x00000001,
88    VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
89} VkVideoCodingControlFlagBitsKHR;
90typedef VkFlags VkVideoCodingControlFlagsKHR;
91
92typedef enum VkVideoCodingQualityPresetFlagBitsKHR {
93    VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR = 0x00000001,
94    VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR = 0x00000002,
95    VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR = 0x00000004,
96    VK_VIDEO_CODING_QUALITY_PRESET_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
97} VkVideoCodingQualityPresetFlagBitsKHR;
98typedef VkFlags VkVideoCodingQualityPresetFlagsKHR;
99typedef struct VkVideoQueueFamilyProperties2KHR {
100    VkStructureType                  sType;
101    void*                            pNext;
102    VkVideoCodecOperationFlagsKHR    videoCodecOperations;
103} VkVideoQueueFamilyProperties2KHR;
104
105typedef struct VkVideoProfileKHR {
106    VkStructureType                     sType;
107    void*                               pNext;
108    VkVideoCodecOperationFlagBitsKHR    videoCodecOperation;
109    VkVideoChromaSubsamplingFlagsKHR    chromaSubsampling;
110    VkVideoComponentBitDepthFlagsKHR    lumaBitDepth;
111    VkVideoComponentBitDepthFlagsKHR    chromaBitDepth;
112} VkVideoProfileKHR;
113
114typedef struct VkVideoProfilesKHR {
115    VkStructureType             sType;
116    void*                       pNext;
117    uint32_t                    profileCount;
118    const VkVideoProfileKHR*    pProfiles;
119} VkVideoProfilesKHR;
120
121typedef struct VkVideoCapabilitiesKHR {
122    VkStructureType              sType;
123    void*                        pNext;
124    VkVideoCapabilityFlagsKHR    capabilityFlags;
125    VkDeviceSize                 minBitstreamBufferOffsetAlignment;
126    VkDeviceSize                 minBitstreamBufferSizeAlignment;
127    VkExtent2D                   videoPictureExtentGranularity;
128    VkExtent2D                   minExtent;
129    VkExtent2D                   maxExtent;
130    uint32_t                     maxReferencePicturesSlotsCount;
131    uint32_t                     maxReferencePicturesActiveCount;
132} VkVideoCapabilitiesKHR;
133
134typedef struct VkPhysicalDeviceVideoFormatInfoKHR {
135    VkStructureType              sType;
136    void*                        pNext;
137    VkImageUsageFlags            imageUsage;
138    const VkVideoProfilesKHR*    pVideoProfiles;
139} VkPhysicalDeviceVideoFormatInfoKHR;
140
141typedef struct VkVideoFormatPropertiesKHR {
142    VkStructureType    sType;
143    void*              pNext;
144    VkFormat           format;
145} VkVideoFormatPropertiesKHR;
146
147typedef struct VkVideoPictureResourceKHR {
148    VkStructureType    sType;
149    const void*        pNext;
150    VkOffset2D         codedOffset;
151    VkExtent2D         codedExtent;
152    uint32_t           baseArrayLayer;
153    VkImageView        imageViewBinding;
154} VkVideoPictureResourceKHR;
155
156typedef struct VkVideoReferenceSlotKHR {
157    VkStructureType                     sType;
158    const void*                         pNext;
159    int8_t                              slotIndex;
160    const VkVideoPictureResourceKHR*    pPictureResource;
161} VkVideoReferenceSlotKHR;
162
163typedef struct VkVideoGetMemoryPropertiesKHR {
164    VkStructureType           sType;
165    const void*               pNext;
166    uint32_t                  memoryBindIndex;
167    VkMemoryRequirements2*    pMemoryRequirements;
168} VkVideoGetMemoryPropertiesKHR;
169
170typedef struct VkVideoBindMemoryKHR {
171    VkStructureType    sType;
172    const void*        pNext;
173    uint32_t           memoryBindIndex;
174    VkDeviceMemory     memory;
175    VkDeviceSize       memoryOffset;
176    VkDeviceSize       memorySize;
177} VkVideoBindMemoryKHR;
178
179typedef struct VkVideoSessionCreateInfoKHR {
180    VkStructureType                 sType;
181    const void*                     pNext;
182    uint32_t                        queueFamilyIndex;
183    VkVideoSessionCreateFlagsKHR    flags;
184    const VkVideoProfileKHR*        pVideoProfile;
185    VkFormat                        pictureFormat;
186    VkExtent2D                      maxCodedExtent;
187    VkFormat                        referencePicturesFormat;
188    uint32_t                        maxReferencePicturesSlotsCount;
189    uint32_t                        maxReferencePicturesActiveCount;
190} VkVideoSessionCreateInfoKHR;
191
192typedef struct VkVideoSessionParametersCreateInfoKHR {
193    VkStructureType                sType;
194    const void*                    pNext;
195    VkVideoSessionParametersKHR    videoSessionParametersTemplate;
196    VkVideoSessionKHR              videoSession;
197} VkVideoSessionParametersCreateInfoKHR;
198
199typedef struct VkVideoSessionParametersUpdateInfoKHR {
200    VkStructureType    sType;
201    const void*        pNext;
202    uint32_t           updateSequenceCount;
203} VkVideoSessionParametersUpdateInfoKHR;
204
205typedef struct VkVideoBeginCodingInfoKHR {
206    VkStructureType                       sType;
207    const void*                           pNext;
208    VkVideoBeginCodingFlagsKHR            flags;
209    VkVideoCodingQualityPresetFlagsKHR    codecQualityPreset;
210    VkVideoSessionKHR                     videoSession;
211    VkVideoSessionParametersKHR           videoSessionParameters;
212    uint32_t                              referenceSlotCount;
213    const VkVideoReferenceSlotKHR*        pReferenceSlots;
214} VkVideoBeginCodingInfoKHR;
215
216typedef struct VkVideoEndCodingInfoKHR {
217    VkStructureType             sType;
218    const void*                 pNext;
219    VkVideoEndCodingFlagsKHR    flags;
220} VkVideoEndCodingInfoKHR;
221
222typedef struct VkVideoCodingControlInfoKHR {
223    VkStructureType                 sType;
224    const void*                     pNext;
225    VkVideoCodingControlFlagsKHR    flags;
226} VkVideoCodingControlInfoKHR;
227
228typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities);
229typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties);
230typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession);
231typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator);
232typedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements);
233typedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories);
234typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters);
235typedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
236typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator);
237typedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo);
238typedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo);
239typedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo);
240
241#ifndef VK_NO_PROTOTYPES
242VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR(
243    VkPhysicalDevice                            physicalDevice,
244    const VkVideoProfileKHR*                    pVideoProfile,
245    VkVideoCapabilitiesKHR*                     pCapabilities);
246
247VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR(
248    VkPhysicalDevice                            physicalDevice,
249    const VkPhysicalDeviceVideoFormatInfoKHR*   pVideoFormatInfo,
250    uint32_t*                                   pVideoFormatPropertyCount,
251    VkVideoFormatPropertiesKHR*                 pVideoFormatProperties);
252
253VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR(
254    VkDevice                                    device,
255    const VkVideoSessionCreateInfoKHR*          pCreateInfo,
256    const VkAllocationCallbacks*                pAllocator,
257    VkVideoSessionKHR*                          pVideoSession);
258
259VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR(
260    VkDevice                                    device,
261    VkVideoSessionKHR                           videoSession,
262    const VkAllocationCallbacks*                pAllocator);
263
264VKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR(
265    VkDevice                                    device,
266    VkVideoSessionKHR                           videoSession,
267    uint32_t*                                   pVideoSessionMemoryRequirementsCount,
268    VkVideoGetMemoryPropertiesKHR*              pVideoSessionMemoryRequirements);
269
270VKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR(
271    VkDevice                                    device,
272    VkVideoSessionKHR                           videoSession,
273    uint32_t                                    videoSessionBindMemoryCount,
274    const VkVideoBindMemoryKHR*                 pVideoSessionBindMemories);
275
276VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR(
277    VkDevice                                    device,
278    const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
279    const VkAllocationCallbacks*                pAllocator,
280    VkVideoSessionParametersKHR*                pVideoSessionParameters);
281
282VKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR(
283    VkDevice                                    device,
284    VkVideoSessionParametersKHR                 videoSessionParameters,
285    const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
286
287VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR(
288    VkDevice                                    device,
289    VkVideoSessionParametersKHR                 videoSessionParameters,
290    const VkAllocationCallbacks*                pAllocator);
291
292VKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR(
293    VkCommandBuffer                             commandBuffer,
294    const VkVideoBeginCodingInfoKHR*            pBeginInfo);
295
296VKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR(
297    VkCommandBuffer                             commandBuffer,
298    const VkVideoEndCodingInfoKHR*              pEndCodingInfo);
299
300VKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR(
301    VkCommandBuffer                             commandBuffer,
302    const VkVideoCodingControlInfoKHR*          pCodingControlInfo);
303#endif
304
305
306#define VK_KHR_video_decode_queue 1
307#define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 2
308#define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue"
309
310typedef enum VkVideoDecodeFlagBitsKHR {
311    VK_VIDEO_DECODE_DEFAULT_KHR = 0,
312    VK_VIDEO_DECODE_RESERVED_0_BIT_KHR = 0x00000001,
313    VK_VIDEO_DECODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
314} VkVideoDecodeFlagBitsKHR;
315typedef VkFlags VkVideoDecodeFlagsKHR;
316typedef struct VkVideoDecodeInfoKHR {
317    VkStructureType                   sType;
318    const void*                       pNext;
319    VkVideoDecodeFlagsKHR             flags;
320    VkOffset2D                        codedOffset;
321    VkExtent2D                        codedExtent;
322    VkBuffer                          srcBuffer;
323    VkDeviceSize                      srcBufferOffset;
324    VkDeviceSize                      srcBufferRange;
325    VkVideoPictureResourceKHR         dstPictureResource;
326    const VkVideoReferenceSlotKHR*    pSetupReferenceSlot;
327    uint32_t                          referenceSlotCount;
328    const VkVideoReferenceSlotKHR*    pReferenceSlots;
329} VkVideoDecodeInfoKHR;
330
331typedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo);
332
333#ifndef VK_NO_PROTOTYPES
334VKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR(
335    VkCommandBuffer                             commandBuffer,
336    const VkVideoDecodeInfoKHR*                 pFrameInfo);
337#endif
338
339
340#define VK_KHR_portability_subset 1
341#define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1
342#define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset"
343typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR {
344    VkStructureType    sType;
345    void*              pNext;
346    VkBool32           constantAlphaColorBlendFactors;
347    VkBool32           events;
348    VkBool32           imageViewFormatReinterpretation;
349    VkBool32           imageViewFormatSwizzle;
350    VkBool32           imageView2DOn3DImage;
351    VkBool32           multisampleArrayImage;
352    VkBool32           mutableComparisonSamplers;
353    VkBool32           pointPolygons;
354    VkBool32           samplerMipLodBias;
355    VkBool32           separateStencilMaskRef;
356    VkBool32           shaderSampleRateInterpolationFunctions;
357    VkBool32           tessellationIsolines;
358    VkBool32           tessellationPointMode;
359    VkBool32           triangleFans;
360    VkBool32           vertexAttributeAccessBeyondStride;
361} VkPhysicalDevicePortabilitySubsetFeaturesKHR;
362
363typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR {
364    VkStructureType    sType;
365    void*              pNext;
366    uint32_t           minVertexInputBindingStrideAlignment;
367} VkPhysicalDevicePortabilitySubsetPropertiesKHR;
368
369
370
371#define VK_KHR_video_encode_queue 1
372#define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 3
373#define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue"
374
375typedef enum VkVideoEncodeFlagBitsKHR {
376    VK_VIDEO_ENCODE_DEFAULT_KHR = 0,
377    VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR = 0x00000001,
378    VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
379} VkVideoEncodeFlagBitsKHR;
380typedef VkFlags VkVideoEncodeFlagsKHR;
381
382typedef enum VkVideoEncodeRateControlFlagBitsKHR {
383    VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR = 0,
384    VK_VIDEO_ENCODE_RATE_CONTROL_RESET_BIT_KHR = 0x00000001,
385    VK_VIDEO_ENCODE_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
386} VkVideoEncodeRateControlFlagBitsKHR;
387typedef VkFlags VkVideoEncodeRateControlFlagsKHR;
388
389typedef enum VkVideoEncodeRateControlModeFlagBitsKHR {
390    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR = 0,
391    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 1,
392    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 2,
393    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
394} VkVideoEncodeRateControlModeFlagBitsKHR;
395typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR;
396typedef struct VkVideoEncodeInfoKHR {
397    VkStructureType                   sType;
398    const void*                       pNext;
399    VkVideoEncodeFlagsKHR             flags;
400    uint32_t                          qualityLevel;
401    VkExtent2D                        codedExtent;
402    VkBuffer                          dstBitstreamBuffer;
403    VkDeviceSize                      dstBitstreamBufferOffset;
404    VkDeviceSize                      dstBitstreamBufferMaxRange;
405    VkVideoPictureResourceKHR         srcPictureResource;
406    const VkVideoReferenceSlotKHR*    pSetupReferenceSlot;
407    uint32_t                          referenceSlotCount;
408    const VkVideoReferenceSlotKHR*    pReferenceSlots;
409} VkVideoEncodeInfoKHR;
410
411typedef struct VkVideoEncodeRateControlInfoKHR {
412    VkStructureType                            sType;
413    const void*                                pNext;
414    VkVideoEncodeRateControlFlagsKHR           flags;
415    VkVideoEncodeRateControlModeFlagBitsKHR    rateControlMode;
416    uint32_t                                   averageBitrate;
417    uint16_t                                   peakToAverageBitrateRatio;
418    uint16_t                                   frameRateNumerator;
419    uint16_t                                   frameRateDenominator;
420    uint32_t                                   virtualBufferSizeInMs;
421} VkVideoEncodeRateControlInfoKHR;
422
423typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo);
424
425#ifndef VK_NO_PROTOTYPES
426VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR(
427    VkCommandBuffer                             commandBuffer,
428    const VkVideoEncodeInfoKHR*                 pEncodeInfo);
429#endif
430
431
432#define VK_EXT_video_encode_h264 1
433#include "vk_video/vulkan_video_codec_h264std.h"
434#include "vk_video/vulkan_video_codec_h264std_encode.h"
435#define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 2
436#define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264"
437
438typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT {
439    VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00000001,
440    VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00000002,
441    VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT = 0x00000004,
442    VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00000008,
443    VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000010,
444    VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000020,
445    VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00000040,
446    VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00000080,
447    VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00000100,
448    VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00000200,
449    VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT = 0x00000400,
450    VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
451} VkVideoEncodeH264CapabilityFlagBitsEXT;
452typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT;
453
454typedef enum VkVideoEncodeH264InputModeFlagBitsEXT {
455    VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 0x00000001,
456    VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 0x00000002,
457    VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
458    VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
459} VkVideoEncodeH264InputModeFlagBitsEXT;
460typedef VkFlags VkVideoEncodeH264InputModeFlagsEXT;
461
462typedef enum VkVideoEncodeH264OutputModeFlagBitsEXT {
463    VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001,
464    VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002,
465    VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
466    VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
467} VkVideoEncodeH264OutputModeFlagBitsEXT;
468typedef VkFlags VkVideoEncodeH264OutputModeFlagsEXT;
469
470typedef enum VkVideoEncodeH264CreateFlagBitsEXT {
471    VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT = 0,
472    VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT = 0x00000001,
473    VK_VIDEO_ENCODE_H264_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
474} VkVideoEncodeH264CreateFlagBitsEXT;
475typedef VkFlags VkVideoEncodeH264CreateFlagsEXT;
476typedef struct VkVideoEncodeH264CapabilitiesEXT {
477    VkStructureType                        sType;
478    const void*                            pNext;
479    VkVideoEncodeH264CapabilityFlagsEXT    flags;
480    VkVideoEncodeH264InputModeFlagsEXT     inputModeFlags;
481    VkVideoEncodeH264OutputModeFlagsEXT    outputModeFlags;
482    VkExtent2D                             minPictureSizeInMbs;
483    VkExtent2D                             maxPictureSizeInMbs;
484    VkExtent2D                             inputImageDataAlignment;
485    uint8_t                                maxNumL0ReferenceForP;
486    uint8_t                                maxNumL0ReferenceForB;
487    uint8_t                                maxNumL1Reference;
488    uint8_t                                qualityLevelCount;
489    VkExtensionProperties                  stdExtensionVersion;
490} VkVideoEncodeH264CapabilitiesEXT;
491
492typedef struct VkVideoEncodeH264SessionCreateInfoEXT {
493    VkStructureType                    sType;
494    const void*                        pNext;
495    VkVideoEncodeH264CreateFlagsEXT    flags;
496    VkExtent2D                         maxPictureSizeInMbs;
497    const VkExtensionProperties*       pStdExtensionVersion;
498} VkVideoEncodeH264SessionCreateInfoEXT;
499
500typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT {
501    VkStructureType                            sType;
502    const void*                                pNext;
503    uint32_t                                   spsStdCount;
504    const StdVideoH264SequenceParameterSet*    pSpsStd;
505    uint32_t                                   ppsStdCount;
506    const StdVideoH264PictureParameterSet*     pPpsStd;
507} VkVideoEncodeH264SessionParametersAddInfoEXT;
508
509typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT {
510    VkStructureType                                        sType;
511    const void*                                            pNext;
512    uint32_t                                               maxSpsStdCount;
513    uint32_t                                               maxPpsStdCount;
514    const VkVideoEncodeH264SessionParametersAddInfoEXT*    pParametersAddInfo;
515} VkVideoEncodeH264SessionParametersCreateInfoEXT;
516
517typedef struct VkVideoEncodeH264DpbSlotInfoEXT {
518    VkStructureType                         sType;
519    const void*                             pNext;
520    int8_t                                  slotIndex;
521    const StdVideoEncodeH264PictureInfo*    pStdPictureInfo;
522} VkVideoEncodeH264DpbSlotInfoEXT;
523
524typedef struct VkVideoEncodeH264NaluSliceEXT {
525    VkStructureType                           sType;
526    const void*                               pNext;
527    const StdVideoEncodeH264SliceHeader*      pSliceHeaderStd;
528    uint32_t                                  mbCount;
529    uint8_t                                   refFinalList0EntryCount;
530    const VkVideoEncodeH264DpbSlotInfoEXT*    pRefFinalList0Entries;
531    uint8_t                                   refFinalList1EntryCount;
532    const VkVideoEncodeH264DpbSlotInfoEXT*    pRefFinalList1Entries;
533    uint32_t                                  precedingNaluBytes;
534    uint8_t                                   minQp;
535    uint8_t                                   maxQp;
536} VkVideoEncodeH264NaluSliceEXT;
537
538typedef struct VkVideoEncodeH264VclFrameInfoEXT {
539    VkStructureType                           sType;
540    const void*                               pNext;
541    uint8_t                                   refDefaultFinalList0EntryCount;
542    const VkVideoEncodeH264DpbSlotInfoEXT*    pRefDefaultFinalList0Entries;
543    uint8_t                                   refDefaultFinalList1EntryCount;
544    const VkVideoEncodeH264DpbSlotInfoEXT*    pRefDefaultFinalList1Entries;
545    uint32_t                                  naluSliceEntryCount;
546    const VkVideoEncodeH264NaluSliceEXT*      pNaluSliceEntries;
547    const VkVideoEncodeH264DpbSlotInfoEXT*    pCurrentPictureInfo;
548} VkVideoEncodeH264VclFrameInfoEXT;
549
550typedef struct VkVideoEncodeH264EmitPictureParametersEXT {
551    VkStructureType    sType;
552    const void*        pNext;
553    uint8_t            spsId;
554    VkBool32           emitSpsEnable;
555    uint32_t           ppsIdEntryCount;
556    const uint8_t*     ppsIdEntries;
557} VkVideoEncodeH264EmitPictureParametersEXT;
558
559typedef struct VkVideoEncodeH264ProfileEXT {
560    VkStructureType           sType;
561    const void*               pNext;
562    StdVideoH264ProfileIdc    stdProfileIdc;
563} VkVideoEncodeH264ProfileEXT;
564
565
566
567#define VK_EXT_video_decode_h264 1
568#include "vk_video/vulkan_video_codec_h264std_decode.h"
569#define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 3
570#define VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME "VK_EXT_video_decode_h264"
571
572typedef enum VkVideoDecodeH264PictureLayoutFlagBitsEXT {
573    VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT = 0,
574    VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT = 0x00000001,
575    VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT = 0x00000002,
576    VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
577} VkVideoDecodeH264PictureLayoutFlagBitsEXT;
578typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsEXT;
579typedef VkFlags VkVideoDecodeH264CreateFlagsEXT;
580typedef struct VkVideoDecodeH264ProfileEXT {
581    VkStructureType                           sType;
582    const void*                               pNext;
583    StdVideoH264ProfileIdc                    stdProfileIdc;
584    VkVideoDecodeH264PictureLayoutFlagsEXT    pictureLayout;
585} VkVideoDecodeH264ProfileEXT;
586
587typedef struct VkVideoDecodeH264CapabilitiesEXT {
588    VkStructureType          sType;
589    void*                    pNext;
590    uint32_t                 maxLevel;
591    VkOffset2D               fieldOffsetGranularity;
592    VkExtensionProperties    stdExtensionVersion;
593} VkVideoDecodeH264CapabilitiesEXT;
594
595typedef struct VkVideoDecodeH264SessionCreateInfoEXT {
596    VkStructureType                    sType;
597    const void*                        pNext;
598    VkVideoDecodeH264CreateFlagsEXT    flags;
599    const VkExtensionProperties*       pStdExtensionVersion;
600} VkVideoDecodeH264SessionCreateInfoEXT;
601
602typedef struct VkVideoDecodeH264SessionParametersAddInfoEXT {
603    VkStructureType                            sType;
604    const void*                                pNext;
605    uint32_t                                   spsStdCount;
606    const StdVideoH264SequenceParameterSet*    pSpsStd;
607    uint32_t                                   ppsStdCount;
608    const StdVideoH264PictureParameterSet*     pPpsStd;
609} VkVideoDecodeH264SessionParametersAddInfoEXT;
610
611typedef struct VkVideoDecodeH264SessionParametersCreateInfoEXT {
612    VkStructureType                                        sType;
613    const void*                                            pNext;
614    uint32_t                                               maxSpsStdCount;
615    uint32_t                                               maxPpsStdCount;
616    const VkVideoDecodeH264SessionParametersAddInfoEXT*    pParametersAddInfo;
617} VkVideoDecodeH264SessionParametersCreateInfoEXT;
618
619typedef struct VkVideoDecodeH264PictureInfoEXT {
620    VkStructureType                         sType;
621    const void*                             pNext;
622    const StdVideoDecodeH264PictureInfo*    pStdPictureInfo;
623    uint32_t                                slicesCount;
624    const uint32_t*                         pSlicesDataOffsets;
625} VkVideoDecodeH264PictureInfoEXT;
626
627typedef struct VkVideoDecodeH264MvcEXT {
628    VkStructureType                 sType;
629    const void*                     pNext;
630    const StdVideoDecodeH264Mvc*    pStdMvc;
631} VkVideoDecodeH264MvcEXT;
632
633typedef struct VkVideoDecodeH264DpbSlotInfoEXT {
634    VkStructureType                           sType;
635    const void*                               pNext;
636    const StdVideoDecodeH264ReferenceInfo*    pStdReferenceInfo;
637} VkVideoDecodeH264DpbSlotInfoEXT;
638
639
640
641#define VK_EXT_video_decode_h265 1
642#include "vk_video/vulkan_video_codec_h265std.h"
643#include "vk_video/vulkan_video_codec_h265std_decode.h"
644#define VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION 1
645#define VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME "VK_EXT_video_decode_h265"
646typedef VkFlags VkVideoDecodeH265CreateFlagsEXT;
647typedef struct VkVideoDecodeH265ProfileEXT {
648    VkStructureType           sType;
649    const void*               pNext;
650    StdVideoH265ProfileIdc    stdProfileIdc;
651} VkVideoDecodeH265ProfileEXT;
652
653typedef struct VkVideoDecodeH265CapabilitiesEXT {
654    VkStructureType          sType;
655    void*                    pNext;
656    uint32_t                 maxLevel;
657    VkExtensionProperties    stdExtensionVersion;
658} VkVideoDecodeH265CapabilitiesEXT;
659
660typedef struct VkVideoDecodeH265SessionCreateInfoEXT {
661    VkStructureType                    sType;
662    const void*                        pNext;
663    VkVideoDecodeH265CreateFlagsEXT    flags;
664    const VkExtensionProperties*       pStdExtensionVersion;
665} VkVideoDecodeH265SessionCreateInfoEXT;
666
667typedef struct VkVideoDecodeH265SessionParametersAddInfoEXT {
668    VkStructureType                            sType;
669    const void*                                pNext;
670    uint32_t                                   spsStdCount;
671    const StdVideoH265SequenceParameterSet*    pSpsStd;
672    uint32_t                                   ppsStdCount;
673    const StdVideoH265PictureParameterSet*     pPpsStd;
674} VkVideoDecodeH265SessionParametersAddInfoEXT;
675
676typedef struct VkVideoDecodeH265SessionParametersCreateInfoEXT {
677    VkStructureType                                        sType;
678    const void*                                            pNext;
679    uint32_t                                               maxSpsStdCount;
680    uint32_t                                               maxPpsStdCount;
681    const VkVideoDecodeH265SessionParametersAddInfoEXT*    pParametersAddInfo;
682} VkVideoDecodeH265SessionParametersCreateInfoEXT;
683
684typedef struct VkVideoDecodeH265PictureInfoEXT {
685    VkStructureType                   sType;
686    const void*                       pNext;
687    StdVideoDecodeH265PictureInfo*    pStdPictureInfo;
688    uint32_t                          slicesCount;
689    const uint32_t*                   pSlicesDataOffsets;
690} VkVideoDecodeH265PictureInfoEXT;
691
692typedef struct VkVideoDecodeH265DpbSlotInfoEXT {
693    VkStructureType                           sType;
694    const void*                               pNext;
695    const StdVideoDecodeH265ReferenceInfo*    pStdReferenceInfo;
696} VkVideoDecodeH265DpbSlotInfoEXT;
697
698
699#ifdef __cplusplus
700}
701#endif
702
703#endif
704