vulkan_beta.h revision 7ec681f3
17ec681f3Smrg#ifndef VULKAN_BETA_H_
27ec681f3Smrg#define VULKAN_BETA_H_ 1
37ec681f3Smrg
47ec681f3Smrg/*
57ec681f3Smrg** Copyright 2015-2021 The Khronos Group Inc.
67ec681f3Smrg**
77ec681f3Smrg** SPDX-License-Identifier: Apache-2.0
87ec681f3Smrg*/
97ec681f3Smrg
107ec681f3Smrg/*
117ec681f3Smrg** This header is generated from the Khronos Vulkan XML API Registry.
127ec681f3Smrg**
137ec681f3Smrg*/
147ec681f3Smrg
157ec681f3Smrg
167ec681f3Smrg#ifdef __cplusplus
177ec681f3Smrgextern "C" {
187ec681f3Smrg#endif
197ec681f3Smrg
207ec681f3Smrg
217ec681f3Smrg
227ec681f3Smrg#define VK_KHR_video_queue 1
237ec681f3SmrgVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR)
247ec681f3SmrgVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR)
257ec681f3Smrg#define VK_KHR_VIDEO_QUEUE_SPEC_VERSION   2
267ec681f3Smrg#define VK_KHR_VIDEO_QUEUE_EXTENSION_NAME "VK_KHR_video_queue"
277ec681f3Smrg
287ec681f3Smrgtypedef enum VkQueryResultStatusKHR {
297ec681f3Smrg    VK_QUERY_RESULT_STATUS_ERROR_KHR = -1,
307ec681f3Smrg    VK_QUERY_RESULT_STATUS_NOT_READY_KHR = 0,
317ec681f3Smrg    VK_QUERY_RESULT_STATUS_COMPLETE_KHR = 1,
327ec681f3Smrg    VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 0x7FFFFFFF
337ec681f3Smrg} VkQueryResultStatusKHR;
347ec681f3Smrg
357ec681f3Smrgtypedef enum VkVideoCodecOperationFlagBitsKHR {
367ec681f3Smrg    VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR = 0,
377ec681f3Smrg#ifdef VK_ENABLE_BETA_EXTENSIONS
387ec681f3Smrg    VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT = 0x00010000,
397ec681f3Smrg#endif
407ec681f3Smrg#ifdef VK_ENABLE_BETA_EXTENSIONS
417ec681f3Smrg    VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT = 0x00000001,
427ec681f3Smrg#endif
437ec681f3Smrg#ifdef VK_ENABLE_BETA_EXTENSIONS
447ec681f3Smrg    VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT = 0x00000002,
457ec681f3Smrg#endif
467ec681f3Smrg    VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
477ec681f3Smrg} VkVideoCodecOperationFlagBitsKHR;
487ec681f3Smrgtypedef VkFlags VkVideoCodecOperationFlagsKHR;
497ec681f3Smrg
507ec681f3Smrgtypedef enum VkVideoChromaSubsamplingFlagBitsKHR {
517ec681f3Smrg    VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR = 0,
527ec681f3Smrg    VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0x00000001,
537ec681f3Smrg    VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0x00000002,
547ec681f3Smrg    VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0x00000004,
557ec681f3Smrg    VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x00000008,
567ec681f3Smrg    VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
577ec681f3Smrg} VkVideoChromaSubsamplingFlagBitsKHR;
587ec681f3Smrgtypedef VkFlags VkVideoChromaSubsamplingFlagsKHR;
597ec681f3Smrg
607ec681f3Smrgtypedef enum VkVideoComponentBitDepthFlagBitsKHR {
617ec681f3Smrg    VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0,
627ec681f3Smrg    VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0x00000001,
637ec681f3Smrg    VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0x00000004,
647ec681f3Smrg    VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x00000010,
657ec681f3Smrg    VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
667ec681f3Smrg} VkVideoComponentBitDepthFlagBitsKHR;
677ec681f3Smrgtypedef VkFlags VkVideoComponentBitDepthFlagsKHR;
687ec681f3Smrg
697ec681f3Smrgtypedef enum VkVideoCapabilityFlagBitsKHR {
707ec681f3Smrg    VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
717ec681f3Smrg    VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002,
727ec681f3Smrg    VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
737ec681f3Smrg} VkVideoCapabilityFlagBitsKHR;
747ec681f3Smrgtypedef VkFlags VkVideoCapabilityFlagsKHR;
757ec681f3Smrg
767ec681f3Smrgtypedef enum VkVideoSessionCreateFlagBitsKHR {
777ec681f3Smrg    VK_VIDEO_SESSION_CREATE_DEFAULT_KHR = 0,
787ec681f3Smrg    VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
797ec681f3Smrg    VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
807ec681f3Smrg} VkVideoSessionCreateFlagBitsKHR;
817ec681f3Smrgtypedef VkFlags VkVideoSessionCreateFlagsKHR;
827ec681f3Smrgtypedef VkFlags VkVideoBeginCodingFlagsKHR;
837ec681f3Smrgtypedef VkFlags VkVideoEndCodingFlagsKHR;
847ec681f3Smrg
857ec681f3Smrgtypedef enum VkVideoCodingControlFlagBitsKHR {
867ec681f3Smrg    VK_VIDEO_CODING_CONTROL_DEFAULT_KHR = 0,
877ec681f3Smrg    VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0x00000001,
887ec681f3Smrg    VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
897ec681f3Smrg} VkVideoCodingControlFlagBitsKHR;
907ec681f3Smrgtypedef VkFlags VkVideoCodingControlFlagsKHR;
917ec681f3Smrg
927ec681f3Smrgtypedef enum VkVideoCodingQualityPresetFlagBitsKHR {
937ec681f3Smrg    VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR = 0x00000001,
947ec681f3Smrg    VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR = 0x00000002,
957ec681f3Smrg    VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR = 0x00000004,
967ec681f3Smrg    VK_VIDEO_CODING_QUALITY_PRESET_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
977ec681f3Smrg} VkVideoCodingQualityPresetFlagBitsKHR;
987ec681f3Smrgtypedef VkFlags VkVideoCodingQualityPresetFlagsKHR;
997ec681f3Smrgtypedef struct VkVideoQueueFamilyProperties2KHR {
1007ec681f3Smrg    VkStructureType                  sType;
1017ec681f3Smrg    void*                            pNext;
1027ec681f3Smrg    VkVideoCodecOperationFlagsKHR    videoCodecOperations;
1037ec681f3Smrg} VkVideoQueueFamilyProperties2KHR;
1047ec681f3Smrg
1057ec681f3Smrgtypedef struct VkVideoProfileKHR {
1067ec681f3Smrg    VkStructureType                     sType;
1077ec681f3Smrg    void*                               pNext;
1087ec681f3Smrg    VkVideoCodecOperationFlagBitsKHR    videoCodecOperation;
1097ec681f3Smrg    VkVideoChromaSubsamplingFlagsKHR    chromaSubsampling;
1107ec681f3Smrg    VkVideoComponentBitDepthFlagsKHR    lumaBitDepth;
1117ec681f3Smrg    VkVideoComponentBitDepthFlagsKHR    chromaBitDepth;
1127ec681f3Smrg} VkVideoProfileKHR;
1137ec681f3Smrg
1147ec681f3Smrgtypedef struct VkVideoProfilesKHR {
1157ec681f3Smrg    VkStructureType             sType;
1167ec681f3Smrg    void*                       pNext;
1177ec681f3Smrg    uint32_t                    profileCount;
1187ec681f3Smrg    const VkVideoProfileKHR*    pProfiles;
1197ec681f3Smrg} VkVideoProfilesKHR;
1207ec681f3Smrg
1217ec681f3Smrgtypedef struct VkVideoCapabilitiesKHR {
1227ec681f3Smrg    VkStructureType              sType;
1237ec681f3Smrg    void*                        pNext;
1247ec681f3Smrg    VkVideoCapabilityFlagsKHR    capabilityFlags;
1257ec681f3Smrg    VkDeviceSize                 minBitstreamBufferOffsetAlignment;
1267ec681f3Smrg    VkDeviceSize                 minBitstreamBufferSizeAlignment;
1277ec681f3Smrg    VkExtent2D                   videoPictureExtentGranularity;
1287ec681f3Smrg    VkExtent2D                   minExtent;
1297ec681f3Smrg    VkExtent2D                   maxExtent;
1307ec681f3Smrg    uint32_t                     maxReferencePicturesSlotsCount;
1317ec681f3Smrg    uint32_t                     maxReferencePicturesActiveCount;
1327ec681f3Smrg} VkVideoCapabilitiesKHR;
1337ec681f3Smrg
1347ec681f3Smrgtypedef struct VkPhysicalDeviceVideoFormatInfoKHR {
1357ec681f3Smrg    VkStructureType              sType;
1367ec681f3Smrg    void*                        pNext;
1377ec681f3Smrg    VkImageUsageFlags            imageUsage;
1387ec681f3Smrg    const VkVideoProfilesKHR*    pVideoProfiles;
1397ec681f3Smrg} VkPhysicalDeviceVideoFormatInfoKHR;
1407ec681f3Smrg
1417ec681f3Smrgtypedef struct VkVideoFormatPropertiesKHR {
1427ec681f3Smrg    VkStructureType    sType;
1437ec681f3Smrg    void*              pNext;
1447ec681f3Smrg    VkFormat           format;
1457ec681f3Smrg} VkVideoFormatPropertiesKHR;
1467ec681f3Smrg
1477ec681f3Smrgtypedef struct VkVideoPictureResourceKHR {
1487ec681f3Smrg    VkStructureType    sType;
1497ec681f3Smrg    const void*        pNext;
1507ec681f3Smrg    VkOffset2D         codedOffset;
1517ec681f3Smrg    VkExtent2D         codedExtent;
1527ec681f3Smrg    uint32_t           baseArrayLayer;
1537ec681f3Smrg    VkImageView        imageViewBinding;
1547ec681f3Smrg} VkVideoPictureResourceKHR;
1557ec681f3Smrg
1567ec681f3Smrgtypedef struct VkVideoReferenceSlotKHR {
1577ec681f3Smrg    VkStructureType                     sType;
1587ec681f3Smrg    const void*                         pNext;
1597ec681f3Smrg    int8_t                              slotIndex;
1607ec681f3Smrg    const VkVideoPictureResourceKHR*    pPictureResource;
1617ec681f3Smrg} VkVideoReferenceSlotKHR;
1627ec681f3Smrg
1637ec681f3Smrgtypedef struct VkVideoGetMemoryPropertiesKHR {
1647ec681f3Smrg    VkStructureType           sType;
1657ec681f3Smrg    const void*               pNext;
1667ec681f3Smrg    uint32_t                  memoryBindIndex;
1677ec681f3Smrg    VkMemoryRequirements2*    pMemoryRequirements;
1687ec681f3Smrg} VkVideoGetMemoryPropertiesKHR;
1697ec681f3Smrg
1707ec681f3Smrgtypedef struct VkVideoBindMemoryKHR {
1717ec681f3Smrg    VkStructureType    sType;
1727ec681f3Smrg    const void*        pNext;
1737ec681f3Smrg    uint32_t           memoryBindIndex;
1747ec681f3Smrg    VkDeviceMemory     memory;
1757ec681f3Smrg    VkDeviceSize       memoryOffset;
1767ec681f3Smrg    VkDeviceSize       memorySize;
1777ec681f3Smrg} VkVideoBindMemoryKHR;
1787ec681f3Smrg
1797ec681f3Smrgtypedef struct VkVideoSessionCreateInfoKHR {
1807ec681f3Smrg    VkStructureType                 sType;
1817ec681f3Smrg    const void*                     pNext;
1827ec681f3Smrg    uint32_t                        queueFamilyIndex;
1837ec681f3Smrg    VkVideoSessionCreateFlagsKHR    flags;
1847ec681f3Smrg    const VkVideoProfileKHR*        pVideoProfile;
1857ec681f3Smrg    VkFormat                        pictureFormat;
1867ec681f3Smrg    VkExtent2D                      maxCodedExtent;
1877ec681f3Smrg    VkFormat                        referencePicturesFormat;
1887ec681f3Smrg    uint32_t                        maxReferencePicturesSlotsCount;
1897ec681f3Smrg    uint32_t                        maxReferencePicturesActiveCount;
1907ec681f3Smrg} VkVideoSessionCreateInfoKHR;
1917ec681f3Smrg
1927ec681f3Smrgtypedef struct VkVideoSessionParametersCreateInfoKHR {
1937ec681f3Smrg    VkStructureType                sType;
1947ec681f3Smrg    const void*                    pNext;
1957ec681f3Smrg    VkVideoSessionParametersKHR    videoSessionParametersTemplate;
1967ec681f3Smrg    VkVideoSessionKHR              videoSession;
1977ec681f3Smrg} VkVideoSessionParametersCreateInfoKHR;
1987ec681f3Smrg
1997ec681f3Smrgtypedef struct VkVideoSessionParametersUpdateInfoKHR {
2007ec681f3Smrg    VkStructureType    sType;
2017ec681f3Smrg    const void*        pNext;
2027ec681f3Smrg    uint32_t           updateSequenceCount;
2037ec681f3Smrg} VkVideoSessionParametersUpdateInfoKHR;
2047ec681f3Smrg
2057ec681f3Smrgtypedef struct VkVideoBeginCodingInfoKHR {
2067ec681f3Smrg    VkStructureType                       sType;
2077ec681f3Smrg    const void*                           pNext;
2087ec681f3Smrg    VkVideoBeginCodingFlagsKHR            flags;
2097ec681f3Smrg    VkVideoCodingQualityPresetFlagsKHR    codecQualityPreset;
2107ec681f3Smrg    VkVideoSessionKHR                     videoSession;
2117ec681f3Smrg    VkVideoSessionParametersKHR           videoSessionParameters;
2127ec681f3Smrg    uint32_t                              referenceSlotCount;
2137ec681f3Smrg    const VkVideoReferenceSlotKHR*        pReferenceSlots;
2147ec681f3Smrg} VkVideoBeginCodingInfoKHR;
2157ec681f3Smrg
2167ec681f3Smrgtypedef struct VkVideoEndCodingInfoKHR {
2177ec681f3Smrg    VkStructureType             sType;
2187ec681f3Smrg    const void*                 pNext;
2197ec681f3Smrg    VkVideoEndCodingFlagsKHR    flags;
2207ec681f3Smrg} VkVideoEndCodingInfoKHR;
2217ec681f3Smrg
2227ec681f3Smrgtypedef struct VkVideoCodingControlInfoKHR {
2237ec681f3Smrg    VkStructureType                 sType;
2247ec681f3Smrg    const void*                     pNext;
2257ec681f3Smrg    VkVideoCodingControlFlagsKHR    flags;
2267ec681f3Smrg} VkVideoCodingControlInfoKHR;
2277ec681f3Smrg
2287ec681f3Smrgtypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities);
2297ec681f3Smrgtypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties);
2307ec681f3Smrgtypedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession);
2317ec681f3Smrgtypedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator);
2327ec681f3Smrgtypedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements);
2337ec681f3Smrgtypedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories);
2347ec681f3Smrgtypedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters);
2357ec681f3Smrgtypedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
2367ec681f3Smrgtypedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator);
2377ec681f3Smrgtypedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo);
2387ec681f3Smrgtypedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo);
2397ec681f3Smrgtypedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo);
2407ec681f3Smrg
2417ec681f3Smrg#ifndef VK_NO_PROTOTYPES
2427ec681f3SmrgVKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR(
2437ec681f3Smrg    VkPhysicalDevice                            physicalDevice,
2447ec681f3Smrg    const VkVideoProfileKHR*                    pVideoProfile,
2457ec681f3Smrg    VkVideoCapabilitiesKHR*                     pCapabilities);
2467ec681f3Smrg
2477ec681f3SmrgVKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR(
2487ec681f3Smrg    VkPhysicalDevice                            physicalDevice,
2497ec681f3Smrg    const VkPhysicalDeviceVideoFormatInfoKHR*   pVideoFormatInfo,
2507ec681f3Smrg    uint32_t*                                   pVideoFormatPropertyCount,
2517ec681f3Smrg    VkVideoFormatPropertiesKHR*                 pVideoFormatProperties);
2527ec681f3Smrg
2537ec681f3SmrgVKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR(
2547ec681f3Smrg    VkDevice                                    device,
2557ec681f3Smrg    const VkVideoSessionCreateInfoKHR*          pCreateInfo,
2567ec681f3Smrg    const VkAllocationCallbacks*                pAllocator,
2577ec681f3Smrg    VkVideoSessionKHR*                          pVideoSession);
2587ec681f3Smrg
2597ec681f3SmrgVKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR(
2607ec681f3Smrg    VkDevice                                    device,
2617ec681f3Smrg    VkVideoSessionKHR                           videoSession,
2627ec681f3Smrg    const VkAllocationCallbacks*                pAllocator);
2637ec681f3Smrg
2647ec681f3SmrgVKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR(
2657ec681f3Smrg    VkDevice                                    device,
2667ec681f3Smrg    VkVideoSessionKHR                           videoSession,
2677ec681f3Smrg    uint32_t*                                   pVideoSessionMemoryRequirementsCount,
2687ec681f3Smrg    VkVideoGetMemoryPropertiesKHR*              pVideoSessionMemoryRequirements);
2697ec681f3Smrg
2707ec681f3SmrgVKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR(
2717ec681f3Smrg    VkDevice                                    device,
2727ec681f3Smrg    VkVideoSessionKHR                           videoSession,
2737ec681f3Smrg    uint32_t                                    videoSessionBindMemoryCount,
2747ec681f3Smrg    const VkVideoBindMemoryKHR*                 pVideoSessionBindMemories);
2757ec681f3Smrg
2767ec681f3SmrgVKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR(
2777ec681f3Smrg    VkDevice                                    device,
2787ec681f3Smrg    const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
2797ec681f3Smrg    const VkAllocationCallbacks*                pAllocator,
2807ec681f3Smrg    VkVideoSessionParametersKHR*                pVideoSessionParameters);
2817ec681f3Smrg
2827ec681f3SmrgVKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR(
2837ec681f3Smrg    VkDevice                                    device,
2847ec681f3Smrg    VkVideoSessionParametersKHR                 videoSessionParameters,
2857ec681f3Smrg    const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
2867ec681f3Smrg
2877ec681f3SmrgVKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR(
2887ec681f3Smrg    VkDevice                                    device,
2897ec681f3Smrg    VkVideoSessionParametersKHR                 videoSessionParameters,
2907ec681f3Smrg    const VkAllocationCallbacks*                pAllocator);
2917ec681f3Smrg
2927ec681f3SmrgVKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR(
2937ec681f3Smrg    VkCommandBuffer                             commandBuffer,
2947ec681f3Smrg    const VkVideoBeginCodingInfoKHR*            pBeginInfo);
2957ec681f3Smrg
2967ec681f3SmrgVKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR(
2977ec681f3Smrg    VkCommandBuffer                             commandBuffer,
2987ec681f3Smrg    const VkVideoEndCodingInfoKHR*              pEndCodingInfo);
2997ec681f3Smrg
3007ec681f3SmrgVKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR(
3017ec681f3Smrg    VkCommandBuffer                             commandBuffer,
3027ec681f3Smrg    const VkVideoCodingControlInfoKHR*          pCodingControlInfo);
3037ec681f3Smrg#endif
3047ec681f3Smrg
3057ec681f3Smrg
3067ec681f3Smrg#define VK_KHR_video_decode_queue 1
3077ec681f3Smrg#define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 2
3087ec681f3Smrg#define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue"
3097ec681f3Smrg
3107ec681f3Smrgtypedef enum VkVideoDecodeFlagBitsKHR {
3117ec681f3Smrg    VK_VIDEO_DECODE_DEFAULT_KHR = 0,
3127ec681f3Smrg    VK_VIDEO_DECODE_RESERVED_0_BIT_KHR = 0x00000001,
3137ec681f3Smrg    VK_VIDEO_DECODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
3147ec681f3Smrg} VkVideoDecodeFlagBitsKHR;
3157ec681f3Smrgtypedef VkFlags VkVideoDecodeFlagsKHR;
3167ec681f3Smrgtypedef struct VkVideoDecodeInfoKHR {
3177ec681f3Smrg    VkStructureType                   sType;
3187ec681f3Smrg    const void*                       pNext;
3197ec681f3Smrg    VkVideoDecodeFlagsKHR             flags;
3207ec681f3Smrg    VkOffset2D                        codedOffset;
3217ec681f3Smrg    VkExtent2D                        codedExtent;
3227ec681f3Smrg    VkBuffer                          srcBuffer;
3237ec681f3Smrg    VkDeviceSize                      srcBufferOffset;
3247ec681f3Smrg    VkDeviceSize                      srcBufferRange;
3257ec681f3Smrg    VkVideoPictureResourceKHR         dstPictureResource;
3267ec681f3Smrg    const VkVideoReferenceSlotKHR*    pSetupReferenceSlot;
3277ec681f3Smrg    uint32_t                          referenceSlotCount;
3287ec681f3Smrg    const VkVideoReferenceSlotKHR*    pReferenceSlots;
3297ec681f3Smrg} VkVideoDecodeInfoKHR;
3307ec681f3Smrg
3317ec681f3Smrgtypedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo);
3327ec681f3Smrg
3337ec681f3Smrg#ifndef VK_NO_PROTOTYPES
3347ec681f3SmrgVKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR(
3357ec681f3Smrg    VkCommandBuffer                             commandBuffer,
3367ec681f3Smrg    const VkVideoDecodeInfoKHR*                 pFrameInfo);
3377ec681f3Smrg#endif
3387ec681f3Smrg
3397ec681f3Smrg
3407ec681f3Smrg#define VK_KHR_portability_subset 1
3417ec681f3Smrg#define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1
3427ec681f3Smrg#define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset"
3437ec681f3Smrgtypedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR {
3447ec681f3Smrg    VkStructureType    sType;
3457ec681f3Smrg    void*              pNext;
3467ec681f3Smrg    VkBool32           constantAlphaColorBlendFactors;
3477ec681f3Smrg    VkBool32           events;
3487ec681f3Smrg    VkBool32           imageViewFormatReinterpretation;
3497ec681f3Smrg    VkBool32           imageViewFormatSwizzle;
3507ec681f3Smrg    VkBool32           imageView2DOn3DImage;
3517ec681f3Smrg    VkBool32           multisampleArrayImage;
3527ec681f3Smrg    VkBool32           mutableComparisonSamplers;
3537ec681f3Smrg    VkBool32           pointPolygons;
3547ec681f3Smrg    VkBool32           samplerMipLodBias;
3557ec681f3Smrg    VkBool32           separateStencilMaskRef;
3567ec681f3Smrg    VkBool32           shaderSampleRateInterpolationFunctions;
3577ec681f3Smrg    VkBool32           tessellationIsolines;
3587ec681f3Smrg    VkBool32           tessellationPointMode;
3597ec681f3Smrg    VkBool32           triangleFans;
3607ec681f3Smrg    VkBool32           vertexAttributeAccessBeyondStride;
3617ec681f3Smrg} VkPhysicalDevicePortabilitySubsetFeaturesKHR;
3627ec681f3Smrg
3637ec681f3Smrgtypedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR {
3647ec681f3Smrg    VkStructureType    sType;
3657ec681f3Smrg    void*              pNext;
3667ec681f3Smrg    uint32_t           minVertexInputBindingStrideAlignment;
3677ec681f3Smrg} VkPhysicalDevicePortabilitySubsetPropertiesKHR;
3687ec681f3Smrg
3697ec681f3Smrg
3707ec681f3Smrg
3717ec681f3Smrg#define VK_KHR_video_encode_queue 1
3727ec681f3Smrg#define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 3
3737ec681f3Smrg#define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue"
3747ec681f3Smrg
3757ec681f3Smrgtypedef enum VkVideoEncodeFlagBitsKHR {
3767ec681f3Smrg    VK_VIDEO_ENCODE_DEFAULT_KHR = 0,
3777ec681f3Smrg    VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR = 0x00000001,
3787ec681f3Smrg    VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
3797ec681f3Smrg} VkVideoEncodeFlagBitsKHR;
3807ec681f3Smrgtypedef VkFlags VkVideoEncodeFlagsKHR;
3817ec681f3Smrg
3827ec681f3Smrgtypedef enum VkVideoEncodeRateControlFlagBitsKHR {
3837ec681f3Smrg    VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR = 0,
3847ec681f3Smrg    VK_VIDEO_ENCODE_RATE_CONTROL_RESET_BIT_KHR = 0x00000001,
3857ec681f3Smrg    VK_VIDEO_ENCODE_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
3867ec681f3Smrg} VkVideoEncodeRateControlFlagBitsKHR;
3877ec681f3Smrgtypedef VkFlags VkVideoEncodeRateControlFlagsKHR;
3887ec681f3Smrg
3897ec681f3Smrgtypedef enum VkVideoEncodeRateControlModeFlagBitsKHR {
3907ec681f3Smrg    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR = 0,
3917ec681f3Smrg    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 1,
3927ec681f3Smrg    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 2,
3937ec681f3Smrg    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
3947ec681f3Smrg} VkVideoEncodeRateControlModeFlagBitsKHR;
3957ec681f3Smrgtypedef VkFlags VkVideoEncodeRateControlModeFlagsKHR;
3967ec681f3Smrgtypedef struct VkVideoEncodeInfoKHR {
3977ec681f3Smrg    VkStructureType                   sType;
3987ec681f3Smrg    const void*                       pNext;
3997ec681f3Smrg    VkVideoEncodeFlagsKHR             flags;
4007ec681f3Smrg    uint32_t                          qualityLevel;
4017ec681f3Smrg    VkExtent2D                        codedExtent;
4027ec681f3Smrg    VkBuffer                          dstBitstreamBuffer;
4037ec681f3Smrg    VkDeviceSize                      dstBitstreamBufferOffset;
4047ec681f3Smrg    VkDeviceSize                      dstBitstreamBufferMaxRange;
4057ec681f3Smrg    VkVideoPictureResourceKHR         srcPictureResource;
4067ec681f3Smrg    const VkVideoReferenceSlotKHR*    pSetupReferenceSlot;
4077ec681f3Smrg    uint32_t                          referenceSlotCount;
4087ec681f3Smrg    const VkVideoReferenceSlotKHR*    pReferenceSlots;
4097ec681f3Smrg} VkVideoEncodeInfoKHR;
4107ec681f3Smrg
4117ec681f3Smrgtypedef struct VkVideoEncodeRateControlInfoKHR {
4127ec681f3Smrg    VkStructureType                            sType;
4137ec681f3Smrg    const void*                                pNext;
4147ec681f3Smrg    VkVideoEncodeRateControlFlagsKHR           flags;
4157ec681f3Smrg    VkVideoEncodeRateControlModeFlagBitsKHR    rateControlMode;
4167ec681f3Smrg    uint32_t                                   averageBitrate;
4177ec681f3Smrg    uint16_t                                   peakToAverageBitrateRatio;
4187ec681f3Smrg    uint16_t                                   frameRateNumerator;
4197ec681f3Smrg    uint16_t                                   frameRateDenominator;
4207ec681f3Smrg    uint32_t                                   virtualBufferSizeInMs;
4217ec681f3Smrg} VkVideoEncodeRateControlInfoKHR;
4227ec681f3Smrg
4237ec681f3Smrgtypedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo);
4247ec681f3Smrg
4257ec681f3Smrg#ifndef VK_NO_PROTOTYPES
4267ec681f3SmrgVKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR(
4277ec681f3Smrg    VkCommandBuffer                             commandBuffer,
4287ec681f3Smrg    const VkVideoEncodeInfoKHR*                 pEncodeInfo);
4297ec681f3Smrg#endif
4307ec681f3Smrg
4317ec681f3Smrg
4327ec681f3Smrg#define VK_EXT_video_encode_h264 1
4337ec681f3Smrg#include "vk_video/vulkan_video_codec_h264std.h"
4347ec681f3Smrg#include "vk_video/vulkan_video_codec_h264std_encode.h"
4357ec681f3Smrg#define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 2
4367ec681f3Smrg#define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264"
4377ec681f3Smrg
4387ec681f3Smrgtypedef enum VkVideoEncodeH264CapabilityFlagBitsEXT {
4397ec681f3Smrg    VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00000001,
4407ec681f3Smrg    VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00000002,
4417ec681f3Smrg    VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT = 0x00000004,
4427ec681f3Smrg    VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00000008,
4437ec681f3Smrg    VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000010,
4447ec681f3Smrg    VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000020,
4457ec681f3Smrg    VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00000040,
4467ec681f3Smrg    VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00000080,
4477ec681f3Smrg    VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00000100,
4487ec681f3Smrg    VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00000200,
4497ec681f3Smrg    VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT = 0x00000400,
4507ec681f3Smrg    VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
4517ec681f3Smrg} VkVideoEncodeH264CapabilityFlagBitsEXT;
4527ec681f3Smrgtypedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT;
4537ec681f3Smrg
4547ec681f3Smrgtypedef enum VkVideoEncodeH264InputModeFlagBitsEXT {
4557ec681f3Smrg    VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 0x00000001,
4567ec681f3Smrg    VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 0x00000002,
4577ec681f3Smrg    VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
4587ec681f3Smrg    VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
4597ec681f3Smrg} VkVideoEncodeH264InputModeFlagBitsEXT;
4607ec681f3Smrgtypedef VkFlags VkVideoEncodeH264InputModeFlagsEXT;
4617ec681f3Smrg
4627ec681f3Smrgtypedef enum VkVideoEncodeH264OutputModeFlagBitsEXT {
4637ec681f3Smrg    VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001,
4647ec681f3Smrg    VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002,
4657ec681f3Smrg    VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
4667ec681f3Smrg    VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
4677ec681f3Smrg} VkVideoEncodeH264OutputModeFlagBitsEXT;
4687ec681f3Smrgtypedef VkFlags VkVideoEncodeH264OutputModeFlagsEXT;
4697ec681f3Smrg
4707ec681f3Smrgtypedef enum VkVideoEncodeH264CreateFlagBitsEXT {
4717ec681f3Smrg    VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT = 0,
4727ec681f3Smrg    VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT = 0x00000001,
4737ec681f3Smrg    VK_VIDEO_ENCODE_H264_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
4747ec681f3Smrg} VkVideoEncodeH264CreateFlagBitsEXT;
4757ec681f3Smrgtypedef VkFlags VkVideoEncodeH264CreateFlagsEXT;
4767ec681f3Smrgtypedef struct VkVideoEncodeH264CapabilitiesEXT {
4777ec681f3Smrg    VkStructureType                        sType;
4787ec681f3Smrg    const void*                            pNext;
4797ec681f3Smrg    VkVideoEncodeH264CapabilityFlagsEXT    flags;
4807ec681f3Smrg    VkVideoEncodeH264InputModeFlagsEXT     inputModeFlags;
4817ec681f3Smrg    VkVideoEncodeH264OutputModeFlagsEXT    outputModeFlags;
4827ec681f3Smrg    VkExtent2D                             minPictureSizeInMbs;
4837ec681f3Smrg    VkExtent2D                             maxPictureSizeInMbs;
4847ec681f3Smrg    VkExtent2D                             inputImageDataAlignment;
4857ec681f3Smrg    uint8_t                                maxNumL0ReferenceForP;
4867ec681f3Smrg    uint8_t                                maxNumL0ReferenceForB;
4877ec681f3Smrg    uint8_t                                maxNumL1Reference;
4887ec681f3Smrg    uint8_t                                qualityLevelCount;
4897ec681f3Smrg    VkExtensionProperties                  stdExtensionVersion;
4907ec681f3Smrg} VkVideoEncodeH264CapabilitiesEXT;
4917ec681f3Smrg
4927ec681f3Smrgtypedef struct VkVideoEncodeH264SessionCreateInfoEXT {
4937ec681f3Smrg    VkStructureType                    sType;
4947ec681f3Smrg    const void*                        pNext;
4957ec681f3Smrg    VkVideoEncodeH264CreateFlagsEXT    flags;
4967ec681f3Smrg    VkExtent2D                         maxPictureSizeInMbs;
4977ec681f3Smrg    const VkExtensionProperties*       pStdExtensionVersion;
4987ec681f3Smrg} VkVideoEncodeH264SessionCreateInfoEXT;
4997ec681f3Smrg
5007ec681f3Smrgtypedef struct VkVideoEncodeH264SessionParametersAddInfoEXT {
5017ec681f3Smrg    VkStructureType                            sType;
5027ec681f3Smrg    const void*                                pNext;
5037ec681f3Smrg    uint32_t                                   spsStdCount;
5047ec681f3Smrg    const StdVideoH264SequenceParameterSet*    pSpsStd;
5057ec681f3Smrg    uint32_t                                   ppsStdCount;
5067ec681f3Smrg    const StdVideoH264PictureParameterSet*     pPpsStd;
5077ec681f3Smrg} VkVideoEncodeH264SessionParametersAddInfoEXT;
5087ec681f3Smrg
5097ec681f3Smrgtypedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT {
5107ec681f3Smrg    VkStructureType                                        sType;
5117ec681f3Smrg    const void*                                            pNext;
5127ec681f3Smrg    uint32_t                                               maxSpsStdCount;
5137ec681f3Smrg    uint32_t                                               maxPpsStdCount;
5147ec681f3Smrg    const VkVideoEncodeH264SessionParametersAddInfoEXT*    pParametersAddInfo;
5157ec681f3Smrg} VkVideoEncodeH264SessionParametersCreateInfoEXT;
5167ec681f3Smrg
5177ec681f3Smrgtypedef struct VkVideoEncodeH264DpbSlotInfoEXT {
5187ec681f3Smrg    VkStructureType                         sType;
5197ec681f3Smrg    const void*                             pNext;
5207ec681f3Smrg    int8_t                                  slotIndex;
5217ec681f3Smrg    const StdVideoEncodeH264PictureInfo*    pStdPictureInfo;
5227ec681f3Smrg} VkVideoEncodeH264DpbSlotInfoEXT;
5237ec681f3Smrg
5247ec681f3Smrgtypedef struct VkVideoEncodeH264NaluSliceEXT {
5257ec681f3Smrg    VkStructureType                           sType;
5267ec681f3Smrg    const void*                               pNext;
5277ec681f3Smrg    const StdVideoEncodeH264SliceHeader*      pSliceHeaderStd;
5287ec681f3Smrg    uint32_t                                  mbCount;
5297ec681f3Smrg    uint8_t                                   refFinalList0EntryCount;
5307ec681f3Smrg    const VkVideoEncodeH264DpbSlotInfoEXT*    pRefFinalList0Entries;
5317ec681f3Smrg    uint8_t                                   refFinalList1EntryCount;
5327ec681f3Smrg    const VkVideoEncodeH264DpbSlotInfoEXT*    pRefFinalList1Entries;
5337ec681f3Smrg    uint32_t                                  precedingNaluBytes;
5347ec681f3Smrg    uint8_t                                   minQp;
5357ec681f3Smrg    uint8_t                                   maxQp;
5367ec681f3Smrg} VkVideoEncodeH264NaluSliceEXT;
5377ec681f3Smrg
5387ec681f3Smrgtypedef struct VkVideoEncodeH264VclFrameInfoEXT {
5397ec681f3Smrg    VkStructureType                           sType;
5407ec681f3Smrg    const void*                               pNext;
5417ec681f3Smrg    uint8_t                                   refDefaultFinalList0EntryCount;
5427ec681f3Smrg    const VkVideoEncodeH264DpbSlotInfoEXT*    pRefDefaultFinalList0Entries;
5437ec681f3Smrg    uint8_t                                   refDefaultFinalList1EntryCount;
5447ec681f3Smrg    const VkVideoEncodeH264DpbSlotInfoEXT*    pRefDefaultFinalList1Entries;
5457ec681f3Smrg    uint32_t                                  naluSliceEntryCount;
5467ec681f3Smrg    const VkVideoEncodeH264NaluSliceEXT*      pNaluSliceEntries;
5477ec681f3Smrg    const VkVideoEncodeH264DpbSlotInfoEXT*    pCurrentPictureInfo;
5487ec681f3Smrg} VkVideoEncodeH264VclFrameInfoEXT;
5497ec681f3Smrg
5507ec681f3Smrgtypedef struct VkVideoEncodeH264EmitPictureParametersEXT {
5517ec681f3Smrg    VkStructureType    sType;
5527ec681f3Smrg    const void*        pNext;
5537ec681f3Smrg    uint8_t            spsId;
5547ec681f3Smrg    VkBool32           emitSpsEnable;
5557ec681f3Smrg    uint32_t           ppsIdEntryCount;
5567ec681f3Smrg    const uint8_t*     ppsIdEntries;
5577ec681f3Smrg} VkVideoEncodeH264EmitPictureParametersEXT;
5587ec681f3Smrg
5597ec681f3Smrgtypedef struct VkVideoEncodeH264ProfileEXT {
5607ec681f3Smrg    VkStructureType           sType;
5617ec681f3Smrg    const void*               pNext;
5627ec681f3Smrg    StdVideoH264ProfileIdc    stdProfileIdc;
5637ec681f3Smrg} VkVideoEncodeH264ProfileEXT;
5647ec681f3Smrg
5657ec681f3Smrg
5667ec681f3Smrg
5677ec681f3Smrg#define VK_EXT_video_decode_h264 1
5687ec681f3Smrg#include "vk_video/vulkan_video_codec_h264std_decode.h"
5697ec681f3Smrg#define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 3
5707ec681f3Smrg#define VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME "VK_EXT_video_decode_h264"
5717ec681f3Smrg
5727ec681f3Smrgtypedef enum VkVideoDecodeH264PictureLayoutFlagBitsEXT {
5737ec681f3Smrg    VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT = 0,
5747ec681f3Smrg    VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT = 0x00000001,
5757ec681f3Smrg    VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT = 0x00000002,
5767ec681f3Smrg    VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
5777ec681f3Smrg} VkVideoDecodeH264PictureLayoutFlagBitsEXT;
5787ec681f3Smrgtypedef VkFlags VkVideoDecodeH264PictureLayoutFlagsEXT;
5797ec681f3Smrgtypedef VkFlags VkVideoDecodeH264CreateFlagsEXT;
5807ec681f3Smrgtypedef struct VkVideoDecodeH264ProfileEXT {
5817ec681f3Smrg    VkStructureType                           sType;
5827ec681f3Smrg    const void*                               pNext;
5837ec681f3Smrg    StdVideoH264ProfileIdc                    stdProfileIdc;
5847ec681f3Smrg    VkVideoDecodeH264PictureLayoutFlagsEXT    pictureLayout;
5857ec681f3Smrg} VkVideoDecodeH264ProfileEXT;
5867ec681f3Smrg
5877ec681f3Smrgtypedef struct VkVideoDecodeH264CapabilitiesEXT {
5887ec681f3Smrg    VkStructureType          sType;
5897ec681f3Smrg    void*                    pNext;
5907ec681f3Smrg    uint32_t                 maxLevel;
5917ec681f3Smrg    VkOffset2D               fieldOffsetGranularity;
5927ec681f3Smrg    VkExtensionProperties    stdExtensionVersion;
5937ec681f3Smrg} VkVideoDecodeH264CapabilitiesEXT;
5947ec681f3Smrg
5957ec681f3Smrgtypedef struct VkVideoDecodeH264SessionCreateInfoEXT {
5967ec681f3Smrg    VkStructureType                    sType;
5977ec681f3Smrg    const void*                        pNext;
5987ec681f3Smrg    VkVideoDecodeH264CreateFlagsEXT    flags;
5997ec681f3Smrg    const VkExtensionProperties*       pStdExtensionVersion;
6007ec681f3Smrg} VkVideoDecodeH264SessionCreateInfoEXT;
6017ec681f3Smrg
6027ec681f3Smrgtypedef struct VkVideoDecodeH264SessionParametersAddInfoEXT {
6037ec681f3Smrg    VkStructureType                            sType;
6047ec681f3Smrg    const void*                                pNext;
6057ec681f3Smrg    uint32_t                                   spsStdCount;
6067ec681f3Smrg    const StdVideoH264SequenceParameterSet*    pSpsStd;
6077ec681f3Smrg    uint32_t                                   ppsStdCount;
6087ec681f3Smrg    const StdVideoH264PictureParameterSet*     pPpsStd;
6097ec681f3Smrg} VkVideoDecodeH264SessionParametersAddInfoEXT;
6107ec681f3Smrg
6117ec681f3Smrgtypedef struct VkVideoDecodeH264SessionParametersCreateInfoEXT {
6127ec681f3Smrg    VkStructureType                                        sType;
6137ec681f3Smrg    const void*                                            pNext;
6147ec681f3Smrg    uint32_t                                               maxSpsStdCount;
6157ec681f3Smrg    uint32_t                                               maxPpsStdCount;
6167ec681f3Smrg    const VkVideoDecodeH264SessionParametersAddInfoEXT*    pParametersAddInfo;
6177ec681f3Smrg} VkVideoDecodeH264SessionParametersCreateInfoEXT;
6187ec681f3Smrg
6197ec681f3Smrgtypedef struct VkVideoDecodeH264PictureInfoEXT {
6207ec681f3Smrg    VkStructureType                         sType;
6217ec681f3Smrg    const void*                             pNext;
6227ec681f3Smrg    const StdVideoDecodeH264PictureInfo*    pStdPictureInfo;
6237ec681f3Smrg    uint32_t                                slicesCount;
6247ec681f3Smrg    const uint32_t*                         pSlicesDataOffsets;
6257ec681f3Smrg} VkVideoDecodeH264PictureInfoEXT;
6267ec681f3Smrg
6277ec681f3Smrgtypedef struct VkVideoDecodeH264MvcEXT {
6287ec681f3Smrg    VkStructureType                 sType;
6297ec681f3Smrg    const void*                     pNext;
6307ec681f3Smrg    const StdVideoDecodeH264Mvc*    pStdMvc;
6317ec681f3Smrg} VkVideoDecodeH264MvcEXT;
6327ec681f3Smrg
6337ec681f3Smrgtypedef struct VkVideoDecodeH264DpbSlotInfoEXT {
6347ec681f3Smrg    VkStructureType                           sType;
6357ec681f3Smrg    const void*                               pNext;
6367ec681f3Smrg    const StdVideoDecodeH264ReferenceInfo*    pStdReferenceInfo;
6377ec681f3Smrg} VkVideoDecodeH264DpbSlotInfoEXT;
6387ec681f3Smrg
6397ec681f3Smrg
6407ec681f3Smrg
6417ec681f3Smrg#define VK_EXT_video_decode_h265 1
6427ec681f3Smrg#include "vk_video/vulkan_video_codec_h265std.h"
6437ec681f3Smrg#include "vk_video/vulkan_video_codec_h265std_decode.h"
6447ec681f3Smrg#define VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION 1
6457ec681f3Smrg#define VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME "VK_EXT_video_decode_h265"
6467ec681f3Smrgtypedef VkFlags VkVideoDecodeH265CreateFlagsEXT;
6477ec681f3Smrgtypedef struct VkVideoDecodeH265ProfileEXT {
6487ec681f3Smrg    VkStructureType           sType;
6497ec681f3Smrg    const void*               pNext;
6507ec681f3Smrg    StdVideoH265ProfileIdc    stdProfileIdc;
6517ec681f3Smrg} VkVideoDecodeH265ProfileEXT;
6527ec681f3Smrg
6537ec681f3Smrgtypedef struct VkVideoDecodeH265CapabilitiesEXT {
6547ec681f3Smrg    VkStructureType          sType;
6557ec681f3Smrg    void*                    pNext;
6567ec681f3Smrg    uint32_t                 maxLevel;
6577ec681f3Smrg    VkExtensionProperties    stdExtensionVersion;
6587ec681f3Smrg} VkVideoDecodeH265CapabilitiesEXT;
6597ec681f3Smrg
6607ec681f3Smrgtypedef struct VkVideoDecodeH265SessionCreateInfoEXT {
6617ec681f3Smrg    VkStructureType                    sType;
6627ec681f3Smrg    const void*                        pNext;
6637ec681f3Smrg    VkVideoDecodeH265CreateFlagsEXT    flags;
6647ec681f3Smrg    const VkExtensionProperties*       pStdExtensionVersion;
6657ec681f3Smrg} VkVideoDecodeH265SessionCreateInfoEXT;
6667ec681f3Smrg
6677ec681f3Smrgtypedef struct VkVideoDecodeH265SessionParametersAddInfoEXT {
6687ec681f3Smrg    VkStructureType                            sType;
6697ec681f3Smrg    const void*                                pNext;
6707ec681f3Smrg    uint32_t                                   spsStdCount;
6717ec681f3Smrg    const StdVideoH265SequenceParameterSet*    pSpsStd;
6727ec681f3Smrg    uint32_t                                   ppsStdCount;
6737ec681f3Smrg    const StdVideoH265PictureParameterSet*     pPpsStd;
6747ec681f3Smrg} VkVideoDecodeH265SessionParametersAddInfoEXT;
6757ec681f3Smrg
6767ec681f3Smrgtypedef struct VkVideoDecodeH265SessionParametersCreateInfoEXT {
6777ec681f3Smrg    VkStructureType                                        sType;
6787ec681f3Smrg    const void*                                            pNext;
6797ec681f3Smrg    uint32_t                                               maxSpsStdCount;
6807ec681f3Smrg    uint32_t                                               maxPpsStdCount;
6817ec681f3Smrg    const VkVideoDecodeH265SessionParametersAddInfoEXT*    pParametersAddInfo;
6827ec681f3Smrg} VkVideoDecodeH265SessionParametersCreateInfoEXT;
6837ec681f3Smrg
6847ec681f3Smrgtypedef struct VkVideoDecodeH265PictureInfoEXT {
6857ec681f3Smrg    VkStructureType                   sType;
6867ec681f3Smrg    const void*                       pNext;
6877ec681f3Smrg    StdVideoDecodeH265PictureInfo*    pStdPictureInfo;
6887ec681f3Smrg    uint32_t                          slicesCount;
6897ec681f3Smrg    const uint32_t*                   pSlicesDataOffsets;
6907ec681f3Smrg} VkVideoDecodeH265PictureInfoEXT;
6917ec681f3Smrg
6927ec681f3Smrgtypedef struct VkVideoDecodeH265DpbSlotInfoEXT {
6937ec681f3Smrg    VkStructureType                           sType;
6947ec681f3Smrg    const void*                               pNext;
6957ec681f3Smrg    const StdVideoDecodeH265ReferenceInfo*    pStdReferenceInfo;
6967ec681f3Smrg} VkVideoDecodeH265DpbSlotInfoEXT;
6977ec681f3Smrg
6987ec681f3Smrg
6997ec681f3Smrg#ifdef __cplusplus
7007ec681f3Smrg}
7017ec681f3Smrg#endif
7027ec681f3Smrg
7037ec681f3Smrg#endif
704