vulkan_beta.h 48 KB

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