2020-10-07 16:47:23 +00:00
|
|
|
#ifndef VULKAN_BETA_H_
|
|
|
|
#define VULKAN_BETA_H_ 1
|
|
|
|
|
|
|
|
/*
|
2021-12-02 20:27:58 +00:00
|
|
|
** Copyright 2015-2021 The Khronos Group Inc.
|
2020-10-07 16:47:23 +00:00
|
|
|
**
|
|
|
|
** SPDX-License-Identifier: Apache-2.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
** This header is generated from the Khronos Vulkan XML API Registry.
|
|
|
|
**
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-12-02 20:27:58 +00:00
|
|
|
#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_ENCODE_H265_BIT_EXT = 0x00020000,
|
|
|
|
#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_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 2
|
|
|
|
#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
|
|
|
|
|
|
|
|
|
2020-10-07 16:47:23 +00:00
|
|
|
#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;
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-12-02 20:27:58 +00:00
|
|
|
#define VK_KHR_video_encode_queue 1
|
|
|
|
#define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 3
|
|
|
|
#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_RESERVED_0_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 {
|
2020-10-07 16:47:23 +00:00
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
2021-12-02 20:27:58 +00:00
|
|
|
VkVideoEncodeFlagsKHR flags;
|
|
|
|
uint32_t qualityLevel;
|
|
|
|
VkExtent2D codedExtent;
|
|
|
|
VkBuffer dstBitstreamBuffer;
|
|
|
|
VkDeviceSize dstBitstreamBufferOffset;
|
|
|
|
VkDeviceSize dstBitstreamBufferMaxRange;
|
|
|
|
VkVideoPictureResourceKHR srcPictureResource;
|
|
|
|
const VkVideoReferenceSlotKHR* pSetupReferenceSlot;
|
|
|
|
uint32_t referenceSlotCount;
|
|
|
|
const VkVideoReferenceSlotKHR* pReferenceSlots;
|
|
|
|
uint32_t precedingExternallyEncodedBytes;
|
|
|
|
} VkVideoEncodeInfoKHR;
|
|
|
|
|
|
|
|
typedef struct VkVideoEncodeRateControlLayerInfoKHR {
|
2020-10-07 16:47:23 +00:00
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
2021-12-02 20:27:58 +00:00
|
|
|
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);
|
2020-10-07 16:47:23 +00:00
|
|
|
|
2021-12-02 20:27:58 +00:00
|
|
|
#ifndef VK_NO_PROTOTYPES
|
|
|
|
VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR(
|
|
|
|
VkCommandBuffer commandBuffer,
|
|
|
|
const VkVideoEncodeInfoKHR* pEncodeInfo);
|
|
|
|
#endif
|
2020-10-07 16:47:23 +00:00
|
|
|
|
|
|
|
|
2021-12-02 20:27:58 +00:00
|
|
|
#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_OPTIONAL_RC_EXTENSION_STRUCT_BIT_EXT = 0x00000800,
|
|
|
|
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 enum VkVideoEncodeH264RateControlStructureFlagBitsEXT {
|
|
|
|
VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0,
|
|
|
|
VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT = 0x00000001,
|
|
|
|
VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT = 0x00000002,
|
|
|
|
VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
|
|
|
|
} VkVideoEncodeH264RateControlStructureFlagBitsEXT;
|
|
|
|
typedef VkFlags VkVideoEncodeH264RateControlStructureFlagsEXT;
|
|
|
|
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 {
|
2020-10-07 16:47:23 +00:00
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
2021-12-02 20:27:58 +00:00
|
|
|
const StdVideoEncodeH264SliceHeader* pSliceHeaderStd;
|
|
|
|
uint32_t mbCount;
|
|
|
|
uint8_t refFinalList0EntryCount;
|
|
|
|
const VkVideoEncodeH264DpbSlotInfoEXT* pRefFinalList0Entries;
|
|
|
|
uint8_t refFinalList1EntryCount;
|
|
|
|
const VkVideoEncodeH264DpbSlotInfoEXT* pRefFinalList1Entries;
|
|
|
|
} 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;
|
2020-10-07 16:47:23 +00:00
|
|
|
|
2021-12-02 20:27:58 +00:00
|
|
|
typedef struct VkVideoEncodeH264ProfileEXT {
|
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
|
|
|
StdVideoH264ProfileIdc stdProfileIdc;
|
|
|
|
} VkVideoEncodeH264ProfileEXT;
|
|
|
|
|
|
|
|
typedef struct VkVideoEncodeH264RateControlInfoEXT {
|
2020-10-07 16:47:23 +00:00
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
2021-12-02 20:27:58 +00:00
|
|
|
uint32_t gopFrameCount;
|
|
|
|
uint32_t idrPeriod;
|
|
|
|
uint32_t consecutiveBFrameCount;
|
|
|
|
VkVideoEncodeH264RateControlStructureFlagBitsEXT rateControlStructure;
|
|
|
|
} 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 2
|
|
|
|
#define VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_EXT_video_encode_h265"
|
|
|
|
typedef VkFlags VkVideoEncodeH265CapabilityFlagsEXT;
|
|
|
|
|
|
|
|
typedef enum VkVideoEncodeH265InputModeFlagBitsEXT {
|
|
|
|
VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT = 0x00000001,
|
|
|
|
VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_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_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 VkFlags VkVideoEncodeH265CreateFlagsEXT;
|
|
|
|
|
|
|
|
typedef enum VkVideoEncodeH265CtbSizeFlagBitsEXT {
|
|
|
|
VK_VIDEO_ENCODE_H265_CTB_SIZE_8_BIT_EXT = 0x00000001,
|
|
|
|
VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT = 0x00000002,
|
|
|
|
VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT = 0x00000004,
|
|
|
|
VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT = 0x00000008,
|
|
|
|
VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
|
|
|
|
} VkVideoEncodeH265CtbSizeFlagBitsEXT;
|
|
|
|
typedef VkFlags VkVideoEncodeH265CtbSizeFlagsEXT;
|
|
|
|
|
|
|
|
typedef enum VkVideoEncodeH265RateControlStructureFlagBitsEXT {
|
|
|
|
VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT = 0,
|
|
|
|
VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT = 0x00000001,
|
|
|
|
VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT = 0x00000002,
|
|
|
|
VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
|
|
|
|
} VkVideoEncodeH265RateControlStructureFlagBitsEXT;
|
|
|
|
typedef VkFlags VkVideoEncodeH265RateControlStructureFlagsEXT;
|
|
|
|
typedef struct VkVideoEncodeH265CapabilitiesEXT {
|
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
|
|
|
VkVideoEncodeH265CapabilityFlagsEXT flags;
|
|
|
|
VkVideoEncodeH265InputModeFlagsEXT inputModeFlags;
|
|
|
|
VkVideoEncodeH265OutputModeFlagsEXT outputModeFlags;
|
|
|
|
VkVideoEncodeH265CtbSizeFlagsEXT ctbSizes;
|
|
|
|
VkExtent2D inputImageDataAlignment;
|
|
|
|
uint8_t maxNumL0ReferenceForP;
|
|
|
|
uint8_t maxNumL0ReferenceForB;
|
|
|
|
uint8_t maxNumL1Reference;
|
|
|
|
uint8_t maxNumSubLayers;
|
|
|
|
uint8_t qualityLevelCount;
|
|
|
|
VkExtensionProperties stdExtensionVersion;
|
|
|
|
} VkVideoEncodeH265CapabilitiesEXT;
|
|
|
|
|
|
|
|
typedef struct VkVideoEncodeH265SessionCreateInfoEXT {
|
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
|
|
|
VkVideoEncodeH265CreateFlagsEXT flags;
|
|
|
|
const VkExtensionProperties* pStdExtensionVersion;
|
|
|
|
} VkVideoEncodeH265SessionCreateInfoEXT;
|
|
|
|
|
|
|
|
typedef struct VkVideoEncodeH265SessionParametersAddInfoEXT {
|
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
|
|
|
uint32_t vpsStdCount;
|
|
|
|
const StdVideoH265VideoParameterSet* pVpsStd;
|
|
|
|
uint32_t spsStdCount;
|
|
|
|
const StdVideoH265SequenceParameterSet* pSpsStd;
|
|
|
|
uint32_t ppsStdCount;
|
|
|
|
const StdVideoH265PictureParameterSet* pPpsStd;
|
|
|
|
} VkVideoEncodeH265SessionParametersAddInfoEXT;
|
|
|
|
|
|
|
|
typedef struct VkVideoEncodeH265SessionParametersCreateInfoEXT {
|
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
|
|
|
uint32_t maxVpsStdCount;
|
|
|
|
uint32_t maxSpsStdCount;
|
|
|
|
uint32_t maxPpsStdCount;
|
|
|
|
const VkVideoEncodeH265SessionParametersAddInfoEXT* pParametersAddInfo;
|
|
|
|
} VkVideoEncodeH265SessionParametersCreateInfoEXT;
|
|
|
|
|
|
|
|
typedef struct VkVideoEncodeH265DpbSlotInfoEXT {
|
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
|
|
|
int8_t slotIndex;
|
|
|
|
const StdVideoEncodeH265ReferenceInfo* pStdReferenceInfo;
|
|
|
|
} VkVideoEncodeH265DpbSlotInfoEXT;
|
|
|
|
|
|
|
|
typedef struct VkVideoEncodeH265ReferenceListsEXT {
|
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
|
|
|
uint8_t referenceList0EntryCount;
|
|
|
|
const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList0Entries;
|
|
|
|
uint8_t referenceList1EntryCount;
|
|
|
|
const VkVideoEncodeH265DpbSlotInfoEXT* pReferenceList1Entries;
|
|
|
|
const StdVideoEncodeH265ReferenceModifications* pReferenceModifications;
|
|
|
|
} VkVideoEncodeH265ReferenceListsEXT;
|
|
|
|
|
|
|
|
typedef struct VkVideoEncodeH265NaluSliceEXT {
|
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
|
|
|
uint32_t ctbCount;
|
|
|
|
const VkVideoEncodeH265ReferenceListsEXT* pReferenceFinalLists;
|
|
|
|
const StdVideoEncodeH265SliceHeader* pSliceHeaderStd;
|
|
|
|
} VkVideoEncodeH265NaluSliceEXT;
|
|
|
|
|
|
|
|
typedef struct VkVideoEncodeH265VclFrameInfoEXT {
|
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
|
|
|
const VkVideoEncodeH265ReferenceListsEXT* pReferenceFinalLists;
|
|
|
|
uint32_t naluSliceEntryCount;
|
|
|
|
const VkVideoEncodeH265NaluSliceEXT* pNaluSliceEntries;
|
|
|
|
const StdVideoEncodeH265PictureInfo* pCurrentPictureInfo;
|
|
|
|
} VkVideoEncodeH265VclFrameInfoEXT;
|
|
|
|
|
|
|
|
typedef struct VkVideoEncodeH265EmitPictureParametersEXT {
|
2020-10-07 16:47:23 +00:00
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
2021-12-02 20:27:58 +00:00
|
|
|
uint8_t vpsId;
|
|
|
|
uint8_t spsId;
|
|
|
|
VkBool32 emitVpsEnable;
|
|
|
|
VkBool32 emitSpsEnable;
|
|
|
|
uint32_t ppsIdEntryCount;
|
|
|
|
const uint8_t* ppsIdEntries;
|
|
|
|
} VkVideoEncodeH265EmitPictureParametersEXT;
|
|
|
|
|
|
|
|
typedef struct VkVideoEncodeH265ProfileEXT {
|
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
|
|
|
StdVideoH265ProfileIdc stdProfileIdc;
|
|
|
|
} VkVideoEncodeH265ProfileEXT;
|
2020-10-07 16:47:23 +00:00
|
|
|
|
2021-12-02 20:27:58 +00:00
|
|
|
typedef struct VkVideoEncodeH265RateControlInfoEXT {
|
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
|
|
|
uint32_t gopFrameCount;
|
|
|
|
uint32_t idrPeriod;
|
|
|
|
uint32_t consecutiveBFrameCount;
|
|
|
|
VkVideoEncodeH265RateControlStructureFlagBitsEXT rateControlStructure;
|
|
|
|
} 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;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#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;
|
2020-10-07 16:47:23 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2021-12-02 20:27:58 +00:00
|
|
|
#define VK_EXT_video_decode_h265 1
|
|
|
|
#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;
|
2020-10-07 16:47:23 +00:00
|
|
|
|
2021-12-02 20:27:58 +00:00
|
|
|
typedef struct VkVideoDecodeH265DpbSlotInfoEXT {
|
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
|
|
|
const StdVideoDecodeH265ReferenceInfo* pStdReferenceInfo;
|
|
|
|
} VkVideoDecodeH265DpbSlotInfoEXT;
|
2020-10-07 16:47:23 +00:00
|
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|