814 lines
		
	
	
		
			40 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			814 lines
		
	
	
		
			40 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#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
 |