|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef AVUTIL_VULKAN_FUNCTIONS_H |
|
#define AVUTIL_VULKAN_FUNCTIONS_H |
|
|
|
#define VK_NO_PROTOTYPES |
|
#define VK_ENABLE_BETA_EXTENSIONS |
|
|
|
#include "hwcontext.h" |
|
#include "hwcontext_vulkan.h" |
|
|
|
|
|
typedef enum FFVulkanExtensions { |
|
FF_VK_EXT_EXTERNAL_DMABUF_MEMORY = 1ULL << 0, |
|
FF_VK_EXT_DRM_MODIFIER_FLAGS = 1ULL << 1, |
|
FF_VK_EXT_EXTERNAL_FD_MEMORY = 1ULL << 2, |
|
FF_VK_EXT_EXTERNAL_FD_SEM = 1ULL << 3, |
|
FF_VK_EXT_EXTERNAL_HOST_MEMORY = 1ULL << 4, |
|
FF_VK_EXT_DEBUG_UTILS = 1ULL << 5, |
|
#ifdef _WIN32 |
|
FF_VK_EXT_EXTERNAL_WIN32_MEMORY = 1ULL << 6, |
|
FF_VK_EXT_EXTERNAL_WIN32_SEM = 1ULL << 7, |
|
#endif |
|
FF_VK_EXT_DESCRIPTOR_BUFFER = 1ULL << 8, |
|
FF_VK_EXT_DEVICE_DRM = 1ULL << 9, |
|
FF_VK_EXT_VIDEO_QUEUE = 1ULL << 10, |
|
FF_VK_EXT_VIDEO_DECODE_QUEUE = 1ULL << 11, |
|
FF_VK_EXT_VIDEO_DECODE_H264 = 1ULL << 12, |
|
FF_VK_EXT_VIDEO_DECODE_H265 = 1ULL << 13, |
|
FF_VK_EXT_VIDEO_DECODE_AV1 = 1ULL << 14, |
|
FF_VK_EXT_ATOMIC_FLOAT = 1ULL << 15, |
|
FF_VK_EXT_COOP_MATRIX = 1ULL << 16, |
|
|
|
FF_VK_EXT_NO_FLAG = 1ULL << 31, |
|
} FFVulkanExtensions; |
|
|
|
|
|
#define FN_LIST(MACRO) \ |
|
\ |
|
MACRO(0, 0, FF_VK_EXT_NO_FLAG, EnumerateInstanceExtensionProperties) \ |
|
MACRO(0, 0, FF_VK_EXT_NO_FLAG, EnumerateInstanceLayerProperties) \ |
|
MACRO(0, 0, FF_VK_EXT_NO_FLAG, CreateInstance) \ |
|
MACRO(1, 0, FF_VK_EXT_NO_FLAG, DestroyInstance) \ |
|
\ |
|
\ |
|
MACRO(1, 0, FF_VK_EXT_NO_FLAG, CreateDebugUtilsMessengerEXT) \ |
|
MACRO(1, 0, FF_VK_EXT_NO_FLAG, DestroyDebugUtilsMessengerEXT) \ |
|
\ |
|
\ |
|
MACRO(1, 0, FF_VK_EXT_NO_FLAG, GetDeviceProcAddr) \ |
|
MACRO(1, 0, FF_VK_EXT_NO_FLAG, CreateDevice) \ |
|
MACRO(1, 0, FF_VK_EXT_NO_FLAG, GetPhysicalDeviceFeatures2) \ |
|
MACRO(1, 0, FF_VK_EXT_NO_FLAG, GetPhysicalDeviceProperties) \ |
|
MACRO(1, 0, FF_VK_EXT_VIDEO_QUEUE, GetPhysicalDeviceVideoCapabilitiesKHR) \ |
|
MACRO(1, 0, FF_VK_EXT_VIDEO_QUEUE, GetPhysicalDeviceVideoFormatPropertiesKHR) \ |
|
MACRO(1, 0, FF_VK_EXT_NO_FLAG, DeviceWaitIdle) \ |
|
MACRO(1, 0, FF_VK_EXT_NO_FLAG, DestroyDevice) \ |
|
\ |
|
MACRO(1, 0, FF_VK_EXT_NO_FLAG, EnumeratePhysicalDevices) \ |
|
MACRO(1, 0, FF_VK_EXT_NO_FLAG, EnumerateDeviceExtensionProperties) \ |
|
\ |
|
MACRO(1, 0, FF_VK_EXT_NO_FLAG, GetPhysicalDeviceProperties2) \ |
|
MACRO(1, 0, FF_VK_EXT_NO_FLAG, GetPhysicalDeviceMemoryProperties) \ |
|
MACRO(1, 0, FF_VK_EXT_NO_FLAG, GetPhysicalDeviceFormatProperties2) \ |
|
MACRO(1, 0, FF_VK_EXT_NO_FLAG, GetPhysicalDeviceImageFormatProperties2) \ |
|
MACRO(1, 0, FF_VK_EXT_NO_FLAG, GetPhysicalDeviceQueueFamilyProperties) \ |
|
MACRO(1, 0, FF_VK_EXT_NO_FLAG, GetPhysicalDeviceQueueFamilyProperties2) \ |
|
MACRO(1, 0, FF_VK_EXT_COOP_MATRIX, GetPhysicalDeviceCooperativeMatrixPropertiesKHR) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CreateCommandPool) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, DestroyCommandPool) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, AllocateCommandBuffers) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, BeginCommandBuffer) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, EndCommandBuffer) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, FreeCommandBuffers) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CmdDispatch) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, GetDeviceQueue) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, QueueSubmit) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, QueueSubmit2) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CreateFence) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, WaitForFences) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, ResetFences) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, DestroyFence) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_EXTERNAL_FD_SEM, GetSemaphoreFdKHR) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CreateSemaphore) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, WaitSemaphores) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, DestroySemaphore) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_EXTERNAL_FD_MEMORY, GetMemoryFdKHR) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, GetMemoryFdPropertiesKHR) \ |
|
MACRO(1, 1, FF_VK_EXT_EXTERNAL_HOST_MEMORY, GetMemoryHostPointerPropertiesEXT) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, AllocateMemory) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, MapMemory) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, FlushMappedMemoryRanges) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, InvalidateMappedMemoryRanges) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, UnmapMemory) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, FreeMemory) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CmdBindDescriptorSets) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CmdPushConstants) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CmdBindPipeline) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CmdPipelineBarrier) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CmdCopyBufferToImage) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CmdCopyImageToBuffer) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, GetBufferMemoryRequirements2) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CreateBuffer) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, BindBufferMemory) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, GetBufferDeviceAddress) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CmdFillBuffer) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, DestroyBuffer) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_DRM_MODIFIER_FLAGS, GetImageDrmFormatModifierPropertiesEXT) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, GetImageMemoryRequirements2) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CreateImage) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, BindImageMemory2) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, GetImageSubresourceLayout) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, DestroyImage) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CreateImageView) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, DestroyImageView) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CreateDescriptorSetLayout) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, AllocateDescriptorSets) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CreateDescriptorPool) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, DestroyDescriptorPool) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, DestroyDescriptorSetLayout) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_DESCRIPTOR_BUFFER, GetDescriptorSetLayoutSizeEXT) \ |
|
MACRO(1, 1, FF_VK_EXT_DESCRIPTOR_BUFFER, GetDescriptorSetLayoutBindingOffsetEXT) \ |
|
MACRO(1, 1, FF_VK_EXT_DESCRIPTOR_BUFFER, GetDescriptorEXT) \ |
|
MACRO(1, 1, FF_VK_EXT_DESCRIPTOR_BUFFER, CmdBindDescriptorBuffersEXT) \ |
|
MACRO(1, 1, FF_VK_EXT_DESCRIPTOR_BUFFER, CmdSetDescriptorBufferOffsetsEXT) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, UpdateDescriptorSetWithTemplate) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CreateDescriptorUpdateTemplate) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, DestroyDescriptorUpdateTemplate) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CreateQueryPool) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, GetQueryPoolResults) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, ResetQueryPool) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CmdBeginQuery) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CmdEndQuery) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CmdResetQueryPool) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, DestroyQueryPool) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CmdPipelineBarrier2) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_VIDEO_QUEUE, CreateVideoSessionKHR) \ |
|
MACRO(1, 1, FF_VK_EXT_VIDEO_QUEUE, CreateVideoSessionParametersKHR) \ |
|
MACRO(1, 1, FF_VK_EXT_VIDEO_QUEUE, GetVideoSessionMemoryRequirementsKHR) \ |
|
MACRO(1, 1, FF_VK_EXT_VIDEO_QUEUE, BindVideoSessionMemoryKHR) \ |
|
MACRO(1, 1, FF_VK_EXT_VIDEO_QUEUE, CmdBeginVideoCodingKHR) \ |
|
MACRO(1, 1, FF_VK_EXT_VIDEO_QUEUE, CmdControlVideoCodingKHR) \ |
|
MACRO(1, 1, FF_VK_EXT_VIDEO_QUEUE, CmdEndVideoCodingKHR) \ |
|
MACRO(1, 1, FF_VK_EXT_VIDEO_QUEUE, DestroyVideoSessionParametersKHR) \ |
|
MACRO(1, 1, FF_VK_EXT_VIDEO_QUEUE, DestroyVideoSessionKHR) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_VIDEO_DECODE_QUEUE, CmdDecodeVideoKHR) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CreatePipelineLayout) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, DestroyPipelineLayout) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CreateComputePipelines) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, DestroyPipeline) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CreateSamplerYcbcrConversion) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, DestroySamplerYcbcrConversion) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CreateSampler) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, DestroySampler) \ |
|
\ |
|
\ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, CreateShaderModule) \ |
|
MACRO(1, 1, FF_VK_EXT_NO_FLAG, DestroyShaderModule) |
|
|
|
|
|
#define FN_LIST_WIN32(MACRO) \ |
|
MACRO(1, 1, FF_VK_EXT_EXTERNAL_WIN32_SEM, GetSemaphoreWin32HandleKHR) \ |
|
MACRO(1, 1, FF_VK_EXT_EXTERNAL_WIN32_MEMORY, GetMemoryWin32HandleKHR) |
|
|
|
|
|
#define PFN_DEF(req_inst, req_dev, ext_flag, name) \ |
|
PFN_vk##name name; |
|
|
|
|
|
typedef struct FFVulkanFunctions { |
|
FN_LIST(PFN_DEF) |
|
#ifdef _WIN32 |
|
FN_LIST_WIN32(PFN_DEF) |
|
#endif |
|
} FFVulkanFunctions; |
|
|
|
#endif |
|
|