#ifndef VULKAN_BETA_H_ #define VULKAN_BETA_H_ 1 /* ** Copyright 2015-2021 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_video_queue 1 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR) #define VK_KHR_VIDEO_QUEUE_SPEC_VERSION 2 #define VK_KHR_VIDEO_QUEUE_EXTENSION_NAME "VK_KHR_video_queue" typedef enum VkQueryResultStatusKHR { VK_QUERY_RESULT_STATUS_ERROR_KHR = -1, VK_QUERY_RESULT_STATUS_NOT_READY_KHR = 0, VK_QUERY_RESULT_STATUS_COMPLETE_KHR = 1, VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 0x7FFFFFFF } VkQueryResultStatusKHR; typedef enum VkVideoCodecOperationFlagBitsKHR { VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR = 0, #ifdef VK_ENABLE_BETA_EXTENSIONS VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT = 0x00010000, #endif #ifdef VK_ENABLE_BETA_EXTENSIONS VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT = 0x00000001, #endif #ifdef VK_ENABLE_BETA_EXTENSIONS VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT = 0x00000002, #endif VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF } VkVideoCodecOperationFlagBitsKHR; typedef VkFlags VkVideoCodecOperationFlagsKHR; typedef enum VkVideoChromaSubsamplingFlagBitsKHR { VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR = 0, VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0x00000001, VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0x00000002, VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0x00000004, VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x00000008, VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF } VkVideoChromaSubsamplingFlagBitsKHR; typedef VkFlags VkVideoChromaSubsamplingFlagsKHR; typedef enum VkVideoComponentBitDepthFlagBitsKHR { VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0, VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0x00000001, VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0x00000004, VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x00000010, VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF } VkVideoComponentBitDepthFlagBitsKHR; typedef VkFlags VkVideoComponentBitDepthFlagsKHR; typedef enum VkVideoCapabilityFlagBitsKHR { VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001, VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002, VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF } VkVideoCapabilityFlagBitsKHR; typedef VkFlags VkVideoCapabilityFlagsKHR; typedef enum VkVideoSessionCreateFlagBitsKHR { VK_VIDEO_SESSION_CREATE_DEFAULT_KHR = 0, VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001, VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF } VkVideoSessionCreateFlagBitsKHR; typedef VkFlags VkVideoSessionCreateFlagsKHR; typedef VkFlags VkVideoBeginCodingFlagsKHR; typedef VkFlags VkVideoEndCodingFlagsKHR; typedef enum VkVideoCodingControlFlagBitsKHR { VK_VIDEO_CODING_CONTROL_DEFAULT_KHR = 0, VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0x00000001, VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF } VkVideoCodingControlFlagBitsKHR; typedef VkFlags VkVideoCodingControlFlagsKHR; typedef enum VkVideoCodingQualityPresetFlagBitsKHR { VK_VIDEO_CODING_QUALITY_PRESET_DEFAULT_BIT_KHR = 0, VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR = 0x00000001, VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR = 0x00000002, VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR = 0x00000004, VK_VIDEO_CODING_QUALITY_PRESET_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF } VkVideoCodingQualityPresetFlagBitsKHR; typedef VkFlags VkVideoCodingQualityPresetFlagsKHR; typedef struct VkVideoQueueFamilyProperties2KHR { VkStructureType sType; void* pNext; VkVideoCodecOperationFlagsKHR videoCodecOperations; } VkVideoQueueFamilyProperties2KHR; typedef struct VkVideoProfileKHR { VkStructureType sType; void* pNext; VkVideoCodecOperationFlagBitsKHR videoCodecOperation; VkVideoChromaSubsamplingFlagsKHR chromaSubsampling; VkVideoComponentBitDepthFlagsKHR lumaBitDepth; VkVideoComponentBitDepthFlagsKHR chromaBitDepth; } VkVideoProfileKHR; typedef struct VkVideoProfilesKHR { VkStructureType sType; void* pNext; uint32_t profileCount; const VkVideoProfileKHR* pProfiles; } VkVideoProfilesKHR; typedef struct VkVideoCapabilitiesKHR { VkStructureType sType; void* pNext; VkVideoCapabilityFlagsKHR capabilityFlags; VkDeviceSize minBitstreamBufferOffsetAlignment; VkDeviceSize minBitstreamBufferSizeAlignment; VkExtent2D videoPictureExtentGranularity; VkExtent2D minExtent; VkExtent2D maxExtent; uint32_t maxReferencePicturesSlotsCount; uint32_t maxReferencePicturesActiveCount; } VkVideoCapabilitiesKHR; typedef struct VkPhysicalDeviceVideoFormatInfoKHR { VkStructureType sType; void* pNext; VkImageUsageFlags imageUsage; const VkVideoProfilesKHR* pVideoProfiles; } VkPhysicalDeviceVideoFormatInfoKHR; typedef struct VkVideoFormatPropertiesKHR { VkStructureType sType; void* pNext; VkFormat format; } VkVideoFormatPropertiesKHR; typedef struct VkVideoPictureResourceKHR { VkStructureType sType; const void* pNext; VkOffset2D codedOffset; VkExtent2D codedExtent; uint32_t baseArrayLayer; VkImageView imageViewBinding; } VkVideoPictureResourceKHR; typedef struct VkVideoReferenceSlotKHR { VkStructureType sType; const void* pNext; int8_t slotIndex; const VkVideoPictureResourceKHR* pPictureResource; } VkVideoReferenceSlotKHR; typedef struct VkVideoGetMemoryPropertiesKHR { VkStructureType sType; const void* pNext; uint32_t memoryBindIndex; VkMemoryRequirements2* pMemoryRequirements; } VkVideoGetMemoryPropertiesKHR; typedef struct VkVideoBindMemoryKHR { VkStructureType sType; const void* pNext; uint32_t memoryBindIndex; VkDeviceMemory memory; VkDeviceSize memoryOffset; VkDeviceSize memorySize; } VkVideoBindMemoryKHR; typedef struct VkVideoSessionCreateInfoKHR { VkStructureType sType; const void* pNext; uint32_t queueFamilyIndex; VkVideoSessionCreateFlagsKHR flags; const VkVideoProfileKHR* pVideoProfile; VkFormat pictureFormat; VkExtent2D maxCodedExtent; VkFormat referencePicturesFormat; uint32_t maxReferencePicturesSlotsCount; uint32_t maxReferencePicturesActiveCount; } VkVideoSessionCreateInfoKHR; typedef struct VkVideoSessionParametersCreateInfoKHR { VkStructureType sType; const void* pNext; VkVideoSessionParametersKHR videoSessionParametersTemplate; VkVideoSessionKHR videoSession; } VkVideoSessionParametersCreateInfoKHR; typedef struct VkVideoSessionParametersUpdateInfoKHR { VkStructureType sType; const void* pNext; uint32_t updateSequenceCount; } VkVideoSessionParametersUpdateInfoKHR; typedef struct VkVideoBeginCodingInfoKHR { VkStructureType sType; const void* pNext; VkVideoBeginCodingFlagsKHR flags; VkVideoCodingQualityPresetFlagsKHR codecQualityPreset; VkVideoSessionKHR videoSession; VkVideoSessionParametersKHR videoSessionParameters; uint32_t referenceSlotCount; const VkVideoReferenceSlotKHR* pReferenceSlots; } VkVideoBeginCodingInfoKHR; typedef struct VkVideoEndCodingInfoKHR { VkStructureType sType; const void* pNext; VkVideoEndCodingFlagsKHR flags; } VkVideoEndCodingInfoKHR; typedef struct VkVideoCodingControlInfoKHR { VkStructureType sType; const void* pNext; VkVideoCodingControlFlagsKHR flags; } VkVideoCodingControlInfoKHR; typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities); typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties); typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession); typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator); typedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements); typedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories); typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters); typedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo); typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator); typedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo); typedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo); typedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo); #ifndef VK_NO_PROTOTYPES VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR( VkPhysicalDevice physicalDevice, const VkVideoProfileKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities); VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties); VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR( VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession); VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR( VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator); VKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR( VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pVideoSessionMemoryRequirementsCount, VkVideoGetMemoryPropertiesKHR* pVideoSessionMemoryRequirements); VKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR( VkDevice device, VkVideoSessionKHR videoSession, uint32_t videoSessionBindMemoryCount, const VkVideoBindMemoryKHR* pVideoSessionBindMemories); VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR( VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters); VKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR( VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo); VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR( VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator); VKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR( VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo); VKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR( VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo); VKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR( VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo); #endif #define VK_KHR_video_decode_queue 1 #define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 1 #define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue" typedef enum VkVideoDecodeFlagBitsKHR { VK_VIDEO_DECODE_DEFAULT_KHR = 0, VK_VIDEO_DECODE_RESERVED_0_BIT_KHR = 0x00000001, VK_VIDEO_DECODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF } VkVideoDecodeFlagBitsKHR; typedef VkFlags VkVideoDecodeFlagsKHR; typedef struct VkVideoDecodeInfoKHR { VkStructureType sType; const void* pNext; VkVideoDecodeFlagsKHR flags; VkOffset2D codedOffset; VkExtent2D codedExtent; VkBuffer srcBuffer; VkDeviceSize srcBufferOffset; VkDeviceSize srcBufferRange; VkVideoPictureResourceKHR dstPictureResource; const VkVideoReferenceSlotKHR* pSetupReferenceSlot; uint32_t referenceSlotCount; const VkVideoReferenceSlotKHR* pReferenceSlots; } VkVideoDecodeInfoKHR; typedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo); #ifndef VK_NO_PROTOTYPES VKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR( VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pFrameInfo); #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 2 #define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue" typedef enum VkVideoEncodeFlagBitsKHR { VK_VIDEO_ENCODE_DEFAULT_KHR = 0, VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR = 0x00000001, VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF } VkVideoEncodeFlagBitsKHR; typedef VkFlags VkVideoEncodeFlagsKHR; typedef enum VkVideoEncodeRateControlFlagBitsKHR { VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR = 0, VK_VIDEO_ENCODE_RATE_CONTROL_RESET_BIT_KHR = 0x00000001, VK_VIDEO_ENCODE_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF } VkVideoEncodeRateControlFlagBitsKHR; typedef VkFlags VkVideoEncodeRateControlFlagsKHR; 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 struct VkVideoEncodeInfoKHR { VkStructureType sType; const void* pNext; VkVideoEncodeFlagsKHR flags; uint32_t qualityLevel; VkExtent2D codedExtent; VkBuffer dstBitstreamBuffer; VkDeviceSize dstBitstreamBufferOffset; VkDeviceSize dstBitstreamBufferMaxRange; VkVideoPictureResourceKHR srcPictureResource; const VkVideoReferenceSlotKHR* pSetupReferenceSlot; uint32_t referenceSlotCount; const VkVideoReferenceSlotKHR* pReferenceSlots; } VkVideoEncodeInfoKHR; typedef struct VkVideoEncodeRateControlInfoKHR { VkStructureType sType; const void* pNext; VkVideoEncodeRateControlFlagsKHR flags; VkVideoEncodeRateControlModeFlagBitsKHR rateControlMode; uint32_t averageBitrate; uint16_t peakToAverageBitrateRatio; uint16_t frameRateNumerator; uint16_t frameRateDenominator; uint32_t virtualBufferSizeInMs; } 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 2 #define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264" typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT { VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00000001, VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00000002, VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT = 0x00000004, VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 0x00000008, VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 0x00000010, VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 0x00000020, VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 0x00000040, VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 0x00000080, VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00000100, VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00000200, VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT = 0x00000400, 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 enum VkVideoEncodeH264CreateFlagBitsEXT { VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT = 0, VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT = 0x00000001, VK_VIDEO_ENCODE_H264_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF } VkVideoEncodeH264CreateFlagBitsEXT; typedef VkFlags VkVideoEncodeH264CreateFlagsEXT; typedef struct VkVideoEncodeH264CapabilitiesEXT { VkStructureType sType; const void* pNext; VkVideoEncodeH264CapabilityFlagsEXT flags; VkVideoEncodeH264InputModeFlagsEXT inputModeFlags; VkVideoEncodeH264OutputModeFlagsEXT outputModeFlags; VkExtent2D minPictureSizeInMbs; VkExtent2D maxPictureSizeInMbs; VkExtent2D inputImageDataAlignment; uint8_t maxNumL0ReferenceForP; uint8_t maxNumL0ReferenceForB; uint8_t maxNumL1Reference; uint8_t qualityLevelCount; VkExtensionProperties stdExtensionVersion; } VkVideoEncodeH264CapabilitiesEXT; typedef struct VkVideoEncodeH264SessionCreateInfoEXT { VkStructureType sType; const void* pNext; VkVideoEncodeH264CreateFlagsEXT flags; VkExtent2D maxPictureSizeInMbs; const VkExtensionProperties* pStdExtensionVersion; } VkVideoEncodeH264SessionCreateInfoEXT; typedef struct VkVideoEncodeH264SessionParametersAddInfoEXT { VkStructureType sType; const void* pNext; uint32_t spsStdCount; const StdVideoH264SequenceParameterSet* pSpsStd; uint32_t ppsStdCount; const StdVideoH264PictureParameterSet* pPpsStd; } VkVideoEncodeH264SessionParametersAddInfoEXT; typedef struct VkVideoEncodeH264SessionParametersCreateInfoEXT { VkStructureType sType; const void* pNext; uint32_t maxSpsStdCount; uint32_t maxPpsStdCount; const VkVideoEncodeH264SessionParametersAddInfoEXT* pParametersAddInfo; } VkVideoEncodeH264SessionParametersCreateInfoEXT; typedef struct VkVideoEncodeH264DpbSlotInfoEXT { VkStructureType sType; const void* pNext; int8_t slotIndex; const StdVideoEncodeH264PictureInfo* pStdPictureInfo; } VkVideoEncodeH264DpbSlotInfoEXT; typedef struct VkVideoEncodeH264NaluSliceEXT { VkStructureType sType; const void* pNext; const StdVideoEncodeH264SliceHeader* pSliceHeaderStd; uint32_t mbCount; uint8_t refFinalList0EntryCount; const VkVideoEncodeH264DpbSlotInfoEXT* pRefFinalList0Entries; uint8_t refFinalList1EntryCount; const VkVideoEncodeH264DpbSlotInfoEXT* pRefFinalList1Entries; uint32_t precedingNaluBytes; uint8_t minQp; uint8_t maxQp; } VkVideoEncodeH264NaluSliceEXT; typedef struct VkVideoEncodeH264VclFrameInfoEXT { VkStructureType sType; const void* pNext; uint8_t refDefaultFinalList0EntryCount; const VkVideoEncodeH264DpbSlotInfoEXT* pRefDefaultFinalList0Entries; uint8_t refDefaultFinalList1EntryCount; const VkVideoEncodeH264DpbSlotInfoEXT* pRefDefaultFinalList1Entries; uint32_t naluSliceEntryCount; const VkVideoEncodeH264NaluSliceEXT* pNaluSliceEntries; const VkVideoEncodeH264DpbSlotInfoEXT* pCurrentPictureInfo; } VkVideoEncodeH264VclFrameInfoEXT; typedef struct VkVideoEncodeH264EmitPictureParametersEXT { VkStructureType sType; const void* pNext; uint8_t spsId; VkBool32 emitSpsEnable; uint32_t ppsIdEntryCount; const uint8_t* ppsIdEntries; } VkVideoEncodeH264EmitPictureParametersEXT; typedef struct VkVideoEncodeH264ProfileEXT { VkStructureType sType; const void* pNext; StdVideoH264ProfileIdc stdProfileIdc; } VkVideoEncodeH264ProfileEXT; #define VK_EXT_video_decode_h264 1 #include "vk_video/vulkan_video_codec_h264std_decode.h" #define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 3 #define VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME "VK_EXT_video_decode_h264" typedef enum VkVideoDecodeH264PictureLayoutFlagBitsEXT { VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT = 0, VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT = 0x00000001, VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT = 0x00000002, VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF } VkVideoDecodeH264PictureLayoutFlagBitsEXT; typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsEXT; typedef VkFlags VkVideoDecodeH264CreateFlagsEXT; typedef struct VkVideoDecodeH264ProfileEXT { VkStructureType sType; const void* pNext; StdVideoH264ProfileIdc stdProfileIdc; VkVideoDecodeH264PictureLayoutFlagsEXT pictureLayout; } VkVideoDecodeH264ProfileEXT; typedef struct VkVideoDecodeH264CapabilitiesEXT { VkStructureType sType; void* pNext; uint32_t maxLevel; VkOffset2D fieldOffsetGranularity; VkExtensionProperties stdExtensionVersion; } VkVideoDecodeH264CapabilitiesEXT; typedef struct VkVideoDecodeH264SessionCreateInfoEXT { VkStructureType sType; const void* pNext; VkVideoDecodeH264CreateFlagsEXT flags; const VkExtensionProperties* pStdExtensionVersion; } VkVideoDecodeH264SessionCreateInfoEXT; typedef struct VkVideoDecodeH264SessionParametersAddInfoEXT { VkStructureType sType; const void* pNext; uint32_t spsStdCount; const StdVideoH264SequenceParameterSet* pSpsStd; uint32_t ppsStdCount; const StdVideoH264PictureParameterSet* pPpsStd; } VkVideoDecodeH264SessionParametersAddInfoEXT; typedef struct VkVideoDecodeH264SessionParametersCreateInfoEXT { VkStructureType sType; const void* pNext; uint32_t maxSpsStdCount; uint32_t maxPpsStdCount; const VkVideoDecodeH264SessionParametersAddInfoEXT* pParametersAddInfo; } VkVideoDecodeH264SessionParametersCreateInfoEXT; typedef struct VkVideoDecodeH264PictureInfoEXT { VkStructureType sType; const void* pNext; const StdVideoDecodeH264PictureInfo* pStdPictureInfo; uint32_t slicesCount; const uint32_t* pSlicesDataOffsets; } VkVideoDecodeH264PictureInfoEXT; typedef struct VkVideoDecodeH264MvcEXT { VkStructureType sType; const void* pNext; const StdVideoDecodeH264Mvc* pStdMvc; } VkVideoDecodeH264MvcEXT; typedef struct VkVideoDecodeH264DpbSlotInfoEXT { VkStructureType sType; const void* pNext; const StdVideoDecodeH264ReferenceInfo* pStdReferenceInfo; } VkVideoDecodeH264DpbSlotInfoEXT; #define VK_EXT_video_decode_h265 1 #include "vk_video/vulkan_video_codec_h265std.h" #include "vk_video/vulkan_video_codec_h265std_decode.h" #define VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION 1 #define VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME "VK_EXT_video_decode_h265" typedef VkFlags VkVideoDecodeH265CreateFlagsEXT; typedef struct VkVideoDecodeH265ProfileEXT { VkStructureType sType; const void* pNext; StdVideoH265ProfileIdc stdProfileIdc; } VkVideoDecodeH265ProfileEXT; typedef struct VkVideoDecodeH265CapabilitiesEXT { VkStructureType sType; void* pNext; uint32_t maxLevel; VkExtensionProperties stdExtensionVersion; } VkVideoDecodeH265CapabilitiesEXT; typedef struct VkVideoDecodeH265SessionCreateInfoEXT { VkStructureType sType; const void* pNext; VkVideoDecodeH265CreateFlagsEXT flags; const VkExtensionProperties* pStdExtensionVersion; } VkVideoDecodeH265SessionCreateInfoEXT; typedef struct VkVideoDecodeH265SessionParametersAddInfoEXT { VkStructureType sType; const void* pNext; uint32_t spsStdCount; const StdVideoH265SequenceParameterSet* pSpsStd; uint32_t ppsStdCount; const StdVideoH265PictureParameterSet* pPpsStd; } VkVideoDecodeH265SessionParametersAddInfoEXT; typedef struct VkVideoDecodeH265SessionParametersCreateInfoEXT { VkStructureType sType; const void* pNext; uint32_t maxSpsStdCount; uint32_t maxPpsStdCount; const VkVideoDecodeH265SessionParametersAddInfoEXT* pParametersAddInfo; } VkVideoDecodeH265SessionParametersCreateInfoEXT; typedef struct VkVideoDecodeH265PictureInfoEXT { VkStructureType sType; const void* pNext; StdVideoDecodeH265PictureInfo* pStdPictureInfo; uint32_t slicesCount; const uint32_t* pSlicesDataOffsets; } VkVideoDecodeH265PictureInfoEXT; typedef struct VkVideoDecodeH265DpbSlotInfoEXT { VkStructureType sType; const void* pNext; const StdVideoDecodeH265ReferenceInfo* pStdReferenceInfo; } VkVideoDecodeH265DpbSlotInfoEXT; #ifdef __cplusplus } #endif #endif