#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