1 #ifndef VULKAN_BETA_H_ 2 #define VULKAN_BETA_H_ 1 3 4 /* 5 ** Copyright 2015-2022 The Khronos Group Inc. 6 ** 7 ** SPDX-License-Identifier: Apache-2.0 8 */ 9 10 /* 11 ** This header is generated from the Khronos Vulkan XML API Registry. 12 ** 13 */ 14 15 16 #ifdef __cplusplus 17 extern "C" { 18 #endif 19 20 21 22 #define VK_KHR_portability_subset 1 23 #define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1 24 #define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset" 25 typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR { 26 VkStructureType sType; 27 void* pNext; 28 VkBool32 constantAlphaColorBlendFactors; 29 VkBool32 events; 30 VkBool32 imageViewFormatReinterpretation; 31 VkBool32 imageViewFormatSwizzle; 32 VkBool32 imageView2DOn3DImage; 33 VkBool32 multisampleArrayImage; 34 VkBool32 mutableComparisonSamplers; 35 VkBool32 pointPolygons; 36 VkBool32 samplerMipLodBias; 37 VkBool32 separateStencilMaskRef; 38 VkBool32 shaderSampleRateInterpolationFunctions; 39 VkBool32 tessellationIsolines; 40 VkBool32 tessellationPointMode; 41 VkBool32 triangleFans; 42 VkBool32 vertexAttributeAccessBeyondStride; 43 } VkPhysicalDevicePortabilitySubsetFeaturesKHR; 44 45 typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR { 46 VkStructureType sType; 47 void* pNext; 48 uint32_t minVertexInputBindingStrideAlignment; 49 } VkPhysicalDevicePortabilitySubsetPropertiesKHR; 50 51 52 53 #define VK_KHR_video_encode_queue 1 54 #define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 7 55 #define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue" 56 57 typedef enum VkVideoEncodeTuningModeKHR { 58 VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0, 59 VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1, 60 VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2, 61 VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3, 62 VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4, 63 VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 0x7FFFFFFF 64 } VkVideoEncodeTuningModeKHR; 65 typedef VkFlags VkVideoEncodeFlagsKHR; 66 67 typedef enum VkVideoEncodeCapabilityFlagBitsKHR { 68 VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 0x00000001, 69 VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 70 } VkVideoEncodeCapabilityFlagBitsKHR; 71 typedef VkFlags VkVideoEncodeCapabilityFlagsKHR; 72 73 typedef enum VkVideoEncodeRateControlModeFlagBitsKHR { 74 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR = 0, 75 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 1, 76 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 2, 77 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 78 } VkVideoEncodeRateControlModeFlagBitsKHR; 79 typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR; 80 81 typedef enum VkVideoEncodeUsageFlagBitsKHR { 82 VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0, 83 VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 0x00000001, 84 VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 0x00000002, 85 VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 0x00000004, 86 VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 0x00000008, 87 VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 88 } VkVideoEncodeUsageFlagBitsKHR; 89 typedef VkFlags VkVideoEncodeUsageFlagsKHR; 90 91 typedef enum VkVideoEncodeContentFlagBitsKHR { 92 VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0, 93 VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 0x00000001, 94 VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 0x00000002, 95 VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 0x00000004, 96 VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 97 } VkVideoEncodeContentFlagBitsKHR; 98 typedef VkFlags VkVideoEncodeContentFlagsKHR; 99 typedef VkFlags VkVideoEncodeRateControlFlagsKHR; 100 typedef struct VkVideoEncodeInfoKHR { 101 VkStructureType sType; 102 const void* pNext; 103 VkVideoEncodeFlagsKHR flags; 104 uint32_t qualityLevel; 105 VkBuffer dstBitstreamBuffer; 106 VkDeviceSize dstBitstreamBufferOffset; 107 VkDeviceSize dstBitstreamBufferMaxRange; 108 VkVideoPictureResourceInfoKHR srcPictureResource; 109 const VkVideoReferenceSlotInfoKHR* pSetupReferenceSlot; 110 uint32_t referenceSlotCount; 111 const VkVideoReferenceSlotInfoKHR* pReferenceSlots; 112 uint32_t precedingExternallyEncodedBytes; 113 } VkVideoEncodeInfoKHR; 114 115 typedef struct VkVideoEncodeCapabilitiesKHR { 116 VkStructureType sType; 117 void* pNext; 118 VkVideoEncodeCapabilityFlagsKHR flags; 119 VkVideoEncodeRateControlModeFlagsKHR rateControlModes; 120 uint8_t rateControlLayerCount; 121 uint8_t qualityLevelCount; 122 VkExtent2D inputImageDataFillAlignment; 123 } VkVideoEncodeCapabilitiesKHR; 124 125 typedef struct VkVideoEncodeUsageInfoKHR { 126 VkStructureType sType; 127 const void* pNext; 128 VkVideoEncodeUsageFlagsKHR videoUsageHints; 129 VkVideoEncodeContentFlagsKHR videoContentHints; 130 VkVideoEncodeTuningModeKHR tuningMode; 131 } VkVideoEncodeUsageInfoKHR; 132 133 typedef struct VkVideoEncodeRateControlLayerInfoKHR { 134 VkStructureType sType; 135 const void* pNext; 136 uint32_t averageBitrate; 137 uint32_t maxBitrate; 138 uint32_t frameRateNumerator; 139 uint32_t frameRateDenominator; 140 uint32_t virtualBufferSizeInMs; 141 uint32_t initialVirtualBufferSizeInMs; 142 } VkVideoEncodeRateControlLayerInfoKHR; 143 144 typedef struct VkVideoEncodeRateControlInfoKHR { 145 VkStructureType sType; 146 const void* pNext; 147 VkVideoEncodeRateControlFlagsKHR flags; 148 VkVideoEncodeRateControlModeFlagBitsKHR rateControlMode; 149 uint8_t layerCount; 150 const VkVideoEncodeRateControlLayerInfoKHR* pLayerConfigs; 151 } VkVideoEncodeRateControlInfoKHR; 152 153 typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo); 154 155 #ifndef VK_NO_PROTOTYPES 156 VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR( 157 VkCommandBuffer commandBuffer, 158 const VkVideoEncodeInfoKHR* pEncodeInfo); 159 #endif 160 161 162 #define VK_EXT_video_encode_h264 1 163 #include "vk_video/vulkan_video_codec_h264std.h" 164 #include "vk_video/vulkan_video_codec_h264std_encode.h" 165 #define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 9 166 #define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264" 167 168 typedef enum VkVideoEncodeH264RateControlStructureEXT { 169 VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0, 170 VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_EXT = 1, 171 VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_EXT = 2, 172 VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_MAX_ENUM_EXT = 0x7FFFFFFF 173 } VkVideoEncodeH264RateControlStructureEXT; 174 175 typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT { 176 VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_ENABLED_BIT_EXT = 0x00000001, 177 VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_DISABLED_BIT_EXT = 0x00000002, 178 VK_VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000004, 179 VK_VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXT = 0x00000008, 180 VK_VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000010, 181 VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020, 182 VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000040, 183 VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000080, 184 VK_VIDEO_ENCODE_H264_CAPABILITY_PIC_INIT_QP_MINUS26_BIT_EXT = 0x00000100, 185 VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00000200, 186 VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_EXPLICIT_BIT_EXT = 0x00000400, 187 VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_IMPLICIT_BIT_EXT = 0x00000800, 188 VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00001000, 189 VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00002000, 190 VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00004000, 191 VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00008000, 192 VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00010000, 193 VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00020000, 194 VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00040000, 195 VK_VIDEO_ENCODE_H264_CAPABILITY_DISABLE_DIRECT_SPATIAL_MV_PRED_BIT_EXT = 0x00080000, 196 VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00100000, 197 VK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT = 0x00200000, 198 VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT = 0x00400000, 199 VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x00800000, 200 VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x01000000, 201 VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 202 } VkVideoEncodeH264CapabilityFlagBitsEXT; 203 typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT; 204 205 typedef enum VkVideoEncodeH264InputModeFlagBitsEXT { 206 VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 0x00000001, 207 VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 0x00000002, 208 VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, 209 VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 210 } VkVideoEncodeH264InputModeFlagBitsEXT; 211 typedef VkFlags VkVideoEncodeH264InputModeFlagsEXT; 212 213 typedef enum VkVideoEncodeH264OutputModeFlagBitsEXT { 214 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001, 215 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002, 216 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, 217 VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 218 } VkVideoEncodeH264OutputModeFlagBitsEXT; 219 typedef VkFlags VkVideoEncodeH264OutputModeFlagsEXT; 220 typedef struct VkVideoEncodeH264CapabilitiesEXT { 221 VkStructureType sType; 222 void* pNext; 223 VkVideoEncodeH264CapabilityFlagsEXT flags; 224 VkVideoEncodeH264InputModeFlagsEXT inputModeFlags; 225 VkVideoEncodeH264OutputModeFlagsEXT outputModeFlags; 226 uint8_t maxPPictureL0ReferenceCount; 227 uint8_t maxBPictureL0ReferenceCount; 228 uint8_t maxL1ReferenceCount; 229 VkBool32 motionVectorsOverPicBoundariesFlag; 230 uint32_t maxBytesPerPicDenom; 231 uint32_t maxBitsPerMbDenom; 232 uint32_t log2MaxMvLengthHorizontal; 233 uint32_t log2MaxMvLengthVertical; 234 } VkVideoEncodeH264CapabilitiesEXT; 235 236 typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT { 237 VkStructureType sType; 238 const void* pNext; 239 uint32_t stdSPSCount; 240 const StdVideoH264SequenceParameterSet* pStdSPSs; 241 uint32_t stdPPSCount; 242 const StdVideoH264PictureParameterSet* pStdPPSs; 243 } VkVideoEncodeH264SessionParametersAddInfoEXT; 244 245 typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT { 246 VkStructureType sType; 247 const void* pNext; 248 uint32_t maxStdSPSCount; 249 uint32_t maxStdPPSCount; 250 const VkVideoEncodeH264SessionParametersAddInfoEXT* pParametersAddInfo; 251 } VkVideoEncodeH264SessionParametersCreateInfoEXT; 252 253 typedef struct VkVideoEncodeH264DpbSlotInfoEXT { 254 VkStructureType sType; 255 const void* pNext; 256 int8_t slotIndex; 257 const StdVideoEncodeH264ReferenceInfo* pStdReferenceInfo; 258 } VkVideoEncodeH264DpbSlotInfoEXT; 259 260 typedef struct VkVideoEncodeH264ReferenceListsInfoEXT { 261 VkStructureType sType; 262 const void* pNext; 263 uint8_t referenceList0EntryCount; 264 const VkVideoEncodeH264DpbSlotInfoEXT* pReferenceList0Entries; 265 uint8_t referenceList1EntryCount; 266 const VkVideoEncodeH264DpbSlotInfoEXT* pReferenceList1Entries; 267 const StdVideoEncodeH264RefMemMgmtCtrlOperations* pMemMgmtCtrlOperations; 268 } VkVideoEncodeH264ReferenceListsInfoEXT; 269 270 typedef struct VkVideoEncodeH264NaluSliceInfoEXT { 271 VkStructureType sType; 272 const void* pNext; 273 uint32_t mbCount; 274 const VkVideoEncodeH264ReferenceListsInfoEXT* pReferenceFinalLists; 275 const StdVideoEncodeH264SliceHeader* pSliceHeaderStd; 276 } VkVideoEncodeH264NaluSliceInfoEXT; 277 278 typedef struct VkVideoEncodeH264VclFrameInfoEXT { 279 VkStructureType sType; 280 const void* pNext; 281 const VkVideoEncodeH264ReferenceListsInfoEXT* pReferenceFinalLists; 282 uint32_t naluSliceEntryCount; 283 const VkVideoEncodeH264NaluSliceInfoEXT* pNaluSliceEntries; 284 const StdVideoEncodeH264PictureInfo* pCurrentPictureInfo; 285 } VkVideoEncodeH264VclFrameInfoEXT; 286 287 typedef struct VkVideoEncodeH264EmitPictureParametersInfoEXT { 288 VkStructureType sType; 289 const void* pNext; 290 uint8_t spsId; 291 VkBool32 emitSpsEnable; 292 uint32_t ppsIdEntryCount; 293 const uint8_t* ppsIdEntries; 294 } VkVideoEncodeH264EmitPictureParametersInfoEXT; 295 296 typedef struct VkVideoEncodeH264ProfileInfoEXT { 297 VkStructureType sType; 298 const void* pNext; 299 StdVideoH264ProfileIdc stdProfileIdc; 300 } VkVideoEncodeH264ProfileInfoEXT; 301 302 typedef struct VkVideoEncodeH264RateControlInfoEXT { 303 VkStructureType sType; 304 const void* pNext; 305 uint32_t gopFrameCount; 306 uint32_t idrPeriod; 307 uint32_t consecutiveBFrameCount; 308 VkVideoEncodeH264RateControlStructureEXT rateControlStructure; 309 uint8_t temporalLayerCount; 310 } VkVideoEncodeH264RateControlInfoEXT; 311 312 typedef struct VkVideoEncodeH264QpEXT { 313 int32_t qpI; 314 int32_t qpP; 315 int32_t qpB; 316 } VkVideoEncodeH264QpEXT; 317 318 typedef struct VkVideoEncodeH264FrameSizeEXT { 319 uint32_t frameISize; 320 uint32_t framePSize; 321 uint32_t frameBSize; 322 } VkVideoEncodeH264FrameSizeEXT; 323 324 typedef struct VkVideoEncodeH264RateControlLayerInfoEXT { 325 VkStructureType sType; 326 const void* pNext; 327 uint8_t temporalLayerId; 328 VkBool32 useInitialRcQp; 329 VkVideoEncodeH264QpEXT initialRcQp; 330 VkBool32 useMinQp; 331 VkVideoEncodeH264QpEXT minQp; 332 VkBool32 useMaxQp; 333 VkVideoEncodeH264QpEXT maxQp; 334 VkBool32 useMaxFrameSize; 335 VkVideoEncodeH264FrameSizeEXT maxFrameSize; 336 } VkVideoEncodeH264RateControlLayerInfoEXT; 337 338 339 340 #define VK_EXT_video_encode_h265 1 341 #include "vk_video/vulkan_video_codec_h265std.h" 342 #include "vk_video/vulkan_video_codec_h265std_encode.h" 343 #define VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION 9 344 #define VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_EXT_video_encode_h265" 345 346 typedef enum VkVideoEncodeH265RateControlStructureEXT { 347 VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0, 348 VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_EXT = 1, 349 VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_EXT = 2, 350 VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_MAX_ENUM_EXT = 0x7FFFFFFF 351 } VkVideoEncodeH265RateControlStructureEXT; 352 353 typedef enum VkVideoEncodeH265CapabilityFlagBitsEXT { 354 VK_VIDEO_ENCODE_H265_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000001, 355 VK_VIDEO_ENCODE_H265_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000002, 356 VK_VIDEO_ENCODE_H265_CAPABILITY_SAMPLE_ADAPTIVE_OFFSET_ENABLED_BIT_EXT = 0x00000004, 357 VK_VIDEO_ENCODE_H265_CAPABILITY_PCM_ENABLE_BIT_EXT = 0x00000008, 358 VK_VIDEO_ENCODE_H265_CAPABILITY_SPS_TEMPORAL_MVP_ENABLED_BIT_EXT = 0x00000010, 359 VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020, 360 VK_VIDEO_ENCODE_H265_CAPABILITY_INIT_QP_MINUS26_BIT_EXT = 0x00000040, 361 VK_VIDEO_ENCODE_H265_CAPABILITY_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT = 0x00000080, 362 VK_VIDEO_ENCODE_H265_CAPABILITY_SIGN_DATA_HIDING_ENABLED_BIT_EXT = 0x00000100, 363 VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_ENABLED_BIT_EXT = 0x00000200, 364 VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_DISABLED_BIT_EXT = 0x00000400, 365 VK_VIDEO_ENCODE_H265_CAPABILITY_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_BIT_EXT = 0x00000800, 366 VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00001000, 367 VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_BIPRED_BIT_EXT = 0x00002000, 368 VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00004000, 369 VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSQUANT_BYPASS_ENABLED_BIT_EXT = 0x00008000, 370 VK_VIDEO_ENCODE_H265_CAPABILITY_ENTROPY_CODING_SYNC_ENABLED_BIT_EXT = 0x00010000, 371 VK_VIDEO_ENCODE_H265_CAPABILITY_DEBLOCKING_FILTER_OVERRIDE_ENABLED_BIT_EXT = 0x00020000, 372 VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_FRAME_BIT_EXT = 0x00040000, 373 VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_PER_TILE_BIT_EXT = 0x00080000, 374 VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_SLICE_BIT_EXT = 0x00100000, 375 VK_VIDEO_ENCODE_H265_CAPABILITY_SLICE_SEGMENT_CTB_COUNT_BIT_EXT = 0x00200000, 376 VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT = 0x00400000, 377 VK_VIDEO_ENCODE_H265_CAPABILITY_DEPENDENT_SLICE_SEGMENT_BIT_EXT = 0x00800000, 378 VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x01000000, 379 VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x02000000, 380 VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 381 } VkVideoEncodeH265CapabilityFlagBitsEXT; 382 typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT; 383 384 typedef enum VkVideoEncodeH265InputModeFlagBitsEXT { 385 VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT = 0x00000001, 386 VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_SEGMENT_BIT_EXT = 0x00000002, 387 VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, 388 VK_VIDEO_ENCODE_H265_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 389 } VkVideoEncodeH265InputModeFlagBitsEXT; 390 typedef VkFlags VkVideoEncodeH265InputModeFlagsEXT; 391 392 typedef enum VkVideoEncodeH265OutputModeFlagBitsEXT { 393 VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001, 394 VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_SEGMENT_BIT_EXT = 0x00000002, 395 VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004, 396 VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 397 } VkVideoEncodeH265OutputModeFlagBitsEXT; 398 typedef VkFlags VkVideoEncodeH265OutputModeFlagsEXT; 399 400 typedef enum VkVideoEncodeH265CtbSizeFlagBitsEXT { 401 VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT = 0x00000001, 402 VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT = 0x00000002, 403 VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT = 0x00000004, 404 VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 405 } VkVideoEncodeH265CtbSizeFlagBitsEXT; 406 typedef VkFlags VkVideoEncodeH265CtbSizeFlagsEXT; 407 408 typedef enum VkVideoEncodeH265TransformBlockSizeFlagBitsEXT { 409 VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_EXT = 0x00000001, 410 VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_EXT = 0x00000002, 411 VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_EXT = 0x00000004, 412 VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_EXT = 0x00000008, 413 VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 414 } VkVideoEncodeH265TransformBlockSizeFlagBitsEXT; 415 typedef VkFlags VkVideoEncodeH265TransformBlockSizeFlagsEXT; 416 typedef struct VkVideoEncodeH265CapabilitiesEXT { 417 VkStructureType sType; 418 void* pNext; 419 VkVideoEncodeH265CapabilityFlagsEXT flags; 420 VkVideoEncodeH265InputModeFlagsEXT inputModeFlags; 421 VkVideoEncodeH265OutputModeFlagsEXT outputModeFlags; 422 VkVideoEncodeH265CtbSizeFlagsEXT ctbSizes; 423 VkVideoEncodeH265TransformBlockSizeFlagsEXT transformBlockSizes; 424 uint8_t maxPPictureL0ReferenceCount; 425 uint8_t maxBPictureL0ReferenceCount; 426 uint8_t maxL1ReferenceCount; 427 uint8_t maxSubLayersCount; 428 uint8_t minLog2MinLumaCodingBlockSizeMinus3; 429 uint8_t maxLog2MinLumaCodingBlockSizeMinus3; 430 uint8_t minLog2MinLumaTransformBlockSizeMinus2; 431 uint8_t maxLog2MinLumaTransformBlockSizeMinus2; 432 uint8_t minMaxTransformHierarchyDepthInter; 433 uint8_t maxMaxTransformHierarchyDepthInter; 434 uint8_t minMaxTransformHierarchyDepthIntra; 435 uint8_t maxMaxTransformHierarchyDepthIntra; 436 uint8_t maxDiffCuQpDeltaDepth; 437 uint8_t minMaxNumMergeCand; 438 uint8_t maxMaxNumMergeCand; 439 } VkVideoEncodeH265CapabilitiesEXT; 440 441 typedef struct VkVideoEncodeH265SessionParametersAddInfoEXT { 442 VkStructureType sType; 443 const void* pNext; 444 uint32_t stdVPSCount; 445 const StdVideoH265VideoParameterSet* pStdVPSs; 446 uint32_t stdSPSCount; 447 const StdVideoH265SequenceParameterSet* pStdSPSs; 448 uint32_t stdPPSCount; 449 const StdVideoH265PictureParameterSet* pStdPPSs; 450 } VkVideoEncodeH265SessionParametersAddInfoEXT; 451 452 typedef struct VkVideoEncodeH265SessionParametersCreateInfoEXT { 453 VkStructureType sType; 454 const void* pNext; 455 uint32_t maxStdVPSCount; 456 uint32_t maxStdSPSCount; 457 uint32_t maxStdPPSCount; 458 const VkVideoEncodeH265SessionParametersAddInfoEXT* pParametersAddInfo; 459 } VkVideoEncodeH265SessionParametersCreateInfoEXT; 460 461 typedef struct VkVideoEncodeH265DpbSlotInfoEXT { 462 VkStructureType sType; 463 const void* pNext; 464 int8_t slotIndex; 465 const StdVideoEncodeH265ReferenceInfo* pStdReferenceInfo; 466 } VkVideoEncodeH265DpbSlotInfoEXT; 467 468 typedef struct VkVideoEncodeH265ReferenceListsInfoEXT { 469 VkStructureType sType; 470 const void* pNext; 471 uint8_t referenceList0EntryCount; 472 const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList0Entries; 473 uint8_t referenceList1EntryCount; 474 const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList1Entries; 475 const StdVideoEncodeH265ReferenceModifications* pReferenceModifications; 476 } VkVideoEncodeH265ReferenceListsInfoEXT; 477 478 typedef struct VkVideoEncodeH265NaluSliceSegmentInfoEXT { 479 VkStructureType sType; 480 const void* pNext; 481 uint32_t ctbCount; 482 const VkVideoEncodeH265ReferenceListsInfoEXT* pReferenceFinalLists; 483 const StdVideoEncodeH265SliceSegmentHeader* pSliceSegmentHeaderStd; 484 } VkVideoEncodeH265NaluSliceSegmentInfoEXT; 485 486 typedef struct VkVideoEncodeH265VclFrameInfoEXT { 487 VkStructureType sType; 488 const void* pNext; 489 const VkVideoEncodeH265ReferenceListsInfoEXT* pReferenceFinalLists; 490 uint32_t naluSliceSegmentEntryCount; 491 const VkVideoEncodeH265NaluSliceSegmentInfoEXT* pNaluSliceSegmentEntries; 492 const StdVideoEncodeH265PictureInfo* pCurrentPictureInfo; 493 } VkVideoEncodeH265VclFrameInfoEXT; 494 495 typedef struct VkVideoEncodeH265EmitPictureParametersInfoEXT { 496 VkStructureType sType; 497 const void* pNext; 498 uint8_t vpsId; 499 uint8_t spsId; 500 VkBool32 emitVpsEnable; 501 VkBool32 emitSpsEnable; 502 uint32_t ppsIdEntryCount; 503 const uint8_t* ppsIdEntries; 504 } VkVideoEncodeH265EmitPictureParametersInfoEXT; 505 506 typedef struct VkVideoEncodeH265ProfileInfoEXT { 507 VkStructureType sType; 508 const void* pNext; 509 StdVideoH265ProfileIdc stdProfileIdc; 510 } VkVideoEncodeH265ProfileInfoEXT; 511 512 typedef struct VkVideoEncodeH265RateControlInfoEXT { 513 VkStructureType sType; 514 const void* pNext; 515 uint32_t gopFrameCount; 516 uint32_t idrPeriod; 517 uint32_t consecutiveBFrameCount; 518 VkVideoEncodeH265RateControlStructureEXT rateControlStructure; 519 uint8_t subLayerCount; 520 } VkVideoEncodeH265RateControlInfoEXT; 521 522 typedef struct VkVideoEncodeH265QpEXT { 523 int32_t qpI; 524 int32_t qpP; 525 int32_t qpB; 526 } VkVideoEncodeH265QpEXT; 527 528 typedef struct VkVideoEncodeH265FrameSizeEXT { 529 uint32_t frameISize; 530 uint32_t framePSize; 531 uint32_t frameBSize; 532 } VkVideoEncodeH265FrameSizeEXT; 533 534 typedef struct VkVideoEncodeH265RateControlLayerInfoEXT { 535 VkStructureType sType; 536 const void* pNext; 537 uint8_t temporalId; 538 VkBool32 useInitialRcQp; 539 VkVideoEncodeH265QpEXT initialRcQp; 540 VkBool32 useMinQp; 541 VkVideoEncodeH265QpEXT minQp; 542 VkBool32 useMaxQp; 543 VkVideoEncodeH265QpEXT maxQp; 544 VkBool32 useMaxFrameSize; 545 VkVideoEncodeH265FrameSizeEXT maxFrameSize; 546 } VkVideoEncodeH265RateControlLayerInfoEXT; 547 548 549 #ifdef __cplusplus 550 } 551 #endif 552 553 #endif 554