| #ifndef VULKAN_BETA_H_ |
| #define VULKAN_BETA_H_ 1 |
| |
| /* |
| ** Copyright 2015-2023 The Khronos Group Inc. |
| ** |
| ** SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /* |
| ** This header is generated from the Khronos Vulkan XML API Registry. |
| ** |
| */ |
| |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| |
| |
| // VK_KHR_portability_subset is a preprocessor guard. Do not pass it to API calls. |
| #define VK_KHR_portability_subset 1 |
| #define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1 |
| #define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset" |
| typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR { |
| VkStructureType sType; |
| void* pNext; |
| VkBool32 constantAlphaColorBlendFactors; |
| VkBool32 events; |
| VkBool32 imageViewFormatReinterpretation; |
| VkBool32 imageViewFormatSwizzle; |
| VkBool32 imageView2DOn3DImage; |
| VkBool32 multisampleArrayImage; |
| VkBool32 mutableComparisonSamplers; |
| VkBool32 pointPolygons; |
| VkBool32 samplerMipLodBias; |
| VkBool32 separateStencilMaskRef; |
| VkBool32 shaderSampleRateInterpolationFunctions; |
| VkBool32 tessellationIsolines; |
| VkBool32 tessellationPointMode; |
| VkBool32 triangleFans; |
| VkBool32 vertexAttributeAccessBeyondStride; |
| } VkPhysicalDevicePortabilitySubsetFeaturesKHR; |
| |
| typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR { |
| VkStructureType sType; |
| void* pNext; |
| uint32_t minVertexInputBindingStrideAlignment; |
| } VkPhysicalDevicePortabilitySubsetPropertiesKHR; |
| |
| |
| |
| // VK_KHR_video_encode_queue is a preprocessor guard. Do not pass it to API calls. |
| #define VK_KHR_video_encode_queue 1 |
| #define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 10 |
| #define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue" |
| |
| typedef enum VkVideoEncodeTuningModeKHR { |
| VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0, |
| VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1, |
| VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2, |
| VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3, |
| VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4, |
| VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 0x7FFFFFFF |
| } VkVideoEncodeTuningModeKHR; |
| typedef VkFlags VkVideoEncodeFlagsKHR; |
| |
| typedef enum VkVideoEncodeCapabilityFlagBitsKHR { |
| VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 0x00000001, |
| VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 0x00000002, |
| VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF |
| } VkVideoEncodeCapabilityFlagBitsKHR; |
| typedef VkFlags VkVideoEncodeCapabilityFlagsKHR; |
| |
| typedef enum VkVideoEncodeRateControlModeFlagBitsKHR { |
| VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0, |
| VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 0x00000001, |
| VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 0x00000002, |
| VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 0x00000004, |
| VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF |
| } VkVideoEncodeRateControlModeFlagBitsKHR; |
| typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR; |
| |
| typedef enum VkVideoEncodeFeedbackFlagBitsKHR { |
| VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 0x00000001, |
| VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 0x00000002, |
| VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 0x00000004, |
| VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF |
| } VkVideoEncodeFeedbackFlagBitsKHR; |
| typedef VkFlags VkVideoEncodeFeedbackFlagsKHR; |
| |
| typedef enum VkVideoEncodeUsageFlagBitsKHR { |
| VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0, |
| VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 0x00000001, |
| VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 0x00000002, |
| VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 0x00000004, |
| VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 0x00000008, |
| VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF |
| } VkVideoEncodeUsageFlagBitsKHR; |
| typedef VkFlags VkVideoEncodeUsageFlagsKHR; |
| |
| typedef enum VkVideoEncodeContentFlagBitsKHR { |
| VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0, |
| VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 0x00000001, |
| VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 0x00000002, |
| VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 0x00000004, |
| VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF |
| } VkVideoEncodeContentFlagBitsKHR; |
| typedef VkFlags VkVideoEncodeContentFlagsKHR; |
| typedef VkFlags VkVideoEncodeRateControlFlagsKHR; |
| typedef struct VkVideoEncodeInfoKHR { |
| VkStructureType sType; |
| const void* pNext; |
| VkVideoEncodeFlagsKHR flags; |
| VkBuffer dstBuffer; |
| VkDeviceSize dstBufferOffset; |
| VkDeviceSize dstBufferRange; |
| VkVideoPictureResourceInfoKHR srcPictureResource; |
| const VkVideoReferenceSlotInfoKHR* pSetupReferenceSlot; |
| uint32_t referenceSlotCount; |
| const VkVideoReferenceSlotInfoKHR* pReferenceSlots; |
| uint32_t precedingExternallyEncodedBytes; |
| } VkVideoEncodeInfoKHR; |
| |
| typedef struct VkVideoEncodeCapabilitiesKHR { |
| VkStructureType sType; |
| void* pNext; |
| VkVideoEncodeCapabilityFlagsKHR flags; |
| VkVideoEncodeRateControlModeFlagsKHR rateControlModes; |
| uint32_t maxRateControlLayers; |
| uint64_t maxBitrate; |
| uint32_t maxQualityLevels; |
| VkExtent2D encodeInputPictureGranularity; |
| VkVideoEncodeFeedbackFlagsKHR supportedEncodeFeedbackFlags; |
| } VkVideoEncodeCapabilitiesKHR; |
| |
| typedef struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR { |
| VkStructureType sType; |
| const void* pNext; |
| VkVideoEncodeFeedbackFlagsKHR encodeFeedbackFlags; |
| } VkQueryPoolVideoEncodeFeedbackCreateInfoKHR; |
| |
| typedef struct VkVideoEncodeUsageInfoKHR { |
| VkStructureType sType; |
| const void* pNext; |
| VkVideoEncodeUsageFlagsKHR videoUsageHints; |
| VkVideoEncodeContentFlagsKHR videoContentHints; |
| VkVideoEncodeTuningModeKHR tuningMode; |
| } VkVideoEncodeUsageInfoKHR; |
| |
| typedef struct VkVideoEncodeRateControlLayerInfoKHR { |
| VkStructureType sType; |
| const void* pNext; |
| uint64_t averageBitrate; |
| uint64_t maxBitrate; |
| uint32_t frameRateNumerator; |
| uint32_t frameRateDenominator; |
| } VkVideoEncodeRateControlLayerInfoKHR; |
| |
| typedef struct VkVideoEncodeRateControlInfoKHR { |
| VkStructureType sType; |
| const void* pNext; |
| VkVideoEncodeRateControlFlagsKHR flags; |
| VkVideoEncodeRateControlModeFlagBitsKHR rateControlMode; |
| uint32_t layerCount; |
| const VkVideoEncodeRateControlLayerInfoKHR* pLayers; |
| uint32_t virtualBufferSizeInMs; |
| uint32_t initialVirtualBufferSizeInMs; |
| } VkVideoEncodeRateControlInfoKHR; |
| |
| typedef struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR { |
| VkStructureType sType; |
| const void* pNext; |
| const VkVideoProfileInfoKHR* pVideoProfile; |
| uint32_t qualityLevel; |
| } VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR; |
| |
| typedef struct VkVideoEncodeQualityLevelPropertiesKHR { |
| VkStructureType sType; |
| void* pNext; |
| VkVideoEncodeRateControlModeFlagBitsKHR preferredRateControlMode; |
| uint32_t preferredRateControlLayerCount; |
| } VkVideoEncodeQualityLevelPropertiesKHR; |
| |
| typedef struct VkVideoEncodeQualityLevelInfoKHR { |
| VkStructureType sType; |
| const void* pNext; |
| uint32_t qualityLevel; |
| } VkVideoEncodeQualityLevelInfoKHR; |
| |
| typedef struct VkVideoEncodeSessionParametersGetInfoKHR { |
| VkStructureType sType; |
| const void* pNext; |
| VkVideoSessionParametersKHR videoSessionParameters; |
| } VkVideoEncodeSessionParametersGetInfoKHR; |
| |
| typedef struct VkVideoEncodeSessionParametersFeedbackInfoKHR { |
| VkStructureType sType; |
| void* pNext; |
| VkBool32 hasOverrides; |
| } VkVideoEncodeSessionParametersFeedbackInfoKHR; |
| |
| typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR* pQualityLevelInfo, VkVideoEncodeQualityLevelPropertiesKHR* pQualityLevelProperties); |
| typedef VkResult (VKAPI_PTR *PFN_vkGetEncodedVideoSessionParametersKHR)(VkDevice device, const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo, VkVideoEncodeSessionParametersFeedbackInfoKHR* pFeedbackInfo, size_t* pDataSize, void* pData); |
| typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo); |
| |
| #ifndef VK_NO_PROTOTYPES |
| VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR( |
| VkPhysicalDevice physicalDevice, |
| const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR* pQualityLevelInfo, |
| VkVideoEncodeQualityLevelPropertiesKHR* pQualityLevelProperties); |
| |
| VKAPI_ATTR VkResult VKAPI_CALL vkGetEncodedVideoSessionParametersKHR( |
| VkDevice device, |
| const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo, |
| VkVideoEncodeSessionParametersFeedbackInfoKHR* pFeedbackInfo, |
| size_t* pDataSize, |
| void* pData); |
| |
| VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR( |
| VkCommandBuffer commandBuffer, |
| const VkVideoEncodeInfoKHR* pEncodeInfo); |
| #endif |
| |
| |
| // VK_EXT_video_encode_h264 is a preprocessor guard. Do not pass it to API calls. |
| #define VK_EXT_video_encode_h264 1 |
| #include "vk_video/vulkan_video_codec_h264std.h" |
| #include "vk_video/vulkan_video_codec_h264std_encode.h" |
| #define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 12 |
| #define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264" |
| |
| typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT { |
| VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000001, |
| VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_EXT = 0x00000002, |
| VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT = 0x00000004, |
| VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x00000008, |
| VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_EXT = 0x00000010, |
| VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x00000020, |
| VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_EXT = 0x00000040, |
| VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_EXT = 0x00000080, |
| VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_EXT = 0x00000100, |
| VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF |
| } VkVideoEncodeH264CapabilityFlagBitsEXT; |
| typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT; |
| |
| typedef enum VkVideoEncodeH264StdFlagBitsEXT { |
| VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_EXT = 0x00000001, |
| VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_EXT = 0x00000002, |
| VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_EXT = 0x00000004, |
| VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_EXT = 0x00000008, |
| VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_EXT = 0x00000010, |
| VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_EXT = 0x00000020, |
| VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_EXT = 0x00000040, |
| VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_EXT = 0x00000080, |
| VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_EXT = 0x00000100, |
| VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_EXT = 0x00000200, |
| VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_EXT = 0x00000400, |
| VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_EXT = 0x00000800, |
| VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_EXT = 0x00001000, |
| VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_EXT = 0x00002000, |
| VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_EXT = 0x00004000, |
| VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00008000, |
| VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00010000, |
| VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00020000, |
| VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_EXT = 0x00080000, |
| VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_EXT = 0x00100000, |
| VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF |
| } VkVideoEncodeH264StdFlagBitsEXT; |
| typedef VkFlags VkVideoEncodeH264StdFlagsEXT; |
| |
| typedef enum VkVideoEncodeH264RateControlFlagBitsEXT { |
| VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_EXT = 0x00000001, |
| VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_EXT = 0x00000002, |
| VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_EXT = 0x00000004, |
| VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_EXT = 0x00000008, |
| VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_EXT = 0x00000010, |
| VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF |
| } VkVideoEncodeH264RateControlFlagBitsEXT; |
| typedef VkFlags VkVideoEncodeH264RateControlFlagsEXT; |
| typedef struct VkVideoEncodeH264CapabilitiesEXT { |
| VkStructureType sType; |
| void* pNext; |
| VkVideoEncodeH264CapabilityFlagsEXT flags; |
| StdVideoH264LevelIdc maxLevelIdc; |
| uint32_t maxSliceCount; |
| uint32_t maxPPictureL0ReferenceCount; |
| uint32_t maxBPictureL0ReferenceCount; |
| uint32_t maxL1ReferenceCount; |
| uint32_t maxTemporalLayerCount; |
| VkBool32 expectDyadicTemporalLayerPattern; |
| int32_t minQp; |
| int32_t maxQp; |
| VkBool32 prefersGopRemainingFrames; |
| VkBool32 requiresGopRemainingFrames; |
| VkVideoEncodeH264StdFlagsEXT stdSyntaxFlags; |
| } VkVideoEncodeH264CapabilitiesEXT; |
| |
| typedef struct VkVideoEncodeH264QpEXT { |
| int32_t qpI; |
| int32_t qpP; |
| int32_t qpB; |
| } VkVideoEncodeH264QpEXT; |
| |
| typedef struct VkVideoEncodeH264QualityLevelPropertiesEXT { |
| VkStructureType sType; |
| void* pNext; |
| VkVideoEncodeH264RateControlFlagsEXT preferredRateControlFlags; |
| uint32_t preferredGopFrameCount; |
| uint32_t preferredIdrPeriod; |
| uint32_t preferredConsecutiveBFrameCount; |
| uint32_t preferredTemporalLayerCount; |
| VkVideoEncodeH264QpEXT preferredConstantQp; |
| uint32_t preferredMaxL0ReferenceCount; |
| uint32_t preferredMaxL1ReferenceCount; |
| VkBool32 preferredStdEntropyCodingModeFlag; |
| } VkVideoEncodeH264QualityLevelPropertiesEXT; |
| |
| typedef struct VkVideoEncodeH264SessionCreateInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| VkBool32 useMaxLevelIdc; |
| StdVideoH264LevelIdc maxLevelIdc; |
| } VkVideoEncodeH264SessionCreateInfoEXT; |
| |
| typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| uint32_t stdSPSCount; |
| const StdVideoH264SequenceParameterSet* pStdSPSs; |
| uint32_t stdPPSCount; |
| const StdVideoH264PictureParameterSet* pStdPPSs; |
| } VkVideoEncodeH264SessionParametersAddInfoEXT; |
| |
| typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| uint32_t maxStdSPSCount; |
| uint32_t maxStdPPSCount; |
| const VkVideoEncodeH264SessionParametersAddInfoEXT* pParametersAddInfo; |
| } VkVideoEncodeH264SessionParametersCreateInfoEXT; |
| |
| typedef struct VkVideoEncodeH264SessionParametersGetInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| VkBool32 writeStdSPS; |
| VkBool32 writeStdPPS; |
| uint32_t stdSPSId; |
| uint32_t stdPPSId; |
| } VkVideoEncodeH264SessionParametersGetInfoEXT; |
| |
| typedef struct VkVideoEncodeH264SessionParametersFeedbackInfoEXT { |
| VkStructureType sType; |
| void* pNext; |
| VkBool32 hasStdSPSOverrides; |
| VkBool32 hasStdPPSOverrides; |
| } VkVideoEncodeH264SessionParametersFeedbackInfoEXT; |
| |
| typedef struct VkVideoEncodeH264NaluSliceInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| int32_t constantQp; |
| const StdVideoEncodeH264SliceHeader* pStdSliceHeader; |
| } VkVideoEncodeH264NaluSliceInfoEXT; |
| |
| typedef struct VkVideoEncodeH264PictureInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| uint32_t naluSliceEntryCount; |
| const VkVideoEncodeH264NaluSliceInfoEXT* pNaluSliceEntries; |
| const StdVideoEncodeH264PictureInfo* pStdPictureInfo; |
| VkBool32 generatePrefixNalu; |
| } VkVideoEncodeH264PictureInfoEXT; |
| |
| typedef struct VkVideoEncodeH264DpbSlotInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| const StdVideoEncodeH264ReferenceInfo* pStdReferenceInfo; |
| } VkVideoEncodeH264DpbSlotInfoEXT; |
| |
| typedef struct VkVideoEncodeH264ProfileInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| StdVideoH264ProfileIdc stdProfileIdc; |
| } VkVideoEncodeH264ProfileInfoEXT; |
| |
| typedef struct VkVideoEncodeH264RateControlInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| VkVideoEncodeH264RateControlFlagsEXT flags; |
| uint32_t gopFrameCount; |
| uint32_t idrPeriod; |
| uint32_t consecutiveBFrameCount; |
| uint32_t temporalLayerCount; |
| } VkVideoEncodeH264RateControlInfoEXT; |
| |
| typedef struct VkVideoEncodeH264FrameSizeEXT { |
| uint32_t frameISize; |
| uint32_t framePSize; |
| uint32_t frameBSize; |
| } VkVideoEncodeH264FrameSizeEXT; |
| |
| typedef struct VkVideoEncodeH264RateControlLayerInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| VkBool32 useMinQp; |
| VkVideoEncodeH264QpEXT minQp; |
| VkBool32 useMaxQp; |
| VkVideoEncodeH264QpEXT maxQp; |
| VkBool32 useMaxFrameSize; |
| VkVideoEncodeH264FrameSizeEXT maxFrameSize; |
| } VkVideoEncodeH264RateControlLayerInfoEXT; |
| |
| typedef struct VkVideoEncodeH264GopRemainingFrameInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| VkBool32 useGopRemainingFrames; |
| uint32_t gopRemainingI; |
| uint32_t gopRemainingP; |
| uint32_t gopRemainingB; |
| } VkVideoEncodeH264GopRemainingFrameInfoEXT; |
| |
| |
| |
| // VK_EXT_video_encode_h265 is a preprocessor guard. Do not pass it to API calls. |
| #define VK_EXT_video_encode_h265 1 |
| #include "vk_video/vulkan_video_codec_h265std.h" |
| #include "vk_video/vulkan_video_codec_h265std_encode.h" |
| #define VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION 12 |
| #define VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_EXT_video_encode_h265" |
| |
| typedef enum VkVideoEncodeH265CapabilityFlagBitsEXT { |
| VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000001, |
| VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_EXT = 0x00000002, |
| VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT = 0x00000004, |
| VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_EXT = 0x00000008, |
| VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_EXT = 0x00000010, |
| VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x00000020, |
| VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_EXT = 0x00000040, |
| VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_EXT = 0x00000080, |
| VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_EXT = 0x00000100, |
| VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_EXT = 0x00000200, |
| VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF |
| } VkVideoEncodeH265CapabilityFlagBitsEXT; |
| typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT; |
| |
| typedef enum VkVideoEncodeH265StdFlagBitsEXT { |
| VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_EXT = 0x00000001, |
| VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_EXT = 0x00000002, |
| VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_EXT = 0x00000004, |
| VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_EXT = 0x00000008, |
| VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_EXT = 0x00000010, |
| VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_EXT = 0x00000020, |
| VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_EXT = 0x00000040, |
| VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_EXT = 0x00000080, |
| VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT = 0x00000100, |
| VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_EXT = 0x00000200, |
| VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_EXT = 0x00000400, |
| VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_EXT = 0x00000800, |
| VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_EXT = 0x00001000, |
| VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_EXT = 0x00002000, |
| VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_EXT = 0x00004000, |
| VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_EXT = 0x00008000, |
| VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_EXT = 0x00010000, |
| VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_EXT = 0x00020000, |
| VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_EXT = 0x00040000, |
| VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_EXT = 0x00080000, |
| VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_EXT = 0x00100000, |
| VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF |
| } VkVideoEncodeH265StdFlagBitsEXT; |
| typedef VkFlags VkVideoEncodeH265StdFlagsEXT; |
| |
| typedef enum VkVideoEncodeH265CtbSizeFlagBitsEXT { |
| VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT = 0x00000001, |
| VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT = 0x00000002, |
| VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT = 0x00000004, |
| VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF |
| } VkVideoEncodeH265CtbSizeFlagBitsEXT; |
| typedef VkFlags VkVideoEncodeH265CtbSizeFlagsEXT; |
| |
| typedef enum VkVideoEncodeH265TransformBlockSizeFlagBitsEXT { |
| VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_EXT = 0x00000001, |
| VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_EXT = 0x00000002, |
| VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_EXT = 0x00000004, |
| VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_EXT = 0x00000008, |
| VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF |
| } VkVideoEncodeH265TransformBlockSizeFlagBitsEXT; |
| typedef VkFlags VkVideoEncodeH265TransformBlockSizeFlagsEXT; |
| |
| typedef enum VkVideoEncodeH265RateControlFlagBitsEXT { |
| VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_EXT = 0x00000001, |
| VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_EXT = 0x00000002, |
| VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_EXT = 0x00000004, |
| VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_EXT = 0x00000008, |
| VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_EXT = 0x00000010, |
| VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF |
| } VkVideoEncodeH265RateControlFlagBitsEXT; |
| typedef VkFlags VkVideoEncodeH265RateControlFlagsEXT; |
| typedef struct VkVideoEncodeH265CapabilitiesEXT { |
| VkStructureType sType; |
| void* pNext; |
| VkVideoEncodeH265CapabilityFlagsEXT flags; |
| StdVideoH265LevelIdc maxLevelIdc; |
| uint32_t maxSliceSegmentCount; |
| VkExtent2D maxTiles; |
| VkVideoEncodeH265CtbSizeFlagsEXT ctbSizes; |
| VkVideoEncodeH265TransformBlockSizeFlagsEXT transformBlockSizes; |
| uint32_t maxPPictureL0ReferenceCount; |
| uint32_t maxBPictureL0ReferenceCount; |
| uint32_t maxL1ReferenceCount; |
| uint32_t maxSubLayerCount; |
| VkBool32 expectDyadicTemporalSubLayerPattern; |
| int32_t minQp; |
| int32_t maxQp; |
| VkBool32 prefersGopRemainingFrames; |
| VkBool32 requiresGopRemainingFrames; |
| VkVideoEncodeH265StdFlagsEXT stdSyntaxFlags; |
| } VkVideoEncodeH265CapabilitiesEXT; |
| |
| typedef struct VkVideoEncodeH265SessionCreateInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| VkBool32 useMaxLevelIdc; |
| StdVideoH265LevelIdc maxLevelIdc; |
| } VkVideoEncodeH265SessionCreateInfoEXT; |
| |
| typedef struct VkVideoEncodeH265QpEXT { |
| int32_t qpI; |
| int32_t qpP; |
| int32_t qpB; |
| } VkVideoEncodeH265QpEXT; |
| |
| typedef struct VkVideoEncodeH265QualityLevelPropertiesEXT { |
| VkStructureType sType; |
| void* pNext; |
| VkVideoEncodeH265RateControlFlagsEXT preferredRateControlFlags; |
| uint32_t preferredGopFrameCount; |
| uint32_t preferredIdrPeriod; |
| uint32_t preferredConsecutiveBFrameCount; |
| uint32_t preferredSubLayerCount; |
| VkVideoEncodeH265QpEXT preferredConstantQp; |
| uint32_t preferredMaxL0ReferenceCount; |
| uint32_t preferredMaxL1ReferenceCount; |
| } VkVideoEncodeH265QualityLevelPropertiesEXT; |
| |
| typedef struct VkVideoEncodeH265SessionParametersAddInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| uint32_t stdVPSCount; |
| const StdVideoH265VideoParameterSet* pStdVPSs; |
| uint32_t stdSPSCount; |
| const StdVideoH265SequenceParameterSet* pStdSPSs; |
| uint32_t stdPPSCount; |
| const StdVideoH265PictureParameterSet* pStdPPSs; |
| } VkVideoEncodeH265SessionParametersAddInfoEXT; |
| |
| typedef struct VkVideoEncodeH265SessionParametersCreateInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| uint32_t maxStdVPSCount; |
| uint32_t maxStdSPSCount; |
| uint32_t maxStdPPSCount; |
| const VkVideoEncodeH265SessionParametersAddInfoEXT* pParametersAddInfo; |
| } VkVideoEncodeH265SessionParametersCreateInfoEXT; |
| |
| typedef struct VkVideoEncodeH265SessionParametersGetInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| VkBool32 writeStdVPS; |
| VkBool32 writeStdSPS; |
| VkBool32 writeStdPPS; |
| uint32_t stdVPSId; |
| uint32_t stdSPSId; |
| uint32_t stdPPSId; |
| } VkVideoEncodeH265SessionParametersGetInfoEXT; |
| |
| typedef struct VkVideoEncodeH265SessionParametersFeedbackInfoEXT { |
| VkStructureType sType; |
| void* pNext; |
| VkBool32 hasStdVPSOverrides; |
| VkBool32 hasStdSPSOverrides; |
| VkBool32 hasStdPPSOverrides; |
| } VkVideoEncodeH265SessionParametersFeedbackInfoEXT; |
| |
| typedef struct VkVideoEncodeH265NaluSliceSegmentInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| int32_t constantQp; |
| const StdVideoEncodeH265SliceSegmentHeader* pStdSliceSegmentHeader; |
| } VkVideoEncodeH265NaluSliceSegmentInfoEXT; |
| |
| typedef struct VkVideoEncodeH265PictureInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| uint32_t naluSliceSegmentEntryCount; |
| const VkVideoEncodeH265NaluSliceSegmentInfoEXT* pNaluSliceSegmentEntries; |
| const StdVideoEncodeH265PictureInfo* pStdPictureInfo; |
| } VkVideoEncodeH265PictureInfoEXT; |
| |
| typedef struct VkVideoEncodeH265DpbSlotInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| const StdVideoEncodeH265ReferenceInfo* pStdReferenceInfo; |
| } VkVideoEncodeH265DpbSlotInfoEXT; |
| |
| typedef struct VkVideoEncodeH265ProfileInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| StdVideoH265ProfileIdc stdProfileIdc; |
| } VkVideoEncodeH265ProfileInfoEXT; |
| |
| typedef struct VkVideoEncodeH265RateControlInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| VkVideoEncodeH265RateControlFlagsEXT flags; |
| uint32_t gopFrameCount; |
| uint32_t idrPeriod; |
| uint32_t consecutiveBFrameCount; |
| uint32_t subLayerCount; |
| } VkVideoEncodeH265RateControlInfoEXT; |
| |
| typedef struct VkVideoEncodeH265FrameSizeEXT { |
| uint32_t frameISize; |
| uint32_t framePSize; |
| uint32_t frameBSize; |
| } VkVideoEncodeH265FrameSizeEXT; |
| |
| typedef struct VkVideoEncodeH265RateControlLayerInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| VkBool32 useMinQp; |
| VkVideoEncodeH265QpEXT minQp; |
| VkBool32 useMaxQp; |
| VkVideoEncodeH265QpEXT maxQp; |
| VkBool32 useMaxFrameSize; |
| VkVideoEncodeH265FrameSizeEXT maxFrameSize; |
| } VkVideoEncodeH265RateControlLayerInfoEXT; |
| |
| typedef struct VkVideoEncodeH265GopRemainingFrameInfoEXT { |
| VkStructureType sType; |
| const void* pNext; |
| VkBool32 useGopRemainingFrames; |
| uint32_t gopRemainingI; |
| uint32_t gopRemainingP; |
| uint32_t gopRemainingB; |
| } VkVideoEncodeH265GopRemainingFrameInfoEXT; |
| |
| |
| |
| // VK_AMDX_shader_enqueue is a preprocessor guard. Do not pass it to API calls. |
| #define VK_AMDX_shader_enqueue 1 |
| #define VK_AMDX_SHADER_ENQUEUE_SPEC_VERSION 1 |
| #define VK_AMDX_SHADER_ENQUEUE_EXTENSION_NAME "VK_AMDX_shader_enqueue" |
| #define VK_SHADER_INDEX_UNUSED_AMDX (~0U) |
| typedef struct VkPhysicalDeviceShaderEnqueueFeaturesAMDX { |
| VkStructureType sType; |
| void* pNext; |
| VkBool32 shaderEnqueue; |
| } VkPhysicalDeviceShaderEnqueueFeaturesAMDX; |
| |
| typedef struct VkPhysicalDeviceShaderEnqueuePropertiesAMDX { |
| VkStructureType sType; |
| void* pNext; |
| uint32_t maxExecutionGraphDepth; |
| uint32_t maxExecutionGraphShaderOutputNodes; |
| uint32_t maxExecutionGraphShaderPayloadSize; |
| uint32_t maxExecutionGraphShaderPayloadCount; |
| uint32_t executionGraphDispatchAddressAlignment; |
| } VkPhysicalDeviceShaderEnqueuePropertiesAMDX; |
| |
| typedef struct VkExecutionGraphPipelineScratchSizeAMDX { |
| VkStructureType sType; |
| void* pNext; |
| VkDeviceSize size; |
| } VkExecutionGraphPipelineScratchSizeAMDX; |
| |
| typedef struct VkExecutionGraphPipelineCreateInfoAMDX { |
| VkStructureType sType; |
| const void* pNext; |
| VkPipelineCreateFlags flags; |
| uint32_t stageCount; |
| const VkPipelineShaderStageCreateInfo* pStages; |
| const VkPipelineLibraryCreateInfoKHR* pLibraryInfo; |
| VkPipelineLayout layout; |
| VkPipeline basePipelineHandle; |
| int32_t basePipelineIndex; |
| } VkExecutionGraphPipelineCreateInfoAMDX; |
| |
| typedef union VkDeviceOrHostAddressConstAMDX { |
| VkDeviceAddress deviceAddress; |
| const void* hostAddress; |
| } VkDeviceOrHostAddressConstAMDX; |
| |
| typedef struct VkDispatchGraphInfoAMDX { |
| uint32_t nodeIndex; |
| uint32_t payloadCount; |
| VkDeviceOrHostAddressConstAMDX payloads; |
| uint64_t payloadStride; |
| } VkDispatchGraphInfoAMDX; |
| |
| typedef struct VkDispatchGraphCountInfoAMDX { |
| uint32_t count; |
| VkDeviceOrHostAddressConstAMDX infos; |
| uint64_t stride; |
| } VkDispatchGraphCountInfoAMDX; |
| |
| typedef struct VkPipelineShaderStageNodeCreateInfoAMDX { |
| VkStructureType sType; |
| const void* pNext; |
| const char* pName; |
| uint32_t index; |
| } VkPipelineShaderStageNodeCreateInfoAMDX; |
| |
| typedef VkResult (VKAPI_PTR *PFN_vkCreateExecutionGraphPipelinesAMDX)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); |
| typedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineScratchSizeAMDX)(VkDevice device, VkPipeline executionGraph, VkExecutionGraphPipelineScratchSizeAMDX* pSizeInfo); |
| typedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineNodeIndexAMDX)(VkDevice device, VkPipeline executionGraph, const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo, uint32_t* pNodeIndex); |
| typedef void (VKAPI_PTR *PFN_vkCmdInitializeGraphScratchMemoryAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch); |
| typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, const VkDispatchGraphCountInfoAMDX* pCountInfo); |
| typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, const VkDispatchGraphCountInfoAMDX* pCountInfo); |
| typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectCountAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, VkDeviceAddress countInfo); |
| |
| #ifndef VK_NO_PROTOTYPES |
| VKAPI_ATTR VkResult VKAPI_CALL vkCreateExecutionGraphPipelinesAMDX( |
| VkDevice device, |
| VkPipelineCache pipelineCache, |
| uint32_t createInfoCount, |
| const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos, |
| const VkAllocationCallbacks* pAllocator, |
| VkPipeline* pPipelines); |
| |
| VKAPI_ATTR VkResult VKAPI_CALL vkGetExecutionGraphPipelineScratchSizeAMDX( |
| VkDevice device, |
| VkPipeline executionGraph, |
| VkExecutionGraphPipelineScratchSizeAMDX* pSizeInfo); |
| |
| VKAPI_ATTR VkResult VKAPI_CALL vkGetExecutionGraphPipelineNodeIndexAMDX( |
| VkDevice device, |
| VkPipeline executionGraph, |
| const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo, |
| uint32_t* pNodeIndex); |
| |
| VKAPI_ATTR void VKAPI_CALL vkCmdInitializeGraphScratchMemoryAMDX( |
| VkCommandBuffer commandBuffer, |
| VkDeviceAddress scratch); |
| |
| VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphAMDX( |
| VkCommandBuffer commandBuffer, |
| VkDeviceAddress scratch, |
| const VkDispatchGraphCountInfoAMDX* pCountInfo); |
| |
| VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectAMDX( |
| VkCommandBuffer commandBuffer, |
| VkDeviceAddress scratch, |
| const VkDispatchGraphCountInfoAMDX* pCountInfo); |
| |
| VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectCountAMDX( |
| VkCommandBuffer commandBuffer, |
| VkDeviceAddress scratch, |
| VkDeviceAddress countInfo); |
| #endif |
| |
| |
| // VK_NV_displacement_micromap is a preprocessor guard. Do not pass it to API calls. |
| #define VK_NV_displacement_micromap 1 |
| #define VK_NV_DISPLACEMENT_MICROMAP_SPEC_VERSION 2 |
| #define VK_NV_DISPLACEMENT_MICROMAP_EXTENSION_NAME "VK_NV_displacement_micromap" |
| |
| typedef enum VkDisplacementMicromapFormatNV { |
| VK_DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV = 1, |
| VK_DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV = 2, |
| VK_DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV = 3, |
| VK_DISPLACEMENT_MICROMAP_FORMAT_MAX_ENUM_NV = 0x7FFFFFFF |
| } VkDisplacementMicromapFormatNV; |
| typedef struct VkPhysicalDeviceDisplacementMicromapFeaturesNV { |
| VkStructureType sType; |
| void* pNext; |
| VkBool32 displacementMicromap; |
| } VkPhysicalDeviceDisplacementMicromapFeaturesNV; |
| |
| typedef struct VkPhysicalDeviceDisplacementMicromapPropertiesNV { |
| VkStructureType sType; |
| void* pNext; |
| uint32_t maxDisplacementMicromapSubdivisionLevel; |
| } VkPhysicalDeviceDisplacementMicromapPropertiesNV; |
| |
| typedef struct VkAccelerationStructureTrianglesDisplacementMicromapNV { |
| VkStructureType sType; |
| void* pNext; |
| VkFormat displacementBiasAndScaleFormat; |
| VkFormat displacementVectorFormat; |
| VkDeviceOrHostAddressConstKHR displacementBiasAndScaleBuffer; |
| VkDeviceSize displacementBiasAndScaleStride; |
| VkDeviceOrHostAddressConstKHR displacementVectorBuffer; |
| VkDeviceSize displacementVectorStride; |
| VkDeviceOrHostAddressConstKHR displacedMicromapPrimitiveFlags; |
| VkDeviceSize displacedMicromapPrimitiveFlagsStride; |
| VkIndexType indexType; |
| VkDeviceOrHostAddressConstKHR indexBuffer; |
| VkDeviceSize indexStride; |
| uint32_t baseTriangle; |
| uint32_t usageCountsCount; |
| const VkMicromapUsageEXT* pUsageCounts; |
| const VkMicromapUsageEXT* const* ppUsageCounts; |
| VkMicromapEXT micromap; |
| } VkAccelerationStructureTrianglesDisplacementMicromapNV; |
| |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif |