vulkan_beta.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492
  1. #ifndef VULKAN_BETA_H_
  2. #define VULKAN_BETA_H_ 1
  3. /*
  4. ** Copyright 2015-2023 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_portability_subset 1
  16. #define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1
  17. #define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset"
  18. typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR {
  19. VkStructureType sType;
  20. void* pNext;
  21. VkBool32 constantAlphaColorBlendFactors;
  22. VkBool32 events;
  23. VkBool32 imageViewFormatReinterpretation;
  24. VkBool32 imageViewFormatSwizzle;
  25. VkBool32 imageView2DOn3DImage;
  26. VkBool32 multisampleArrayImage;
  27. VkBool32 mutableComparisonSamplers;
  28. VkBool32 pointPolygons;
  29. VkBool32 samplerMipLodBias;
  30. VkBool32 separateStencilMaskRef;
  31. VkBool32 shaderSampleRateInterpolationFunctions;
  32. VkBool32 tessellationIsolines;
  33. VkBool32 tessellationPointMode;
  34. VkBool32 triangleFans;
  35. VkBool32 vertexAttributeAccessBeyondStride;
  36. } VkPhysicalDevicePortabilitySubsetFeaturesKHR;
  37. typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR {
  38. VkStructureType sType;
  39. void* pNext;
  40. uint32_t minVertexInputBindingStrideAlignment;
  41. } VkPhysicalDevicePortabilitySubsetPropertiesKHR;
  42. #define VK_KHR_video_encode_queue 1
  43. #define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 8
  44. #define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue"
  45. typedef enum VkVideoEncodeTuningModeKHR {
  46. VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0,
  47. VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1,
  48. VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2,
  49. VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3,
  50. VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4,
  51. VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
  52. } VkVideoEncodeTuningModeKHR;
  53. typedef VkFlags VkVideoEncodeFlagsKHR;
  54. typedef enum VkVideoEncodeCapabilityFlagBitsKHR {
  55. VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 0x00000001,
  56. VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
  57. } VkVideoEncodeCapabilityFlagBitsKHR;
  58. typedef VkFlags VkVideoEncodeCapabilityFlagsKHR;
  59. typedef enum VkVideoEncodeRateControlModeFlagBitsKHR {
  60. VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0,
  61. VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 0x00000001,
  62. VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 0x00000002,
  63. VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 0x00000004,
  64. VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
  65. } VkVideoEncodeRateControlModeFlagBitsKHR;
  66. typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR;
  67. typedef enum VkVideoEncodeFeedbackFlagBitsKHR {
  68. VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 0x00000001,
  69. VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 0x00000002,
  70. VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
  71. } VkVideoEncodeFeedbackFlagBitsKHR;
  72. typedef VkFlags VkVideoEncodeFeedbackFlagsKHR;
  73. typedef enum VkVideoEncodeUsageFlagBitsKHR {
  74. VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0,
  75. VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 0x00000001,
  76. VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 0x00000002,
  77. VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 0x00000004,
  78. VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 0x00000008,
  79. VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
  80. } VkVideoEncodeUsageFlagBitsKHR;
  81. typedef VkFlags VkVideoEncodeUsageFlagsKHR;
  82. typedef enum VkVideoEncodeContentFlagBitsKHR {
  83. VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0,
  84. VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 0x00000001,
  85. VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 0x00000002,
  86. VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 0x00000004,
  87. VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
  88. } VkVideoEncodeContentFlagBitsKHR;
  89. typedef VkFlags VkVideoEncodeContentFlagsKHR;
  90. typedef VkFlags VkVideoEncodeRateControlFlagsKHR;
  91. typedef struct VkVideoEncodeInfoKHR {
  92. VkStructureType sType;
  93. const void* pNext;
  94. VkVideoEncodeFlagsKHR flags;
  95. uint32_t qualityLevel;
  96. VkBuffer dstBuffer;
  97. VkDeviceSize dstBufferOffset;
  98. VkDeviceSize dstBufferRange;
  99. VkVideoPictureResourceInfoKHR srcPictureResource;
  100. const VkVideoReferenceSlotInfoKHR* pSetupReferenceSlot;
  101. uint32_t referenceSlotCount;
  102. const VkVideoReferenceSlotInfoKHR* pReferenceSlots;
  103. uint32_t precedingExternallyEncodedBytes;
  104. } VkVideoEncodeInfoKHR;
  105. typedef struct VkVideoEncodeCapabilitiesKHR {
  106. VkStructureType sType;
  107. void* pNext;
  108. VkVideoEncodeCapabilityFlagsKHR flags;
  109. VkVideoEncodeRateControlModeFlagsKHR rateControlModes;
  110. uint32_t maxRateControlLayers;
  111. uint32_t maxQualityLevels;
  112. VkExtent2D inputImageDataFillAlignment;
  113. VkVideoEncodeFeedbackFlagsKHR supportedEncodeFeedbackFlags;
  114. } VkVideoEncodeCapabilitiesKHR;
  115. typedef struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR {
  116. VkStructureType sType;
  117. const void* pNext;
  118. VkVideoEncodeFeedbackFlagsKHR encodeFeedbackFlags;
  119. } VkQueryPoolVideoEncodeFeedbackCreateInfoKHR;
  120. typedef struct VkVideoEncodeUsageInfoKHR {
  121. VkStructureType sType;
  122. const void* pNext;
  123. VkVideoEncodeUsageFlagsKHR videoUsageHints;
  124. VkVideoEncodeContentFlagsKHR videoContentHints;
  125. VkVideoEncodeTuningModeKHR tuningMode;
  126. } VkVideoEncodeUsageInfoKHR;
  127. typedef struct VkVideoEncodeRateControlLayerInfoKHR {
  128. VkStructureType sType;
  129. const void* pNext;
  130. uint64_t averageBitrate;
  131. uint64_t maxBitrate;
  132. uint32_t frameRateNumerator;
  133. uint32_t frameRateDenominator;
  134. uint32_t virtualBufferSizeInMs;
  135. uint32_t initialVirtualBufferSizeInMs;
  136. } VkVideoEncodeRateControlLayerInfoKHR;
  137. typedef struct VkVideoEncodeRateControlInfoKHR {
  138. VkStructureType sType;
  139. const void* pNext;
  140. VkVideoEncodeRateControlFlagsKHR flags;
  141. VkVideoEncodeRateControlModeFlagBitsKHR rateControlMode;
  142. uint32_t layerCount;
  143. const VkVideoEncodeRateControlLayerInfoKHR* pLayers;
  144. } VkVideoEncodeRateControlInfoKHR;
  145. typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo);
  146. #ifndef VK_NO_PROTOTYPES
  147. VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR(
  148. VkCommandBuffer commandBuffer,
  149. const VkVideoEncodeInfoKHR* pEncodeInfo);
  150. #endif
  151. #define VK_EXT_video_encode_h264 1
  152. #include "vk_video/vulkan_video_codec_h264std.h"
  153. #include "vk_video/vulkan_video_codec_h264std_encode.h"
  154. #define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 10
  155. #define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264"
  156. typedef enum VkVideoEncodeH264RateControlStructureEXT {
  157. VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0,
  158. VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_EXT = 1,
  159. VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_EXT = 2,
  160. VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_MAX_ENUM_EXT = 0x7FFFFFFF
  161. } VkVideoEncodeH264RateControlStructureEXT;
  162. typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT {
  163. VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_ENABLED_BIT_EXT = 0x00000001,
  164. VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_DISABLED_BIT_EXT = 0x00000002,
  165. VK_VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000004,
  166. VK_VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXT = 0x00000008,
  167. VK_VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000010,
  168. VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020,
  169. VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000040,
  170. VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000080,
  171. VK_VIDEO_ENCODE_H264_CAPABILITY_PIC_INIT_QP_MINUS26_BIT_EXT = 0x00000100,
  172. VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00000200,
  173. VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_EXPLICIT_BIT_EXT = 0x00000400,
  174. VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_IMPLICIT_BIT_EXT = 0x00000800,
  175. VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00001000,
  176. VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00002000,
  177. VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00004000,
  178. VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00008000,
  179. VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00010000,
  180. VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00020000,
  181. VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00040000,
  182. VK_VIDEO_ENCODE_H264_CAPABILITY_DISABLE_DIRECT_SPATIAL_MV_PRED_BIT_EXT = 0x00080000,
  183. VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00100000,
  184. VK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT = 0x00200000,
  185. VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT = 0x00400000,
  186. VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x00800000,
  187. VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x01000000,
  188. VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_REFERENCE_FINAL_LISTS_BIT_EXT = 0x02000000,
  189. VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
  190. } VkVideoEncodeH264CapabilityFlagBitsEXT;
  191. typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT;
  192. typedef struct VkVideoEncodeH264CapabilitiesEXT {
  193. VkStructureType sType;
  194. void* pNext;
  195. VkVideoEncodeH264CapabilityFlagsEXT flags;
  196. uint32_t maxPPictureL0ReferenceCount;
  197. uint32_t maxBPictureL0ReferenceCount;
  198. uint32_t maxL1ReferenceCount;
  199. VkBool32 motionVectorsOverPicBoundariesFlag;
  200. uint32_t maxBytesPerPicDenom;
  201. uint32_t maxBitsPerMbDenom;
  202. uint32_t log2MaxMvLengthHorizontal;
  203. uint32_t log2MaxMvLengthVertical;
  204. } VkVideoEncodeH264CapabilitiesEXT;
  205. typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT {
  206. VkStructureType sType;
  207. const void* pNext;
  208. uint32_t stdSPSCount;
  209. const StdVideoH264SequenceParameterSet* pStdSPSs;
  210. uint32_t stdPPSCount;
  211. const StdVideoH264PictureParameterSet* pStdPPSs;
  212. } VkVideoEncodeH264SessionParametersAddInfoEXT;
  213. typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT {
  214. VkStructureType sType;
  215. const void* pNext;
  216. uint32_t maxStdSPSCount;
  217. uint32_t maxStdPPSCount;
  218. const VkVideoEncodeH264SessionParametersAddInfoEXT* pParametersAddInfo;
  219. } VkVideoEncodeH264SessionParametersCreateInfoEXT;
  220. typedef struct VkVideoEncodeH264NaluSliceInfoEXT {
  221. VkStructureType sType;
  222. const void* pNext;
  223. uint32_t mbCount;
  224. const StdVideoEncodeH264ReferenceListsInfo* pStdReferenceFinalLists;
  225. const StdVideoEncodeH264SliceHeader* pStdSliceHeader;
  226. } VkVideoEncodeH264NaluSliceInfoEXT;
  227. typedef struct VkVideoEncodeH264VclFrameInfoEXT {
  228. VkStructureType sType;
  229. const void* pNext;
  230. const StdVideoEncodeH264ReferenceListsInfo* pStdReferenceFinalLists;
  231. uint32_t naluSliceEntryCount;
  232. const VkVideoEncodeH264NaluSliceInfoEXT* pNaluSliceEntries;
  233. const StdVideoEncodeH264PictureInfo* pStdPictureInfo;
  234. } VkVideoEncodeH264VclFrameInfoEXT;
  235. typedef struct VkVideoEncodeH264DpbSlotInfoEXT {
  236. VkStructureType sType;
  237. const void* pNext;
  238. const StdVideoEncodeH264ReferenceInfo* pStdReferenceInfo;
  239. } VkVideoEncodeH264DpbSlotInfoEXT;
  240. typedef struct VkVideoEncodeH264ProfileInfoEXT {
  241. VkStructureType sType;
  242. const void* pNext;
  243. StdVideoH264ProfileIdc stdProfileIdc;
  244. } VkVideoEncodeH264ProfileInfoEXT;
  245. typedef struct VkVideoEncodeH264RateControlInfoEXT {
  246. VkStructureType sType;
  247. const void* pNext;
  248. uint32_t gopFrameCount;
  249. uint32_t idrPeriod;
  250. uint32_t consecutiveBFrameCount;
  251. VkVideoEncodeH264RateControlStructureEXT rateControlStructure;
  252. uint32_t temporalLayerCount;
  253. } VkVideoEncodeH264RateControlInfoEXT;
  254. typedef struct VkVideoEncodeH264QpEXT {
  255. int32_t qpI;
  256. int32_t qpP;
  257. int32_t qpB;
  258. } VkVideoEncodeH264QpEXT;
  259. typedef struct VkVideoEncodeH264FrameSizeEXT {
  260. uint32_t frameISize;
  261. uint32_t framePSize;
  262. uint32_t frameBSize;
  263. } VkVideoEncodeH264FrameSizeEXT;
  264. typedef struct VkVideoEncodeH264RateControlLayerInfoEXT {
  265. VkStructureType sType;
  266. const void* pNext;
  267. uint32_t temporalLayerId;
  268. VkBool32 useInitialRcQp;
  269. VkVideoEncodeH264QpEXT initialRcQp;
  270. VkBool32 useMinQp;
  271. VkVideoEncodeH264QpEXT minQp;
  272. VkBool32 useMaxQp;
  273. VkVideoEncodeH264QpEXT maxQp;
  274. VkBool32 useMaxFrameSize;
  275. VkVideoEncodeH264FrameSizeEXT maxFrameSize;
  276. } VkVideoEncodeH264RateControlLayerInfoEXT;
  277. #define VK_EXT_video_encode_h265 1
  278. #include "vk_video/vulkan_video_codec_h265std.h"
  279. #include "vk_video/vulkan_video_codec_h265std_encode.h"
  280. #define VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION 10
  281. #define VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_EXT_video_encode_h265"
  282. typedef enum VkVideoEncodeH265RateControlStructureEXT {
  283. VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0,
  284. VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_EXT = 1,
  285. VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_EXT = 2,
  286. VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_MAX_ENUM_EXT = 0x7FFFFFFF
  287. } VkVideoEncodeH265RateControlStructureEXT;
  288. typedef enum VkVideoEncodeH265CapabilityFlagBitsEXT {
  289. VK_VIDEO_ENCODE_H265_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000001,
  290. VK_VIDEO_ENCODE_H265_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000002,
  291. VK_VIDEO_ENCODE_H265_CAPABILITY_SAMPLE_ADAPTIVE_OFFSET_ENABLED_BIT_EXT = 0x00000004,
  292. VK_VIDEO_ENCODE_H265_CAPABILITY_PCM_ENABLE_BIT_EXT = 0x00000008,
  293. VK_VIDEO_ENCODE_H265_CAPABILITY_SPS_TEMPORAL_MVP_ENABLED_BIT_EXT = 0x00000010,
  294. VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020,
  295. VK_VIDEO_ENCODE_H265_CAPABILITY_INIT_QP_MINUS26_BIT_EXT = 0x00000040,
  296. VK_VIDEO_ENCODE_H265_CAPABILITY_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT = 0x00000080,
  297. VK_VIDEO_ENCODE_H265_CAPABILITY_SIGN_DATA_HIDING_ENABLED_BIT_EXT = 0x00000100,
  298. VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_ENABLED_BIT_EXT = 0x00000200,
  299. VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_DISABLED_BIT_EXT = 0x00000400,
  300. VK_VIDEO_ENCODE_H265_CAPABILITY_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_BIT_EXT = 0x00000800,
  301. VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00001000,
  302. VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_BIPRED_BIT_EXT = 0x00002000,
  303. VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00004000,
  304. VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSQUANT_BYPASS_ENABLED_BIT_EXT = 0x00008000,
  305. VK_VIDEO_ENCODE_H265_CAPABILITY_ENTROPY_CODING_SYNC_ENABLED_BIT_EXT = 0x00010000,
  306. VK_VIDEO_ENCODE_H265_CAPABILITY_DEBLOCKING_FILTER_OVERRIDE_ENABLED_BIT_EXT = 0x00020000,
  307. VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_FRAME_BIT_EXT = 0x00040000,
  308. VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_PER_TILE_BIT_EXT = 0x00080000,
  309. VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_SLICE_BIT_EXT = 0x00100000,
  310. VK_VIDEO_ENCODE_H265_CAPABILITY_SLICE_SEGMENT_CTB_COUNT_BIT_EXT = 0x00200000,
  311. VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT = 0x00400000,
  312. VK_VIDEO_ENCODE_H265_CAPABILITY_DEPENDENT_SLICE_SEGMENT_BIT_EXT = 0x00800000,
  313. VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x01000000,
  314. VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x02000000,
  315. VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_REFERENCE_FINAL_LISTS_BIT_EXT = 0x04000000,
  316. VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
  317. } VkVideoEncodeH265CapabilityFlagBitsEXT;
  318. typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT;
  319. typedef enum VkVideoEncodeH265CtbSizeFlagBitsEXT {
  320. VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT = 0x00000001,
  321. VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT = 0x00000002,
  322. VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT = 0x00000004,
  323. VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
  324. } VkVideoEncodeH265CtbSizeFlagBitsEXT;
  325. typedef VkFlags VkVideoEncodeH265CtbSizeFlagsEXT;
  326. typedef enum VkVideoEncodeH265TransformBlockSizeFlagBitsEXT {
  327. VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_EXT = 0x00000001,
  328. VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_EXT = 0x00000002,
  329. VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_EXT = 0x00000004,
  330. VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_EXT = 0x00000008,
  331. VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
  332. } VkVideoEncodeH265TransformBlockSizeFlagBitsEXT;
  333. typedef VkFlags VkVideoEncodeH265TransformBlockSizeFlagsEXT;
  334. typedef struct VkVideoEncodeH265CapabilitiesEXT {
  335. VkStructureType sType;
  336. void* pNext;
  337. VkVideoEncodeH265CapabilityFlagsEXT flags;
  338. VkVideoEncodeH265CtbSizeFlagsEXT ctbSizes;
  339. VkVideoEncodeH265TransformBlockSizeFlagsEXT transformBlockSizes;
  340. uint32_t maxPPictureL0ReferenceCount;
  341. uint32_t maxBPictureL0ReferenceCount;
  342. uint32_t maxL1ReferenceCount;
  343. uint32_t maxSubLayersCount;
  344. uint32_t minLog2MinLumaCodingBlockSizeMinus3;
  345. uint32_t maxLog2MinLumaCodingBlockSizeMinus3;
  346. uint32_t minLog2MinLumaTransformBlockSizeMinus2;
  347. uint32_t maxLog2MinLumaTransformBlockSizeMinus2;
  348. uint32_t minMaxTransformHierarchyDepthInter;
  349. uint32_t maxMaxTransformHierarchyDepthInter;
  350. uint32_t minMaxTransformHierarchyDepthIntra;
  351. uint32_t maxMaxTransformHierarchyDepthIntra;
  352. uint32_t maxDiffCuQpDeltaDepth;
  353. uint32_t minMaxNumMergeCand;
  354. uint32_t maxMaxNumMergeCand;
  355. } VkVideoEncodeH265CapabilitiesEXT;
  356. typedef struct VkVideoEncodeH265SessionParametersAddInfoEXT {
  357. VkStructureType sType;
  358. const void* pNext;
  359. uint32_t stdVPSCount;
  360. const StdVideoH265VideoParameterSet* pStdVPSs;
  361. uint32_t stdSPSCount;
  362. const StdVideoH265SequenceParameterSet* pStdSPSs;
  363. uint32_t stdPPSCount;
  364. const StdVideoH265PictureParameterSet* pStdPPSs;
  365. } VkVideoEncodeH265SessionParametersAddInfoEXT;
  366. typedef struct VkVideoEncodeH265SessionParametersCreateInfoEXT {
  367. VkStructureType sType;
  368. const void* pNext;
  369. uint32_t maxStdVPSCount;
  370. uint32_t maxStdSPSCount;
  371. uint32_t maxStdPPSCount;
  372. const VkVideoEncodeH265SessionParametersAddInfoEXT* pParametersAddInfo;
  373. } VkVideoEncodeH265SessionParametersCreateInfoEXT;
  374. typedef struct VkVideoEncodeH265NaluSliceSegmentInfoEXT {
  375. VkStructureType sType;
  376. const void* pNext;
  377. uint32_t ctbCount;
  378. const StdVideoEncodeH265ReferenceListsInfo* pStdReferenceFinalLists;
  379. const StdVideoEncodeH265SliceSegmentHeader* pStdSliceSegmentHeader;
  380. } VkVideoEncodeH265NaluSliceSegmentInfoEXT;
  381. typedef struct VkVideoEncodeH265VclFrameInfoEXT {
  382. VkStructureType sType;
  383. const void* pNext;
  384. const StdVideoEncodeH265ReferenceListsInfo* pStdReferenceFinalLists;
  385. uint32_t naluSliceSegmentEntryCount;
  386. const VkVideoEncodeH265NaluSliceSegmentInfoEXT* pNaluSliceSegmentEntries;
  387. const StdVideoEncodeH265PictureInfo* pStdPictureInfo;
  388. } VkVideoEncodeH265VclFrameInfoEXT;
  389. typedef struct VkVideoEncodeH265DpbSlotInfoEXT {
  390. VkStructureType sType;
  391. const void* pNext;
  392. const StdVideoEncodeH265ReferenceInfo* pStdReferenceInfo;
  393. } VkVideoEncodeH265DpbSlotInfoEXT;
  394. typedef struct VkVideoEncodeH265ProfileInfoEXT {
  395. VkStructureType sType;
  396. const void* pNext;
  397. StdVideoH265ProfileIdc stdProfileIdc;
  398. } VkVideoEncodeH265ProfileInfoEXT;
  399. typedef struct VkVideoEncodeH265RateControlInfoEXT {
  400. VkStructureType sType;
  401. const void* pNext;
  402. uint32_t gopFrameCount;
  403. uint32_t idrPeriod;
  404. uint32_t consecutiveBFrameCount;
  405. VkVideoEncodeH265RateControlStructureEXT rateControlStructure;
  406. uint32_t subLayerCount;
  407. } VkVideoEncodeH265RateControlInfoEXT;
  408. typedef struct VkVideoEncodeH265QpEXT {
  409. int32_t qpI;
  410. int32_t qpP;
  411. int32_t qpB;
  412. } VkVideoEncodeH265QpEXT;
  413. typedef struct VkVideoEncodeH265FrameSizeEXT {
  414. uint32_t frameISize;
  415. uint32_t framePSize;
  416. uint32_t frameBSize;
  417. } VkVideoEncodeH265FrameSizeEXT;
  418. typedef struct VkVideoEncodeH265RateControlLayerInfoEXT {
  419. VkStructureType sType;
  420. const void* pNext;
  421. uint32_t temporalId;
  422. VkBool32 useInitialRcQp;
  423. VkVideoEncodeH265QpEXT initialRcQp;
  424. VkBool32 useMinQp;
  425. VkVideoEncodeH265QpEXT minQp;
  426. VkBool32 useMaxQp;
  427. VkVideoEncodeH265QpEXT maxQp;
  428. VkBool32 useMaxFrameSize;
  429. VkVideoEncodeH265FrameSizeEXT maxFrameSize;
  430. } VkVideoEncodeH265RateControlLayerInfoEXT;
  431. #ifdef __cplusplus
  432. }
  433. #endif
  434. #endif