554 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			554 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef VULKAN_BETA_H_
 | 
						|
#define VULKAN_BETA_H_ 1
 | 
						|
 | 
						|
/*
 | 
						|
** Copyright 2015-2022 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
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#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;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#define VK_KHR_video_encode_queue 1
 | 
						|
#define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 7
 | 
						|
#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_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 | 
						|
} VkVideoEncodeCapabilityFlagBitsKHR;
 | 
						|
typedef VkFlags VkVideoEncodeCapabilityFlagsKHR;
 | 
						|
 | 
						|
typedef enum VkVideoEncodeRateControlModeFlagBitsKHR {
 | 
						|
    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR = 0,
 | 
						|
    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 1,
 | 
						|
    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 2,
 | 
						|
    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
 | 
						|
} VkVideoEncodeRateControlModeFlagBitsKHR;
 | 
						|
typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR;
 | 
						|
 | 
						|
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;
 | 
						|
    uint32_t                              qualityLevel;
 | 
						|
    VkBuffer                              dstBitstreamBuffer;
 | 
						|
    VkDeviceSize                          dstBitstreamBufferOffset;
 | 
						|
    VkDeviceSize                          dstBitstreamBufferMaxRange;
 | 
						|
    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;
 | 
						|
    uint8_t                                 rateControlLayerCount;
 | 
						|
    uint8_t                                 qualityLevelCount;
 | 
						|
    VkExtent2D                              inputImageDataFillAlignment;
 | 
						|
} VkVideoEncodeCapabilitiesKHR;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeUsageInfoKHR {
 | 
						|
    VkStructureType                 sType;
 | 
						|
    const void*                     pNext;
 | 
						|
    VkVideoEncodeUsageFlagsKHR      videoUsageHints;
 | 
						|
    VkVideoEncodeContentFlagsKHR    videoContentHints;
 | 
						|
    VkVideoEncodeTuningModeKHR      tuningMode;
 | 
						|
} VkVideoEncodeUsageInfoKHR;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeRateControlLayerInfoKHR {
 | 
						|
    VkStructureType    sType;
 | 
						|
    const void*        pNext;
 | 
						|
    uint32_t           averageBitrate;
 | 
						|
    uint32_t           maxBitrate;
 | 
						|
    uint32_t           frameRateNumerator;
 | 
						|
    uint32_t           frameRateDenominator;
 | 
						|
    uint32_t           virtualBufferSizeInMs;
 | 
						|
    uint32_t           initialVirtualBufferSizeInMs;
 | 
						|
} VkVideoEncodeRateControlLayerInfoKHR;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeRateControlInfoKHR {
 | 
						|
    VkStructureType                                sType;
 | 
						|
    const void*                                    pNext;
 | 
						|
    VkVideoEncodeRateControlFlagsKHR               flags;
 | 
						|
    VkVideoEncodeRateControlModeFlagBitsKHR        rateControlMode;
 | 
						|
    uint8_t                                        layerCount;
 | 
						|
    const VkVideoEncodeRateControlLayerInfoKHR*    pLayerConfigs;
 | 
						|
} VkVideoEncodeRateControlInfoKHR;
 | 
						|
 | 
						|
typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo);
 | 
						|
 | 
						|
#ifndef VK_NO_PROTOTYPES
 | 
						|
VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR(
 | 
						|
    VkCommandBuffer                             commandBuffer,
 | 
						|
    const VkVideoEncodeInfoKHR*                 pEncodeInfo);
 | 
						|
#endif
 | 
						|
 | 
						|
 | 
						|
#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 9
 | 
						|
#define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264"
 | 
						|
 | 
						|
typedef enum VkVideoEncodeH264RateControlStructureEXT {
 | 
						|
    VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0,
 | 
						|
    VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_EXT = 1,
 | 
						|
    VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_EXT = 2,
 | 
						|
    VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_MAX_ENUM_EXT = 0x7FFFFFFF
 | 
						|
} VkVideoEncodeH264RateControlStructureEXT;
 | 
						|
 | 
						|
typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT {
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_ENABLED_BIT_EXT = 0x00000001,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_DISABLED_BIT_EXT = 0x00000002,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000004,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXT = 0x00000008,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000010,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000040,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000080,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_PIC_INIT_QP_MINUS26_BIT_EXT = 0x00000100,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00000200,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_EXPLICIT_BIT_EXT = 0x00000400,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_IMPLICIT_BIT_EXT = 0x00000800,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00001000,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00002000,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00004000,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00008000,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00010000,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00020000,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00040000,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_DISABLE_DIRECT_SPATIAL_MV_PRED_BIT_EXT = 0x00080000,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00100000,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT = 0x00200000,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT = 0x00400000,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x00800000,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x01000000,
 | 
						|
    VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
 | 
						|
} VkVideoEncodeH264CapabilityFlagBitsEXT;
 | 
						|
typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT;
 | 
						|
 | 
						|
typedef enum VkVideoEncodeH264InputModeFlagBitsEXT {
 | 
						|
    VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 0x00000001,
 | 
						|
    VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 0x00000002,
 | 
						|
    VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
 | 
						|
    VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
 | 
						|
} VkVideoEncodeH264InputModeFlagBitsEXT;
 | 
						|
typedef VkFlags VkVideoEncodeH264InputModeFlagsEXT;
 | 
						|
 | 
						|
typedef enum VkVideoEncodeH264OutputModeFlagBitsEXT {
 | 
						|
    VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001,
 | 
						|
    VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 0x00000002,
 | 
						|
    VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
 | 
						|
    VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
 | 
						|
} VkVideoEncodeH264OutputModeFlagBitsEXT;
 | 
						|
typedef VkFlags VkVideoEncodeH264OutputModeFlagsEXT;
 | 
						|
typedef struct VkVideoEncodeH264CapabilitiesEXT {
 | 
						|
    VkStructureType                        sType;
 | 
						|
    void*                                  pNext;
 | 
						|
    VkVideoEncodeH264CapabilityFlagsEXT    flags;
 | 
						|
    VkVideoEncodeH264InputModeFlagsEXT     inputModeFlags;
 | 
						|
    VkVideoEncodeH264OutputModeFlagsEXT    outputModeFlags;
 | 
						|
    uint8_t                                maxPPictureL0ReferenceCount;
 | 
						|
    uint8_t                                maxBPictureL0ReferenceCount;
 | 
						|
    uint8_t                                maxL1ReferenceCount;
 | 
						|
    VkBool32                               motionVectorsOverPicBoundariesFlag;
 | 
						|
    uint32_t                               maxBytesPerPicDenom;
 | 
						|
    uint32_t                               maxBitsPerMbDenom;
 | 
						|
    uint32_t                               log2MaxMvLengthHorizontal;
 | 
						|
    uint32_t                               log2MaxMvLengthVertical;
 | 
						|
} VkVideoEncodeH264CapabilitiesEXT;
 | 
						|
 | 
						|
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 VkVideoEncodeH264DpbSlotInfoEXT {
 | 
						|
    VkStructureType                           sType;
 | 
						|
    const void*                               pNext;
 | 
						|
    int8_t                                    slotIndex;
 | 
						|
    const StdVideoEncodeH264ReferenceInfo*    pStdReferenceInfo;
 | 
						|
} VkVideoEncodeH264DpbSlotInfoEXT;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeH264ReferenceListsInfoEXT {
 | 
						|
    VkStructureType                                      sType;
 | 
						|
    const void*                                          pNext;
 | 
						|
    uint8_t                                              referenceList0EntryCount;
 | 
						|
    const VkVideoEncodeH264DpbSlotInfoEXT*               pReferenceList0Entries;
 | 
						|
    uint8_t                                              referenceList1EntryCount;
 | 
						|
    const VkVideoEncodeH264DpbSlotInfoEXT*               pReferenceList1Entries;
 | 
						|
    const StdVideoEncodeH264RefMemMgmtCtrlOperations*    pMemMgmtCtrlOperations;
 | 
						|
} VkVideoEncodeH264ReferenceListsInfoEXT;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeH264NaluSliceInfoEXT {
 | 
						|
    VkStructureType                                  sType;
 | 
						|
    const void*                                      pNext;
 | 
						|
    uint32_t                                         mbCount;
 | 
						|
    const VkVideoEncodeH264ReferenceListsInfoEXT*    pReferenceFinalLists;
 | 
						|
    const StdVideoEncodeH264SliceHeader*             pSliceHeaderStd;
 | 
						|
} VkVideoEncodeH264NaluSliceInfoEXT;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeH264VclFrameInfoEXT {
 | 
						|
    VkStructureType                                  sType;
 | 
						|
    const void*                                      pNext;
 | 
						|
    const VkVideoEncodeH264ReferenceListsInfoEXT*    pReferenceFinalLists;
 | 
						|
    uint32_t                                         naluSliceEntryCount;
 | 
						|
    const VkVideoEncodeH264NaluSliceInfoEXT*         pNaluSliceEntries;
 | 
						|
    const StdVideoEncodeH264PictureInfo*             pCurrentPictureInfo;
 | 
						|
} VkVideoEncodeH264VclFrameInfoEXT;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeH264EmitPictureParametersInfoEXT {
 | 
						|
    VkStructureType    sType;
 | 
						|
    const void*        pNext;
 | 
						|
    uint8_t            spsId;
 | 
						|
    VkBool32           emitSpsEnable;
 | 
						|
    uint32_t           ppsIdEntryCount;
 | 
						|
    const uint8_t*     ppsIdEntries;
 | 
						|
} VkVideoEncodeH264EmitPictureParametersInfoEXT;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeH264ProfileInfoEXT {
 | 
						|
    VkStructureType           sType;
 | 
						|
    const void*               pNext;
 | 
						|
    StdVideoH264ProfileIdc    stdProfileIdc;
 | 
						|
} VkVideoEncodeH264ProfileInfoEXT;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeH264RateControlInfoEXT {
 | 
						|
    VkStructureType                             sType;
 | 
						|
    const void*                                 pNext;
 | 
						|
    uint32_t                                    gopFrameCount;
 | 
						|
    uint32_t                                    idrPeriod;
 | 
						|
    uint32_t                                    consecutiveBFrameCount;
 | 
						|
    VkVideoEncodeH264RateControlStructureEXT    rateControlStructure;
 | 
						|
    uint8_t                                     temporalLayerCount;
 | 
						|
} VkVideoEncodeH264RateControlInfoEXT;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeH264QpEXT {
 | 
						|
    int32_t    qpI;
 | 
						|
    int32_t    qpP;
 | 
						|
    int32_t    qpB;
 | 
						|
} VkVideoEncodeH264QpEXT;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeH264FrameSizeEXT {
 | 
						|
    uint32_t    frameISize;
 | 
						|
    uint32_t    framePSize;
 | 
						|
    uint32_t    frameBSize;
 | 
						|
} VkVideoEncodeH264FrameSizeEXT;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeH264RateControlLayerInfoEXT {
 | 
						|
    VkStructureType                  sType;
 | 
						|
    const void*                      pNext;
 | 
						|
    uint8_t                          temporalLayerId;
 | 
						|
    VkBool32                         useInitialRcQp;
 | 
						|
    VkVideoEncodeH264QpEXT           initialRcQp;
 | 
						|
    VkBool32                         useMinQp;
 | 
						|
    VkVideoEncodeH264QpEXT           minQp;
 | 
						|
    VkBool32                         useMaxQp;
 | 
						|
    VkVideoEncodeH264QpEXT           maxQp;
 | 
						|
    VkBool32                         useMaxFrameSize;
 | 
						|
    VkVideoEncodeH264FrameSizeEXT    maxFrameSize;
 | 
						|
} VkVideoEncodeH264RateControlLayerInfoEXT;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#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 9
 | 
						|
#define VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_EXT_video_encode_h265"
 | 
						|
 | 
						|
typedef enum VkVideoEncodeH265RateControlStructureEXT {
 | 
						|
    VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0,
 | 
						|
    VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_EXT = 1,
 | 
						|
    VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_EXT = 2,
 | 
						|
    VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_MAX_ENUM_EXT = 0x7FFFFFFF
 | 
						|
} VkVideoEncodeH265RateControlStructureEXT;
 | 
						|
 | 
						|
typedef enum VkVideoEncodeH265CapabilityFlagBitsEXT {
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT = 0x00000001,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_SCALING_LISTS_BIT_EXT = 0x00000002,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_SAMPLE_ADAPTIVE_OFFSET_ENABLED_BIT_EXT = 0x00000004,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_PCM_ENABLE_BIT_EXT = 0x00000008,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_SPS_TEMPORAL_MVP_ENABLED_BIT_EXT = 0x00000010,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000020,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_INIT_QP_MINUS26_BIT_EXT = 0x00000040,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT = 0x00000080,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_SIGN_DATA_HIDING_ENABLED_BIT_EXT = 0x00000100,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_ENABLED_BIT_EXT = 0x00000200,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_DISABLED_BIT_EXT = 0x00000400,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_BIT_EXT = 0x00000800,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_BIT_EXT = 0x00001000,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_BIPRED_BIT_EXT = 0x00002000,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT = 0x00004000,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSQUANT_BYPASS_ENABLED_BIT_EXT = 0x00008000,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_ENTROPY_CODING_SYNC_ENABLED_BIT_EXT = 0x00010000,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_DEBLOCKING_FILTER_OVERRIDE_ENABLED_BIT_EXT = 0x00020000,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_FRAME_BIT_EXT = 0x00040000,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_PER_TILE_BIT_EXT = 0x00080000,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_SLICE_BIT_EXT = 0x00100000,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_SLICE_SEGMENT_CTB_COUNT_BIT_EXT = 0x00200000,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT = 0x00400000,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_DEPENDENT_SLICE_SEGMENT_BIT_EXT = 0x00800000,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x01000000,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x02000000,
 | 
						|
    VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
 | 
						|
} VkVideoEncodeH265CapabilityFlagBitsEXT;
 | 
						|
typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT;
 | 
						|
 | 
						|
typedef enum VkVideoEncodeH265InputModeFlagBitsEXT {
 | 
						|
    VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT = 0x00000001,
 | 
						|
    VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_SEGMENT_BIT_EXT = 0x00000002,
 | 
						|
    VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
 | 
						|
    VK_VIDEO_ENCODE_H265_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
 | 
						|
} VkVideoEncodeH265InputModeFlagBitsEXT;
 | 
						|
typedef VkFlags VkVideoEncodeH265InputModeFlagsEXT;
 | 
						|
 | 
						|
typedef enum VkVideoEncodeH265OutputModeFlagBitsEXT {
 | 
						|
    VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001,
 | 
						|
    VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_SEGMENT_BIT_EXT = 0x00000002,
 | 
						|
    VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
 | 
						|
    VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
 | 
						|
} VkVideoEncodeH265OutputModeFlagBitsEXT;
 | 
						|
typedef VkFlags VkVideoEncodeH265OutputModeFlagsEXT;
 | 
						|
 | 
						|
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 struct VkVideoEncodeH265CapabilitiesEXT {
 | 
						|
    VkStructureType                                sType;
 | 
						|
    void*                                          pNext;
 | 
						|
    VkVideoEncodeH265CapabilityFlagsEXT            flags;
 | 
						|
    VkVideoEncodeH265InputModeFlagsEXT             inputModeFlags;
 | 
						|
    VkVideoEncodeH265OutputModeFlagsEXT            outputModeFlags;
 | 
						|
    VkVideoEncodeH265CtbSizeFlagsEXT               ctbSizes;
 | 
						|
    VkVideoEncodeH265TransformBlockSizeFlagsEXT    transformBlockSizes;
 | 
						|
    uint8_t                                        maxPPictureL0ReferenceCount;
 | 
						|
    uint8_t                                        maxBPictureL0ReferenceCount;
 | 
						|
    uint8_t                                        maxL1ReferenceCount;
 | 
						|
    uint8_t                                        maxSubLayersCount;
 | 
						|
    uint8_t                                        minLog2MinLumaCodingBlockSizeMinus3;
 | 
						|
    uint8_t                                        maxLog2MinLumaCodingBlockSizeMinus3;
 | 
						|
    uint8_t                                        minLog2MinLumaTransformBlockSizeMinus2;
 | 
						|
    uint8_t                                        maxLog2MinLumaTransformBlockSizeMinus2;
 | 
						|
    uint8_t                                        minMaxTransformHierarchyDepthInter;
 | 
						|
    uint8_t                                        maxMaxTransformHierarchyDepthInter;
 | 
						|
    uint8_t                                        minMaxTransformHierarchyDepthIntra;
 | 
						|
    uint8_t                                        maxMaxTransformHierarchyDepthIntra;
 | 
						|
    uint8_t                                        maxDiffCuQpDeltaDepth;
 | 
						|
    uint8_t                                        minMaxNumMergeCand;
 | 
						|
    uint8_t                                        maxMaxNumMergeCand;
 | 
						|
} VkVideoEncodeH265CapabilitiesEXT;
 | 
						|
 | 
						|
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 VkVideoEncodeH265DpbSlotInfoEXT {
 | 
						|
    VkStructureType                           sType;
 | 
						|
    const void*                               pNext;
 | 
						|
    int8_t                                    slotIndex;
 | 
						|
    const StdVideoEncodeH265ReferenceInfo*    pStdReferenceInfo;
 | 
						|
} VkVideoEncodeH265DpbSlotInfoEXT;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeH265ReferenceListsInfoEXT {
 | 
						|
    VkStructureType                                    sType;
 | 
						|
    const void*                                        pNext;
 | 
						|
    uint8_t                                            referenceList0EntryCount;
 | 
						|
    const VkVideoEncodeH265DpbSlotInfoEXT*             pReferenceList0Entries;
 | 
						|
    uint8_t                                            referenceList1EntryCount;
 | 
						|
    const VkVideoEncodeH265DpbSlotInfoEXT*             pReferenceList1Entries;
 | 
						|
    const StdVideoEncodeH265ReferenceModifications*    pReferenceModifications;
 | 
						|
} VkVideoEncodeH265ReferenceListsInfoEXT;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeH265NaluSliceSegmentInfoEXT {
 | 
						|
    VkStructureType                                  sType;
 | 
						|
    const void*                                      pNext;
 | 
						|
    uint32_t                                         ctbCount;
 | 
						|
    const VkVideoEncodeH265ReferenceListsInfoEXT*    pReferenceFinalLists;
 | 
						|
    const StdVideoEncodeH265SliceSegmentHeader*      pSliceSegmentHeaderStd;
 | 
						|
} VkVideoEncodeH265NaluSliceSegmentInfoEXT;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeH265VclFrameInfoEXT {
 | 
						|
    VkStructureType                                    sType;
 | 
						|
    const void*                                        pNext;
 | 
						|
    const VkVideoEncodeH265ReferenceListsInfoEXT*      pReferenceFinalLists;
 | 
						|
    uint32_t                                           naluSliceSegmentEntryCount;
 | 
						|
    const VkVideoEncodeH265NaluSliceSegmentInfoEXT*    pNaluSliceSegmentEntries;
 | 
						|
    const StdVideoEncodeH265PictureInfo*               pCurrentPictureInfo;
 | 
						|
} VkVideoEncodeH265VclFrameInfoEXT;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeH265EmitPictureParametersInfoEXT {
 | 
						|
    VkStructureType    sType;
 | 
						|
    const void*        pNext;
 | 
						|
    uint8_t            vpsId;
 | 
						|
    uint8_t            spsId;
 | 
						|
    VkBool32           emitVpsEnable;
 | 
						|
    VkBool32           emitSpsEnable;
 | 
						|
    uint32_t           ppsIdEntryCount;
 | 
						|
    const uint8_t*     ppsIdEntries;
 | 
						|
} VkVideoEncodeH265EmitPictureParametersInfoEXT;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeH265ProfileInfoEXT {
 | 
						|
    VkStructureType           sType;
 | 
						|
    const void*               pNext;
 | 
						|
    StdVideoH265ProfileIdc    stdProfileIdc;
 | 
						|
} VkVideoEncodeH265ProfileInfoEXT;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeH265RateControlInfoEXT {
 | 
						|
    VkStructureType                             sType;
 | 
						|
    const void*                                 pNext;
 | 
						|
    uint32_t                                    gopFrameCount;
 | 
						|
    uint32_t                                    idrPeriod;
 | 
						|
    uint32_t                                    consecutiveBFrameCount;
 | 
						|
    VkVideoEncodeH265RateControlStructureEXT    rateControlStructure;
 | 
						|
    uint8_t                                     subLayerCount;
 | 
						|
} VkVideoEncodeH265RateControlInfoEXT;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeH265QpEXT {
 | 
						|
    int32_t    qpI;
 | 
						|
    int32_t    qpP;
 | 
						|
    int32_t    qpB;
 | 
						|
} VkVideoEncodeH265QpEXT;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeH265FrameSizeEXT {
 | 
						|
    uint32_t    frameISize;
 | 
						|
    uint32_t    framePSize;
 | 
						|
    uint32_t    frameBSize;
 | 
						|
} VkVideoEncodeH265FrameSizeEXT;
 | 
						|
 | 
						|
typedef struct VkVideoEncodeH265RateControlLayerInfoEXT {
 | 
						|
    VkStructureType                  sType;
 | 
						|
    const void*                      pNext;
 | 
						|
    uint8_t                          temporalId;
 | 
						|
    VkBool32                         useInitialRcQp;
 | 
						|
    VkVideoEncodeH265QpEXT           initialRcQp;
 | 
						|
    VkBool32                         useMinQp;
 | 
						|
    VkVideoEncodeH265QpEXT           minQp;
 | 
						|
    VkBool32                         useMaxQp;
 | 
						|
    VkVideoEncodeH265QpEXT           maxQp;
 | 
						|
    VkBool32                         useMaxFrameSize;
 | 
						|
    VkVideoEncodeH265FrameSizeEXT    maxFrameSize;
 | 
						|
} VkVideoEncodeH265RateControlLayerInfoEXT;
 | 
						|
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif
 |