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