1 #ifndef VULKAN_BETA_H_ 2 #define VULKAN_BETA_H_ 1 3 4 /* 5 ** Copyright 2015-2023 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 // VK_KHR_portability_subset is a preprocessor guard. Do not pass it to API calls. 23 #define VK_KHR_portability_subset 1 24 #define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1 25 #define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset" 26 typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR { 27 VkStructureType sType; 28 void* pNext; 29 VkBool32 constantAlphaColorBlendFactors; 30 VkBool32 events; 31 VkBool32 imageViewFormatReinterpretation; 32 VkBool32 imageViewFormatSwizzle; 33 VkBool32 imageView2DOn3DImage; 34 VkBool32 multisampleArrayImage; 35 VkBool32 mutableComparisonSamplers; 36 VkBool32 pointPolygons; 37 VkBool32 samplerMipLodBias; 38 VkBool32 separateStencilMaskRef; 39 VkBool32 shaderSampleRateInterpolationFunctions; 40 VkBool32 tessellationIsolines; 41 VkBool32 tessellationPointMode; 42 VkBool32 triangleFans; 43 VkBool32 vertexAttributeAccessBeyondStride; 44 } VkPhysicalDevicePortabilitySubsetFeaturesKHR; 45 46 typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR { 47 VkStructureType sType; 48 void* pNext; 49 uint32_t minVertexInputBindingStrideAlignment; 50 } VkPhysicalDevicePortabilitySubsetPropertiesKHR; 51 52 53 54 // VK_KHR_video_encode_queue is a preprocessor guard. Do not pass it to API calls. 55 #define VK_KHR_video_encode_queue 1 56 #define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 10 57 #define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue" 58 59 typedef enum VkVideoEncodeTuningModeKHR { 60 VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0, 61 VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1, 62 VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2, 63 VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3, 64 VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4, 65 VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 0x7FFFFFFF 66 } VkVideoEncodeTuningModeKHR; 67 typedef VkFlags VkVideoEncodeFlagsKHR; 68 69 typedef enum VkVideoEncodeCapabilityFlagBitsKHR { 70 VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 0x00000001, 71 VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 0x00000002, 72 VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 73 } VkVideoEncodeCapabilityFlagBitsKHR; 74 typedef VkFlags VkVideoEncodeCapabilityFlagsKHR; 75 76 typedef enum VkVideoEncodeRateControlModeFlagBitsKHR { 77 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0, 78 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 0x00000001, 79 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 0x00000002, 80 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 0x00000004, 81 VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 82 } VkVideoEncodeRateControlModeFlagBitsKHR; 83 typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR; 84 85 typedef enum VkVideoEncodeFeedbackFlagBitsKHR { 86 VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 0x00000001, 87 VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 0x00000002, 88 VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 0x00000004, 89 VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 90 } VkVideoEncodeFeedbackFlagBitsKHR; 91 typedef VkFlags VkVideoEncodeFeedbackFlagsKHR; 92 93 typedef enum VkVideoEncodeUsageFlagBitsKHR { 94 VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0, 95 VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 0x00000001, 96 VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 0x00000002, 97 VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 0x00000004, 98 VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 0x00000008, 99 VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 100 } VkVideoEncodeUsageFlagBitsKHR; 101 typedef VkFlags VkVideoEncodeUsageFlagsKHR; 102 103 typedef enum VkVideoEncodeContentFlagBitsKHR { 104 VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0, 105 VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 0x00000001, 106 VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 0x00000002, 107 VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 0x00000004, 108 VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF 109 } VkVideoEncodeContentFlagBitsKHR; 110 typedef VkFlags VkVideoEncodeContentFlagsKHR; 111 typedef VkFlags VkVideoEncodeRateControlFlagsKHR; 112 typedef struct VkVideoEncodeInfoKHR { 113 VkStructureType sType; 114 const void* pNext; 115 VkVideoEncodeFlagsKHR flags; 116 VkBuffer dstBuffer; 117 VkDeviceSize dstBufferOffset; 118 VkDeviceSize dstBufferRange; 119 VkVideoPictureResourceInfoKHR srcPictureResource; 120 const VkVideoReferenceSlotInfoKHR* pSetupReferenceSlot; 121 uint32_t referenceSlotCount; 122 const VkVideoReferenceSlotInfoKHR* pReferenceSlots; 123 uint32_t precedingExternallyEncodedBytes; 124 } VkVideoEncodeInfoKHR; 125 126 typedef struct VkVideoEncodeCapabilitiesKHR { 127 VkStructureType sType; 128 void* pNext; 129 VkVideoEncodeCapabilityFlagsKHR flags; 130 VkVideoEncodeRateControlModeFlagsKHR rateControlModes; 131 uint32_t maxRateControlLayers; 132 uint64_t maxBitrate; 133 uint32_t maxQualityLevels; 134 VkExtent2D encodeInputPictureGranularity; 135 VkVideoEncodeFeedbackFlagsKHR supportedEncodeFeedbackFlags; 136 } VkVideoEncodeCapabilitiesKHR; 137 138 typedef struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR { 139 VkStructureType sType; 140 const void* pNext; 141 VkVideoEncodeFeedbackFlagsKHR encodeFeedbackFlags; 142 } VkQueryPoolVideoEncodeFeedbackCreateInfoKHR; 143 144 typedef struct VkVideoEncodeUsageInfoKHR { 145 VkStructureType sType; 146 const void* pNext; 147 VkVideoEncodeUsageFlagsKHR videoUsageHints; 148 VkVideoEncodeContentFlagsKHR videoContentHints; 149 VkVideoEncodeTuningModeKHR tuningMode; 150 } VkVideoEncodeUsageInfoKHR; 151 152 typedef struct VkVideoEncodeRateControlLayerInfoKHR { 153 VkStructureType sType; 154 const void* pNext; 155 uint64_t averageBitrate; 156 uint64_t maxBitrate; 157 uint32_t frameRateNumerator; 158 uint32_t frameRateDenominator; 159 } VkVideoEncodeRateControlLayerInfoKHR; 160 161 typedef struct VkVideoEncodeRateControlInfoKHR { 162 VkStructureType sType; 163 const void* pNext; 164 VkVideoEncodeRateControlFlagsKHR flags; 165 VkVideoEncodeRateControlModeFlagBitsKHR rateControlMode; 166 uint32_t layerCount; 167 const VkVideoEncodeRateControlLayerInfoKHR* pLayers; 168 uint32_t virtualBufferSizeInMs; 169 uint32_t initialVirtualBufferSizeInMs; 170 } VkVideoEncodeRateControlInfoKHR; 171 172 typedef struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR { 173 VkStructureType sType; 174 const void* pNext; 175 const VkVideoProfileInfoKHR* pVideoProfile; 176 uint32_t qualityLevel; 177 } VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR; 178 179 typedef struct VkVideoEncodeQualityLevelPropertiesKHR { 180 VkStructureType sType; 181 void* pNext; 182 VkVideoEncodeRateControlModeFlagBitsKHR preferredRateControlMode; 183 uint32_t preferredRateControlLayerCount; 184 } VkVideoEncodeQualityLevelPropertiesKHR; 185 186 typedef struct VkVideoEncodeQualityLevelInfoKHR { 187 VkStructureType sType; 188 const void* pNext; 189 uint32_t qualityLevel; 190 } VkVideoEncodeQualityLevelInfoKHR; 191 192 typedef struct VkVideoEncodeSessionParametersGetInfoKHR { 193 VkStructureType sType; 194 const void* pNext; 195 VkVideoSessionParametersKHR videoSessionParameters; 196 } VkVideoEncodeSessionParametersGetInfoKHR; 197 198 typedef struct VkVideoEncodeSessionParametersFeedbackInfoKHR { 199 VkStructureType sType; 200 void* pNext; 201 VkBool32 hasOverrides; 202 } VkVideoEncodeSessionParametersFeedbackInfoKHR; 203 204 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR* pQualityLevelInfo, VkVideoEncodeQualityLevelPropertiesKHR* pQualityLevelProperties); 205 typedef VkResult (VKAPI_PTR *PFN_vkGetEncodedVideoSessionParametersKHR)(VkDevice device, const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo, VkVideoEncodeSessionParametersFeedbackInfoKHR* pFeedbackInfo, size_t* pDataSize, void* pData); 206 typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo); 207 208 #ifndef VK_NO_PROTOTYPES 209 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR( 210 VkPhysicalDevice physicalDevice, 211 const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR* pQualityLevelInfo, 212 VkVideoEncodeQualityLevelPropertiesKHR* pQualityLevelProperties); 213 214 VKAPI_ATTR VkResult VKAPI_CALL vkGetEncodedVideoSessionParametersKHR( 215 VkDevice device, 216 const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo, 217 VkVideoEncodeSessionParametersFeedbackInfoKHR* pFeedbackInfo, 218 size_t* pDataSize, 219 void* pData); 220 221 VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR( 222 VkCommandBuffer commandBuffer, 223 const VkVideoEncodeInfoKHR* pEncodeInfo); 224 #endif 225 226 227 // VK_EXT_video_encode_h264 is a preprocessor guard. Do not pass it to API calls. 228 #define VK_EXT_video_encode_h264 1 229 #include "vk_video/vulkan_video_codec_h264std.h" 230 #include "vk_video/vulkan_video_codec_h264std_encode.h" 231 #define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 12 232 #define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264" 233 234 typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT { 235 VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000001, 236 VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_EXT = 0x00000002, 237 VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT = 0x00000004, 238 VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x00000008, 239 VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_EXT = 0x00000010, 240 VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x00000020, 241 VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_EXT = 0x00000040, 242 VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_EXT = 0x00000080, 243 VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_EXT = 0x00000100, 244 VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 245 } VkVideoEncodeH264CapabilityFlagBitsEXT; 246 typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT; 247 248 typedef enum VkVideoEncodeH264StdFlagBitsEXT { 249 VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_EXT = 0x00000001, 250 VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_EXT = 0x00000002, 251 VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_EXT = 0x00000004, 252 VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_EXT = 0x00000008, 253 VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_EXT = 0x00000010, 254 VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_EXT = 0x00000020, 255 VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_EXT = 0x00000040, 256 VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_EXT = 0x00000080, 257 VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_EXT = 0x00000100, 258 VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_EXT = 0x00000200, 259 VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_EXT = 0x00000400, 260 VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_EXT = 0x00000800, 261 VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_EXT = 0x00001000, 262 VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_EXT = 0x00002000, 263 VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_EXT = 0x00004000, 264 VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00008000, 265 VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00010000, 266 VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00020000, 267 VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_EXT = 0x00080000, 268 VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_EXT = 0x00100000, 269 VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 270 } VkVideoEncodeH264StdFlagBitsEXT; 271 typedef VkFlags VkVideoEncodeH264StdFlagsEXT; 272 273 typedef enum VkVideoEncodeH264RateControlFlagBitsEXT { 274 VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_EXT = 0x00000001, 275 VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_EXT = 0x00000002, 276 VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_EXT = 0x00000004, 277 VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_EXT = 0x00000008, 278 VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_EXT = 0x00000010, 279 VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 280 } VkVideoEncodeH264RateControlFlagBitsEXT; 281 typedef VkFlags VkVideoEncodeH264RateControlFlagsEXT; 282 typedef struct VkVideoEncodeH264CapabilitiesEXT { 283 VkStructureType sType; 284 void* pNext; 285 VkVideoEncodeH264CapabilityFlagsEXT flags; 286 StdVideoH264LevelIdc maxLevelIdc; 287 uint32_t maxSliceCount; 288 uint32_t maxPPictureL0ReferenceCount; 289 uint32_t maxBPictureL0ReferenceCount; 290 uint32_t maxL1ReferenceCount; 291 uint32_t maxTemporalLayerCount; 292 VkBool32 expectDyadicTemporalLayerPattern; 293 int32_t minQp; 294 int32_t maxQp; 295 VkBool32 prefersGopRemainingFrames; 296 VkBool32 requiresGopRemainingFrames; 297 VkVideoEncodeH264StdFlagsEXT stdSyntaxFlags; 298 } VkVideoEncodeH264CapabilitiesEXT; 299 300 typedef struct VkVideoEncodeH264QpEXT { 301 int32_t qpI; 302 int32_t qpP; 303 int32_t qpB; 304 } VkVideoEncodeH264QpEXT; 305 306 typedef struct VkVideoEncodeH264QualityLevelPropertiesEXT { 307 VkStructureType sType; 308 void* pNext; 309 VkVideoEncodeH264RateControlFlagsEXT preferredRateControlFlags; 310 uint32_t preferredGopFrameCount; 311 uint32_t preferredIdrPeriod; 312 uint32_t preferredConsecutiveBFrameCount; 313 uint32_t preferredTemporalLayerCount; 314 VkVideoEncodeH264QpEXT preferredConstantQp; 315 uint32_t preferredMaxL0ReferenceCount; 316 uint32_t preferredMaxL1ReferenceCount; 317 VkBool32 preferredStdEntropyCodingModeFlag; 318 } VkVideoEncodeH264QualityLevelPropertiesEXT; 319 320 typedef struct VkVideoEncodeH264SessionCreateInfoEXT { 321 VkStructureType sType; 322 const void* pNext; 323 VkBool32 useMaxLevelIdc; 324 StdVideoH264LevelIdc maxLevelIdc; 325 } VkVideoEncodeH264SessionCreateInfoEXT; 326 327 typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT { 328 VkStructureType sType; 329 const void* pNext; 330 uint32_t stdSPSCount; 331 const StdVideoH264SequenceParameterSet* pStdSPSs; 332 uint32_t stdPPSCount; 333 const StdVideoH264PictureParameterSet* pStdPPSs; 334 } VkVideoEncodeH264SessionParametersAddInfoEXT; 335 336 typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT { 337 VkStructureType sType; 338 const void* pNext; 339 uint32_t maxStdSPSCount; 340 uint32_t maxStdPPSCount; 341 const VkVideoEncodeH264SessionParametersAddInfoEXT* pParametersAddInfo; 342 } VkVideoEncodeH264SessionParametersCreateInfoEXT; 343 344 typedef struct VkVideoEncodeH264SessionParametersGetInfoEXT { 345 VkStructureType sType; 346 const void* pNext; 347 VkBool32 writeStdSPS; 348 VkBool32 writeStdPPS; 349 uint32_t stdSPSId; 350 uint32_t stdPPSId; 351 } VkVideoEncodeH264SessionParametersGetInfoEXT; 352 353 typedef struct VkVideoEncodeH264SessionParametersFeedbackInfoEXT { 354 VkStructureType sType; 355 void* pNext; 356 VkBool32 hasStdSPSOverrides; 357 VkBool32 hasStdPPSOverrides; 358 } VkVideoEncodeH264SessionParametersFeedbackInfoEXT; 359 360 typedef struct VkVideoEncodeH264NaluSliceInfoEXT { 361 VkStructureType sType; 362 const void* pNext; 363 int32_t constantQp; 364 const StdVideoEncodeH264SliceHeader* pStdSliceHeader; 365 } VkVideoEncodeH264NaluSliceInfoEXT; 366 367 typedef struct VkVideoEncodeH264PictureInfoEXT { 368 VkStructureType sType; 369 const void* pNext; 370 uint32_t naluSliceEntryCount; 371 const VkVideoEncodeH264NaluSliceInfoEXT* pNaluSliceEntries; 372 const StdVideoEncodeH264PictureInfo* pStdPictureInfo; 373 VkBool32 generatePrefixNalu; 374 } VkVideoEncodeH264PictureInfoEXT; 375 376 typedef struct VkVideoEncodeH264DpbSlotInfoEXT { 377 VkStructureType sType; 378 const void* pNext; 379 const StdVideoEncodeH264ReferenceInfo* pStdReferenceInfo; 380 } VkVideoEncodeH264DpbSlotInfoEXT; 381 382 typedef struct VkVideoEncodeH264ProfileInfoEXT { 383 VkStructureType sType; 384 const void* pNext; 385 StdVideoH264ProfileIdc stdProfileIdc; 386 } VkVideoEncodeH264ProfileInfoEXT; 387 388 typedef struct VkVideoEncodeH264RateControlInfoEXT { 389 VkStructureType sType; 390 const void* pNext; 391 VkVideoEncodeH264RateControlFlagsEXT flags; 392 uint32_t gopFrameCount; 393 uint32_t idrPeriod; 394 uint32_t consecutiveBFrameCount; 395 uint32_t temporalLayerCount; 396 } VkVideoEncodeH264RateControlInfoEXT; 397 398 typedef struct VkVideoEncodeH264FrameSizeEXT { 399 uint32_t frameISize; 400 uint32_t framePSize; 401 uint32_t frameBSize; 402 } VkVideoEncodeH264FrameSizeEXT; 403 404 typedef struct VkVideoEncodeH264RateControlLayerInfoEXT { 405 VkStructureType sType; 406 const void* pNext; 407 VkBool32 useMinQp; 408 VkVideoEncodeH264QpEXT minQp; 409 VkBool32 useMaxQp; 410 VkVideoEncodeH264QpEXT maxQp; 411 VkBool32 useMaxFrameSize; 412 VkVideoEncodeH264FrameSizeEXT maxFrameSize; 413 } VkVideoEncodeH264RateControlLayerInfoEXT; 414 415 typedef struct VkVideoEncodeH264GopRemainingFrameInfoEXT { 416 VkStructureType sType; 417 const void* pNext; 418 VkBool32 useGopRemainingFrames; 419 uint32_t gopRemainingI; 420 uint32_t gopRemainingP; 421 uint32_t gopRemainingB; 422 } VkVideoEncodeH264GopRemainingFrameInfoEXT; 423 424 425 426 // VK_EXT_video_encode_h265 is a preprocessor guard. Do not pass it to API calls. 427 #define VK_EXT_video_encode_h265 1 428 #include "vk_video/vulkan_video_codec_h265std.h" 429 #include "vk_video/vulkan_video_codec_h265std_encode.h" 430 #define VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION 12 431 #define VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_EXT_video_encode_h265" 432 433 typedef enum VkVideoEncodeH265CapabilityFlagBitsEXT { 434 VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000001, 435 VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_EXT = 0x00000002, 436 VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT = 0x00000004, 437 VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_EXT = 0x00000008, 438 VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_EXT = 0x00000010, 439 VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x00000020, 440 VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_EXT = 0x00000040, 441 VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_EXT = 0x00000080, 442 VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_EXT = 0x00000100, 443 VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_EXT = 0x00000200, 444 VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 445 } VkVideoEncodeH265CapabilityFlagBitsEXT; 446 typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT; 447 448 typedef enum VkVideoEncodeH265StdFlagBitsEXT { 449 VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_EXT = 0x00000001, 450 VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_EXT = 0x00000002, 451 VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_EXT = 0x00000004, 452 VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_EXT = 0x00000008, 453 VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_EXT = 0x00000010, 454 VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_EXT = 0x00000020, 455 VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_EXT = 0x00000040, 456 VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_EXT = 0x00000080, 457 VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT = 0x00000100, 458 VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_EXT = 0x00000200, 459 VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_EXT = 0x00000400, 460 VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_EXT = 0x00000800, 461 VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_EXT = 0x00001000, 462 VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_EXT = 0x00002000, 463 VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_EXT = 0x00004000, 464 VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_EXT = 0x00008000, 465 VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_EXT = 0x00010000, 466 VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_EXT = 0x00020000, 467 VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_EXT = 0x00040000, 468 VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_EXT = 0x00080000, 469 VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_EXT = 0x00100000, 470 VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 471 } VkVideoEncodeH265StdFlagBitsEXT; 472 typedef VkFlags VkVideoEncodeH265StdFlagsEXT; 473 474 typedef enum VkVideoEncodeH265CtbSizeFlagBitsEXT { 475 VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT = 0x00000001, 476 VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT = 0x00000002, 477 VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT = 0x00000004, 478 VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 479 } VkVideoEncodeH265CtbSizeFlagBitsEXT; 480 typedef VkFlags VkVideoEncodeH265CtbSizeFlagsEXT; 481 482 typedef enum VkVideoEncodeH265TransformBlockSizeFlagBitsEXT { 483 VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_EXT = 0x00000001, 484 VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_EXT = 0x00000002, 485 VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_EXT = 0x00000004, 486 VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_EXT = 0x00000008, 487 VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 488 } VkVideoEncodeH265TransformBlockSizeFlagBitsEXT; 489 typedef VkFlags VkVideoEncodeH265TransformBlockSizeFlagsEXT; 490 491 typedef enum VkVideoEncodeH265RateControlFlagBitsEXT { 492 VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_EXT = 0x00000001, 493 VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_EXT = 0x00000002, 494 VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_EXT = 0x00000004, 495 VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_EXT = 0x00000008, 496 VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_EXT = 0x00000010, 497 VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF 498 } VkVideoEncodeH265RateControlFlagBitsEXT; 499 typedef VkFlags VkVideoEncodeH265RateControlFlagsEXT; 500 typedef struct VkVideoEncodeH265CapabilitiesEXT { 501 VkStructureType sType; 502 void* pNext; 503 VkVideoEncodeH265CapabilityFlagsEXT flags; 504 StdVideoH265LevelIdc maxLevelIdc; 505 uint32_t maxSliceSegmentCount; 506 VkExtent2D maxTiles; 507 VkVideoEncodeH265CtbSizeFlagsEXT ctbSizes; 508 VkVideoEncodeH265TransformBlockSizeFlagsEXT transformBlockSizes; 509 uint32_t maxPPictureL0ReferenceCount; 510 uint32_t maxBPictureL0ReferenceCount; 511 uint32_t maxL1ReferenceCount; 512 uint32_t maxSubLayerCount; 513 VkBool32 expectDyadicTemporalSubLayerPattern; 514 int32_t minQp; 515 int32_t maxQp; 516 VkBool32 prefersGopRemainingFrames; 517 VkBool32 requiresGopRemainingFrames; 518 VkVideoEncodeH265StdFlagsEXT stdSyntaxFlags; 519 } VkVideoEncodeH265CapabilitiesEXT; 520 521 typedef struct VkVideoEncodeH265SessionCreateInfoEXT { 522 VkStructureType sType; 523 const void* pNext; 524 VkBool32 useMaxLevelIdc; 525 StdVideoH265LevelIdc maxLevelIdc; 526 } VkVideoEncodeH265SessionCreateInfoEXT; 527 528 typedef struct VkVideoEncodeH265QpEXT { 529 int32_t qpI; 530 int32_t qpP; 531 int32_t qpB; 532 } VkVideoEncodeH265QpEXT; 533 534 typedef struct VkVideoEncodeH265QualityLevelPropertiesEXT { 535 VkStructureType sType; 536 void* pNext; 537 VkVideoEncodeH265RateControlFlagsEXT preferredRateControlFlags; 538 uint32_t preferredGopFrameCount; 539 uint32_t preferredIdrPeriod; 540 uint32_t preferredConsecutiveBFrameCount; 541 uint32_t preferredSubLayerCount; 542 VkVideoEncodeH265QpEXT preferredConstantQp; 543 uint32_t preferredMaxL0ReferenceCount; 544 uint32_t preferredMaxL1ReferenceCount; 545 } VkVideoEncodeH265QualityLevelPropertiesEXT; 546 547 typedef struct VkVideoEncodeH265SessionParametersAddInfoEXT { 548 VkStructureType sType; 549 const void* pNext; 550 uint32_t stdVPSCount; 551 const StdVideoH265VideoParameterSet* pStdVPSs; 552 uint32_t stdSPSCount; 553 const StdVideoH265SequenceParameterSet* pStdSPSs; 554 uint32_t stdPPSCount; 555 const StdVideoH265PictureParameterSet* pStdPPSs; 556 } VkVideoEncodeH265SessionParametersAddInfoEXT; 557 558 typedef struct VkVideoEncodeH265SessionParametersCreateInfoEXT { 559 VkStructureType sType; 560 const void* pNext; 561 uint32_t maxStdVPSCount; 562 uint32_t maxStdSPSCount; 563 uint32_t maxStdPPSCount; 564 const VkVideoEncodeH265SessionParametersAddInfoEXT* pParametersAddInfo; 565 } VkVideoEncodeH265SessionParametersCreateInfoEXT; 566 567 typedef struct VkVideoEncodeH265SessionParametersGetInfoEXT { 568 VkStructureType sType; 569 const void* pNext; 570 VkBool32 writeStdVPS; 571 VkBool32 writeStdSPS; 572 VkBool32 writeStdPPS; 573 uint32_t stdVPSId; 574 uint32_t stdSPSId; 575 uint32_t stdPPSId; 576 } VkVideoEncodeH265SessionParametersGetInfoEXT; 577 578 typedef struct VkVideoEncodeH265SessionParametersFeedbackInfoEXT { 579 VkStructureType sType; 580 void* pNext; 581 VkBool32 hasStdVPSOverrides; 582 VkBool32 hasStdSPSOverrides; 583 VkBool32 hasStdPPSOverrides; 584 } VkVideoEncodeH265SessionParametersFeedbackInfoEXT; 585 586 typedef struct VkVideoEncodeH265NaluSliceSegmentInfoEXT { 587 VkStructureType sType; 588 const void* pNext; 589 int32_t constantQp; 590 const StdVideoEncodeH265SliceSegmentHeader* pStdSliceSegmentHeader; 591 } VkVideoEncodeH265NaluSliceSegmentInfoEXT; 592 593 typedef struct VkVideoEncodeH265PictureInfoEXT { 594 VkStructureType sType; 595 const void* pNext; 596 uint32_t naluSliceSegmentEntryCount; 597 const VkVideoEncodeH265NaluSliceSegmentInfoEXT* pNaluSliceSegmentEntries; 598 const StdVideoEncodeH265PictureInfo* pStdPictureInfo; 599 } VkVideoEncodeH265PictureInfoEXT; 600 601 typedef struct VkVideoEncodeH265DpbSlotInfoEXT { 602 VkStructureType sType; 603 const void* pNext; 604 const StdVideoEncodeH265ReferenceInfo* pStdReferenceInfo; 605 } VkVideoEncodeH265DpbSlotInfoEXT; 606 607 typedef struct VkVideoEncodeH265ProfileInfoEXT { 608 VkStructureType sType; 609 const void* pNext; 610 StdVideoH265ProfileIdc stdProfileIdc; 611 } VkVideoEncodeH265ProfileInfoEXT; 612 613 typedef struct VkVideoEncodeH265RateControlInfoEXT { 614 VkStructureType sType; 615 const void* pNext; 616 VkVideoEncodeH265RateControlFlagsEXT flags; 617 uint32_t gopFrameCount; 618 uint32_t idrPeriod; 619 uint32_t consecutiveBFrameCount; 620 uint32_t subLayerCount; 621 } VkVideoEncodeH265RateControlInfoEXT; 622 623 typedef struct VkVideoEncodeH265FrameSizeEXT { 624 uint32_t frameISize; 625 uint32_t framePSize; 626 uint32_t frameBSize; 627 } VkVideoEncodeH265FrameSizeEXT; 628 629 typedef struct VkVideoEncodeH265RateControlLayerInfoEXT { 630 VkStructureType sType; 631 const void* pNext; 632 VkBool32 useMinQp; 633 VkVideoEncodeH265QpEXT minQp; 634 VkBool32 useMaxQp; 635 VkVideoEncodeH265QpEXT maxQp; 636 VkBool32 useMaxFrameSize; 637 VkVideoEncodeH265FrameSizeEXT maxFrameSize; 638 } VkVideoEncodeH265RateControlLayerInfoEXT; 639 640 typedef struct VkVideoEncodeH265GopRemainingFrameInfoEXT { 641 VkStructureType sType; 642 const void* pNext; 643 VkBool32 useGopRemainingFrames; 644 uint32_t gopRemainingI; 645 uint32_t gopRemainingP; 646 uint32_t gopRemainingB; 647 } VkVideoEncodeH265GopRemainingFrameInfoEXT; 648 649 650 651 // VK_AMDX_shader_enqueue is a preprocessor guard. Do not pass it to API calls. 652 #define VK_AMDX_shader_enqueue 1 653 #define VK_AMDX_SHADER_ENQUEUE_SPEC_VERSION 1 654 #define VK_AMDX_SHADER_ENQUEUE_EXTENSION_NAME "VK_AMDX_shader_enqueue" 655 #define VK_SHADER_INDEX_UNUSED_AMDX (~0U) 656 typedef struct VkPhysicalDeviceShaderEnqueueFeaturesAMDX { 657 VkStructureType sType; 658 void* pNext; 659 VkBool32 shaderEnqueue; 660 } VkPhysicalDeviceShaderEnqueueFeaturesAMDX; 661 662 typedef struct VkPhysicalDeviceShaderEnqueuePropertiesAMDX { 663 VkStructureType sType; 664 void* pNext; 665 uint32_t maxExecutionGraphDepth; 666 uint32_t maxExecutionGraphShaderOutputNodes; 667 uint32_t maxExecutionGraphShaderPayloadSize; 668 uint32_t maxExecutionGraphShaderPayloadCount; 669 uint32_t executionGraphDispatchAddressAlignment; 670 } VkPhysicalDeviceShaderEnqueuePropertiesAMDX; 671 672 typedef struct VkExecutionGraphPipelineScratchSizeAMDX { 673 VkStructureType sType; 674 void* pNext; 675 VkDeviceSize size; 676 } VkExecutionGraphPipelineScratchSizeAMDX; 677 678 typedef struct VkExecutionGraphPipelineCreateInfoAMDX { 679 VkStructureType sType; 680 const void* pNext; 681 VkPipelineCreateFlags flags; 682 uint32_t stageCount; 683 const VkPipelineShaderStageCreateInfo* pStages; 684 const VkPipelineLibraryCreateInfoKHR* pLibraryInfo; 685 VkPipelineLayout layout; 686 VkPipeline basePipelineHandle; 687 int32_t basePipelineIndex; 688 } VkExecutionGraphPipelineCreateInfoAMDX; 689 690 typedef union VkDeviceOrHostAddressConstAMDX { 691 VkDeviceAddress deviceAddress; 692 const void* hostAddress; 693 } VkDeviceOrHostAddressConstAMDX; 694 695 typedef struct VkDispatchGraphInfoAMDX { 696 uint32_t nodeIndex; 697 uint32_t payloadCount; 698 VkDeviceOrHostAddressConstAMDX payloads; 699 uint64_t payloadStride; 700 } VkDispatchGraphInfoAMDX; 701 702 typedef struct VkDispatchGraphCountInfoAMDX { 703 uint32_t count; 704 VkDeviceOrHostAddressConstAMDX infos; 705 uint64_t stride; 706 } VkDispatchGraphCountInfoAMDX; 707 708 typedef struct VkPipelineShaderStageNodeCreateInfoAMDX { 709 VkStructureType sType; 710 const void* pNext; 711 const char* pName; 712 uint32_t index; 713 } VkPipelineShaderStageNodeCreateInfoAMDX; 714 715 typedef VkResult (VKAPI_PTR *PFN_vkCreateExecutionGraphPipelinesAMDX)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); 716 typedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineScratchSizeAMDX)(VkDevice device, VkPipeline executionGraph, VkExecutionGraphPipelineScratchSizeAMDX* pSizeInfo); 717 typedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineNodeIndexAMDX)(VkDevice device, VkPipeline executionGraph, const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo, uint32_t* pNodeIndex); 718 typedef void (VKAPI_PTR *PFN_vkCmdInitializeGraphScratchMemoryAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch); 719 typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, const VkDispatchGraphCountInfoAMDX* pCountInfo); 720 typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, const VkDispatchGraphCountInfoAMDX* pCountInfo); 721 typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectCountAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, VkDeviceAddress countInfo); 722 723 #ifndef VK_NO_PROTOTYPES 724 VKAPI_ATTR VkResult VKAPI_CALL vkCreateExecutionGraphPipelinesAMDX( 725 VkDevice device, 726 VkPipelineCache pipelineCache, 727 uint32_t createInfoCount, 728 const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos, 729 const VkAllocationCallbacks* pAllocator, 730 VkPipeline* pPipelines); 731 732 VKAPI_ATTR VkResult VKAPI_CALL vkGetExecutionGraphPipelineScratchSizeAMDX( 733 VkDevice device, 734 VkPipeline executionGraph, 735 VkExecutionGraphPipelineScratchSizeAMDX* pSizeInfo); 736 737 VKAPI_ATTR VkResult VKAPI_CALL vkGetExecutionGraphPipelineNodeIndexAMDX( 738 VkDevice device, 739 VkPipeline executionGraph, 740 const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo, 741 uint32_t* pNodeIndex); 742 743 VKAPI_ATTR void VKAPI_CALL vkCmdInitializeGraphScratchMemoryAMDX( 744 VkCommandBuffer commandBuffer, 745 VkDeviceAddress scratch); 746 747 VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphAMDX( 748 VkCommandBuffer commandBuffer, 749 VkDeviceAddress scratch, 750 const VkDispatchGraphCountInfoAMDX* pCountInfo); 751 752 VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectAMDX( 753 VkCommandBuffer commandBuffer, 754 VkDeviceAddress scratch, 755 const VkDispatchGraphCountInfoAMDX* pCountInfo); 756 757 VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectCountAMDX( 758 VkCommandBuffer commandBuffer, 759 VkDeviceAddress scratch, 760 VkDeviceAddress countInfo); 761 #endif 762 763 764 // VK_NV_displacement_micromap is a preprocessor guard. Do not pass it to API calls. 765 #define VK_NV_displacement_micromap 1 766 #define VK_NV_DISPLACEMENT_MICROMAP_SPEC_VERSION 2 767 #define VK_NV_DISPLACEMENT_MICROMAP_EXTENSION_NAME "VK_NV_displacement_micromap" 768 769 typedef enum VkDisplacementMicromapFormatNV { 770 VK_DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV = 1, 771 VK_DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV = 2, 772 VK_DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV = 3, 773 VK_DISPLACEMENT_MICROMAP_FORMAT_MAX_ENUM_NV = 0x7FFFFFFF 774 } VkDisplacementMicromapFormatNV; 775 typedef struct VkPhysicalDeviceDisplacementMicromapFeaturesNV { 776 VkStructureType sType; 777 void* pNext; 778 VkBool32 displacementMicromap; 779 } VkPhysicalDeviceDisplacementMicromapFeaturesNV; 780 781 typedef struct VkPhysicalDeviceDisplacementMicromapPropertiesNV { 782 VkStructureType sType; 783 void* pNext; 784 uint32_t maxDisplacementMicromapSubdivisionLevel; 785 } VkPhysicalDeviceDisplacementMicromapPropertiesNV; 786 787 typedef struct VkAccelerationStructureTrianglesDisplacementMicromapNV { 788 VkStructureType sType; 789 void* pNext; 790 VkFormat displacementBiasAndScaleFormat; 791 VkFormat displacementVectorFormat; 792 VkDeviceOrHostAddressConstKHR displacementBiasAndScaleBuffer; 793 VkDeviceSize displacementBiasAndScaleStride; 794 VkDeviceOrHostAddressConstKHR displacementVectorBuffer; 795 VkDeviceSize displacementVectorStride; 796 VkDeviceOrHostAddressConstKHR displacedMicromapPrimitiveFlags; 797 VkDeviceSize displacedMicromapPrimitiveFlagsStride; 798 VkIndexType indexType; 799 VkDeviceOrHostAddressConstKHR indexBuffer; 800 VkDeviceSize indexStride; 801 uint32_t baseTriangle; 802 uint32_t usageCountsCount; 803 const VkMicromapUsageEXT* pUsageCounts; 804 const VkMicromapUsageEXT* const* ppUsageCounts; 805 VkMicromapEXT micromap; 806 } VkAccelerationStructureTrianglesDisplacementMicromapNV; 807 808 809 #ifdef __cplusplus 810 } 811 #endif 812 813 #endif 814