mirror of https://github.com/AxioDL/boo.git
Initial working booTest on Vulkan
This commit is contained in:
parent
fba6d10b37
commit
0e48afcc02
|
@ -28,7 +28,8 @@ list(APPEND PLAT_SRCS
|
||||||
list(APPEND PLAT_HDRS
|
list(APPEND PLAT_HDRS
|
||||||
include/boo/graphicsdev/GLSLMacros.hpp
|
include/boo/graphicsdev/GLSLMacros.hpp
|
||||||
include/boo/graphicsdev/GL.hpp
|
include/boo/graphicsdev/GL.hpp
|
||||||
include/boo/graphicsdev/Vulkan.hpp)
|
include/boo/graphicsdev/Vulkan.hpp
|
||||||
|
include/boo/graphicsdev/VulkanDispatchTable.hpp)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
|
@ -137,14 +138,11 @@ else(NOT GEKKO)
|
||||||
include_directories(${DBUS_INCLUDE_DIR} ${DBUS_ARCH_INCLUDE_DIR})
|
include_directories(${DBUS_INCLUDE_DIR} ${DBUS_ARCH_INCLUDE_DIR})
|
||||||
list(APPEND _BOO_SYS_LIBS X11 Xi GL asound ${DBUS_LIBRARY} pthread)
|
list(APPEND _BOO_SYS_LIBS X11 Xi GL asound ${DBUS_LIBRARY} pthread)
|
||||||
|
|
||||||
unset(VULKAN_LIBRARY CACHE)
|
message(STATUS "Enabling Vulkan support")
|
||||||
find_library(VULKAN_LIBRARY vulkan)
|
list(APPEND _BOO_SYS_DEFINES -DBOO_HAS_VULKAN=1)
|
||||||
if(NOT (VULKAN_LIBRARY STREQUAL VULKAN_LIBRARY-NOTFOUND))
|
list(APPEND _BOO_SYS_LIBS xcb X11-xcb dl)
|
||||||
message(STATUS "Vulkan loader found; enabling Vulkan support")
|
list(APPEND PLAT_SRCS lib/graphicsdev/Vulkan.cpp
|
||||||
list(APPEND _BOO_SYS_DEFINES -DBOO_HAS_VULKAN=1)
|
lib/graphicsdev/VulkanDispatchTable.cpp)
|
||||||
list(APPEND _BOO_SYS_LIBS ${VULKAN_LIBRARY} xcb X11-xcb)
|
|
||||||
list(APPEND PLAT_SRCS lib/graphicsdev/Vulkan.cpp)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
||||||
list(APPEND PLAT_SRCS
|
list(APPEND PLAT_SRCS
|
||||||
|
|
|
@ -7,6 +7,10 @@
|
||||||
#define BOO_GLSL_BINDING_HEAD \
|
#define BOO_GLSL_BINDING_HEAD \
|
||||||
"#ifdef VULKAN\n" \
|
"#ifdef VULKAN\n" \
|
||||||
"#define gl_VertexID gl_VertexIndex\n" \
|
"#define gl_VertexID gl_VertexIndex\n" \
|
||||||
|
"#extension GL_ARB_separate_shader_objects: enable\n" \
|
||||||
|
"#define SBINDING(idx) layout(location=idx)\n" \
|
||||||
|
"#else\n" \
|
||||||
|
"#define SBINDING(idx)\n" \
|
||||||
"#endif\n" \
|
"#endif\n" \
|
||||||
"#extension GL_ARB_shading_language_420pack: enable\n" \
|
"#extension GL_ARB_shading_language_420pack: enable\n" \
|
||||||
"#ifdef GL_ARB_shading_language_420pack\n" \
|
"#ifdef GL_ARB_shading_language_420pack\n" \
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#include <unordered_set>
|
#include <unordered_set>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include <vulkan/vulkan.h>
|
#include "boo/graphicsdev/VulkanDispatchTable.hpp"
|
||||||
|
|
||||||
namespace boo
|
namespace boo
|
||||||
{
|
{
|
||||||
|
@ -61,7 +61,7 @@ struct VulkanContext
|
||||||
m_bufs.clear();
|
m_bufs.clear();
|
||||||
if (m_swapChain)
|
if (m_swapChain)
|
||||||
{
|
{
|
||||||
vkDestroySwapchainKHR(dev, m_swapChain, nullptr);
|
vk::DestroySwapchainKHR(dev, m_swapChain, nullptr);
|
||||||
m_swapChain = VK_NULL_HANDLE;
|
m_swapChain = VK_NULL_HANDLE;
|
||||||
}
|
}
|
||||||
m_backBuf = 0;
|
m_backBuf = 0;
|
||||||
|
@ -72,6 +72,7 @@ struct VulkanContext
|
||||||
std::unordered_map<const boo::IWindow*, std::unique_ptr<Window>> m_windows;
|
std::unordered_map<const boo::IWindow*, std::unique_ptr<Window>> m_windows;
|
||||||
|
|
||||||
void initVulkan(const char* appName);
|
void initVulkan(const char* appName);
|
||||||
|
void enumerateDevices();
|
||||||
void initDevice();
|
void initDevice();
|
||||||
void initSwapChain(Window& windowCtx, VkSurfaceKHR surface, VkFormat format);
|
void initSwapChain(Window& windowCtx, VkSurfaceKHR surface, VkFormat format);
|
||||||
void resizeSwapChain(Window& windowCtx, VkSurfaceKHR surface, VkFormat format);
|
void resizeSwapChain(Window& windowCtx, VkSurfaceKHR surface, VkFormat format);
|
||||||
|
|
|
@ -0,0 +1,225 @@
|
||||||
|
// This file is generated.
|
||||||
|
#ifndef HELPERSDISPATCHTABLE_H
|
||||||
|
#define HELPERSDISPATCHTABLE_H
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define VK_USE_PLATFORM_WIN32_KHR
|
||||||
|
#else
|
||||||
|
#define VK_USE_PLATFORM_XCB_KHR
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <vulkan/vulkan.h>
|
||||||
|
|
||||||
|
namespace vk {
|
||||||
|
|
||||||
|
// VK_core
|
||||||
|
extern PFN_vkCreateInstance CreateInstance;
|
||||||
|
extern PFN_vkDestroyInstance DestroyInstance;
|
||||||
|
extern PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices;
|
||||||
|
extern PFN_vkGetPhysicalDeviceFeatures GetPhysicalDeviceFeatures;
|
||||||
|
extern PFN_vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties;
|
||||||
|
extern PFN_vkGetPhysicalDeviceImageFormatProperties GetPhysicalDeviceImageFormatProperties;
|
||||||
|
extern PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties;
|
||||||
|
extern PFN_vkGetPhysicalDeviceQueueFamilyProperties GetPhysicalDeviceQueueFamilyProperties;
|
||||||
|
extern PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties;
|
||||||
|
extern PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
|
||||||
|
extern PFN_vkGetDeviceProcAddr GetDeviceProcAddr;
|
||||||
|
extern PFN_vkCreateDevice CreateDevice;
|
||||||
|
extern PFN_vkDestroyDevice DestroyDevice;
|
||||||
|
extern PFN_vkEnumerateInstanceExtensionProperties EnumerateInstanceExtensionProperties;
|
||||||
|
extern PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
|
||||||
|
extern PFN_vkEnumerateInstanceLayerProperties EnumerateInstanceLayerProperties;
|
||||||
|
extern PFN_vkGetDeviceQueue GetDeviceQueue;
|
||||||
|
extern PFN_vkQueueSubmit QueueSubmit;
|
||||||
|
extern PFN_vkQueueWaitIdle QueueWaitIdle;
|
||||||
|
extern PFN_vkDeviceWaitIdle DeviceWaitIdle;
|
||||||
|
extern PFN_vkAllocateMemory AllocateMemory;
|
||||||
|
extern PFN_vkFreeMemory FreeMemory;
|
||||||
|
extern PFN_vkMapMemory MapMemory;
|
||||||
|
extern PFN_vkUnmapMemory UnmapMemory;
|
||||||
|
extern PFN_vkFlushMappedMemoryRanges FlushMappedMemoryRanges;
|
||||||
|
extern PFN_vkInvalidateMappedMemoryRanges InvalidateMappedMemoryRanges;
|
||||||
|
extern PFN_vkGetDeviceMemoryCommitment GetDeviceMemoryCommitment;
|
||||||
|
extern PFN_vkBindBufferMemory BindBufferMemory;
|
||||||
|
extern PFN_vkBindImageMemory BindImageMemory;
|
||||||
|
extern PFN_vkGetBufferMemoryRequirements GetBufferMemoryRequirements;
|
||||||
|
extern PFN_vkGetImageMemoryRequirements GetImageMemoryRequirements;
|
||||||
|
extern PFN_vkGetImageSparseMemoryRequirements GetImageSparseMemoryRequirements;
|
||||||
|
extern PFN_vkGetPhysicalDeviceSparseImageFormatProperties GetPhysicalDeviceSparseImageFormatProperties;
|
||||||
|
extern PFN_vkQueueBindSparse QueueBindSparse;
|
||||||
|
extern PFN_vkCreateFence CreateFence;
|
||||||
|
extern PFN_vkDestroyFence DestroyFence;
|
||||||
|
extern PFN_vkResetFences ResetFences;
|
||||||
|
extern PFN_vkGetFenceStatus GetFenceStatus;
|
||||||
|
extern PFN_vkWaitForFences WaitForFences;
|
||||||
|
extern PFN_vkCreateSemaphore CreateSemaphore;
|
||||||
|
extern PFN_vkDestroySemaphore DestroySemaphore;
|
||||||
|
extern PFN_vkCreateEvent CreateEvent;
|
||||||
|
extern PFN_vkDestroyEvent DestroyEvent;
|
||||||
|
extern PFN_vkGetEventStatus GetEventStatus;
|
||||||
|
extern PFN_vkSetEvent SetEvent;
|
||||||
|
extern PFN_vkResetEvent ResetEvent;
|
||||||
|
extern PFN_vkCreateQueryPool CreateQueryPool;
|
||||||
|
extern PFN_vkDestroyQueryPool DestroyQueryPool;
|
||||||
|
extern PFN_vkGetQueryPoolResults GetQueryPoolResults;
|
||||||
|
extern PFN_vkCreateBuffer CreateBuffer;
|
||||||
|
extern PFN_vkDestroyBuffer DestroyBuffer;
|
||||||
|
extern PFN_vkCreateBufferView CreateBufferView;
|
||||||
|
extern PFN_vkDestroyBufferView DestroyBufferView;
|
||||||
|
extern PFN_vkCreateImage CreateImage;
|
||||||
|
extern PFN_vkDestroyImage DestroyImage;
|
||||||
|
extern PFN_vkGetImageSubresourceLayout GetImageSubresourceLayout;
|
||||||
|
extern PFN_vkCreateImageView CreateImageView;
|
||||||
|
extern PFN_vkDestroyImageView DestroyImageView;
|
||||||
|
extern PFN_vkCreateShaderModule CreateShaderModule;
|
||||||
|
extern PFN_vkDestroyShaderModule DestroyShaderModule;
|
||||||
|
extern PFN_vkCreatePipelineCache CreatePipelineCache;
|
||||||
|
extern PFN_vkDestroyPipelineCache DestroyPipelineCache;
|
||||||
|
extern PFN_vkGetPipelineCacheData GetPipelineCacheData;
|
||||||
|
extern PFN_vkMergePipelineCaches MergePipelineCaches;
|
||||||
|
extern PFN_vkCreateGraphicsPipelines CreateGraphicsPipelines;
|
||||||
|
extern PFN_vkCreateComputePipelines CreateComputePipelines;
|
||||||
|
extern PFN_vkDestroyPipeline DestroyPipeline;
|
||||||
|
extern PFN_vkCreatePipelineLayout CreatePipelineLayout;
|
||||||
|
extern PFN_vkDestroyPipelineLayout DestroyPipelineLayout;
|
||||||
|
extern PFN_vkCreateSampler CreateSampler;
|
||||||
|
extern PFN_vkDestroySampler DestroySampler;
|
||||||
|
extern PFN_vkCreateDescriptorSetLayout CreateDescriptorSetLayout;
|
||||||
|
extern PFN_vkDestroyDescriptorSetLayout DestroyDescriptorSetLayout;
|
||||||
|
extern PFN_vkCreateDescriptorPool CreateDescriptorPool;
|
||||||
|
extern PFN_vkDestroyDescriptorPool DestroyDescriptorPool;
|
||||||
|
extern PFN_vkResetDescriptorPool ResetDescriptorPool;
|
||||||
|
extern PFN_vkAllocateDescriptorSets AllocateDescriptorSets;
|
||||||
|
extern PFN_vkFreeDescriptorSets FreeDescriptorSets;
|
||||||
|
extern PFN_vkUpdateDescriptorSets UpdateDescriptorSets;
|
||||||
|
extern PFN_vkCreateFramebuffer CreateFramebuffer;
|
||||||
|
extern PFN_vkDestroyFramebuffer DestroyFramebuffer;
|
||||||
|
extern PFN_vkCreateRenderPass CreateRenderPass;
|
||||||
|
extern PFN_vkDestroyRenderPass DestroyRenderPass;
|
||||||
|
extern PFN_vkGetRenderAreaGranularity GetRenderAreaGranularity;
|
||||||
|
extern PFN_vkCreateCommandPool CreateCommandPool;
|
||||||
|
extern PFN_vkDestroyCommandPool DestroyCommandPool;
|
||||||
|
extern PFN_vkResetCommandPool ResetCommandPool;
|
||||||
|
extern PFN_vkAllocateCommandBuffers AllocateCommandBuffers;
|
||||||
|
extern PFN_vkFreeCommandBuffers FreeCommandBuffers;
|
||||||
|
extern PFN_vkBeginCommandBuffer BeginCommandBuffer;
|
||||||
|
extern PFN_vkEndCommandBuffer EndCommandBuffer;
|
||||||
|
extern PFN_vkResetCommandBuffer ResetCommandBuffer;
|
||||||
|
extern PFN_vkCmdBindPipeline CmdBindPipeline;
|
||||||
|
extern PFN_vkCmdSetViewport CmdSetViewport;
|
||||||
|
extern PFN_vkCmdSetScissor CmdSetScissor;
|
||||||
|
extern PFN_vkCmdSetLineWidth CmdSetLineWidth;
|
||||||
|
extern PFN_vkCmdSetDepthBias CmdSetDepthBias;
|
||||||
|
extern PFN_vkCmdSetBlendConstants CmdSetBlendConstants;
|
||||||
|
extern PFN_vkCmdSetDepthBounds CmdSetDepthBounds;
|
||||||
|
extern PFN_vkCmdSetStencilCompareMask CmdSetStencilCompareMask;
|
||||||
|
extern PFN_vkCmdSetStencilWriteMask CmdSetStencilWriteMask;
|
||||||
|
extern PFN_vkCmdSetStencilReference CmdSetStencilReference;
|
||||||
|
extern PFN_vkCmdBindDescriptorSets CmdBindDescriptorSets;
|
||||||
|
extern PFN_vkCmdBindIndexBuffer CmdBindIndexBuffer;
|
||||||
|
extern PFN_vkCmdBindVertexBuffers CmdBindVertexBuffers;
|
||||||
|
extern PFN_vkCmdDraw CmdDraw;
|
||||||
|
extern PFN_vkCmdDrawIndexed CmdDrawIndexed;
|
||||||
|
extern PFN_vkCmdDrawIndirect CmdDrawIndirect;
|
||||||
|
extern PFN_vkCmdDrawIndexedIndirect CmdDrawIndexedIndirect;
|
||||||
|
extern PFN_vkCmdDispatch CmdDispatch;
|
||||||
|
extern PFN_vkCmdDispatchIndirect CmdDispatchIndirect;
|
||||||
|
extern PFN_vkCmdCopyBuffer CmdCopyBuffer;
|
||||||
|
extern PFN_vkCmdCopyImage CmdCopyImage;
|
||||||
|
extern PFN_vkCmdBlitImage CmdBlitImage;
|
||||||
|
extern PFN_vkCmdCopyBufferToImage CmdCopyBufferToImage;
|
||||||
|
extern PFN_vkCmdCopyImageToBuffer CmdCopyImageToBuffer;
|
||||||
|
extern PFN_vkCmdUpdateBuffer CmdUpdateBuffer;
|
||||||
|
extern PFN_vkCmdFillBuffer CmdFillBuffer;
|
||||||
|
extern PFN_vkCmdClearColorImage CmdClearColorImage;
|
||||||
|
extern PFN_vkCmdClearDepthStencilImage CmdClearDepthStencilImage;
|
||||||
|
extern PFN_vkCmdClearAttachments CmdClearAttachments;
|
||||||
|
extern PFN_vkCmdResolveImage CmdResolveImage;
|
||||||
|
extern PFN_vkCmdSetEvent CmdSetEvent;
|
||||||
|
extern PFN_vkCmdResetEvent CmdResetEvent;
|
||||||
|
extern PFN_vkCmdWaitEvents CmdWaitEvents;
|
||||||
|
extern PFN_vkCmdPipelineBarrier CmdPipelineBarrier;
|
||||||
|
extern PFN_vkCmdBeginQuery CmdBeginQuery;
|
||||||
|
extern PFN_vkCmdEndQuery CmdEndQuery;
|
||||||
|
extern PFN_vkCmdResetQueryPool CmdResetQueryPool;
|
||||||
|
extern PFN_vkCmdWriteTimestamp CmdWriteTimestamp;
|
||||||
|
extern PFN_vkCmdCopyQueryPoolResults CmdCopyQueryPoolResults;
|
||||||
|
extern PFN_vkCmdPushConstants CmdPushConstants;
|
||||||
|
extern PFN_vkCmdBeginRenderPass CmdBeginRenderPass;
|
||||||
|
extern PFN_vkCmdNextSubpass CmdNextSubpass;
|
||||||
|
extern PFN_vkCmdEndRenderPass CmdEndRenderPass;
|
||||||
|
extern PFN_vkCmdExecuteCommands CmdExecuteCommands;
|
||||||
|
|
||||||
|
// VK_KHR_surface
|
||||||
|
extern PFN_vkDestroySurfaceKHR DestroySurfaceKHR;
|
||||||
|
extern PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR;
|
||||||
|
extern PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR GetPhysicalDeviceSurfaceCapabilitiesKHR;
|
||||||
|
extern PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR;
|
||||||
|
extern PFN_vkGetPhysicalDeviceSurfacePresentModesKHR GetPhysicalDeviceSurfacePresentModesKHR;
|
||||||
|
|
||||||
|
// VK_KHR_swapchain
|
||||||
|
extern PFN_vkCreateSwapchainKHR CreateSwapchainKHR;
|
||||||
|
extern PFN_vkDestroySwapchainKHR DestroySwapchainKHR;
|
||||||
|
extern PFN_vkGetSwapchainImagesKHR GetSwapchainImagesKHR;
|
||||||
|
extern PFN_vkAcquireNextImageKHR AcquireNextImageKHR;
|
||||||
|
extern PFN_vkQueuePresentKHR QueuePresentKHR;
|
||||||
|
|
||||||
|
// VK_KHR_display
|
||||||
|
extern PFN_vkGetPhysicalDeviceDisplayPropertiesKHR GetPhysicalDeviceDisplayPropertiesKHR;
|
||||||
|
extern PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR GetPhysicalDeviceDisplayPlanePropertiesKHR;
|
||||||
|
extern PFN_vkGetDisplayPlaneSupportedDisplaysKHR GetDisplayPlaneSupportedDisplaysKHR;
|
||||||
|
extern PFN_vkGetDisplayModePropertiesKHR GetDisplayModePropertiesKHR;
|
||||||
|
extern PFN_vkCreateDisplayModeKHR CreateDisplayModeKHR;
|
||||||
|
extern PFN_vkGetDisplayPlaneCapabilitiesKHR GetDisplayPlaneCapabilitiesKHR;
|
||||||
|
extern PFN_vkCreateDisplayPlaneSurfaceKHR CreateDisplayPlaneSurfaceKHR;
|
||||||
|
|
||||||
|
// VK_KHR_display_swapchain
|
||||||
|
extern PFN_vkCreateSharedSwapchainsKHR CreateSharedSwapchainsKHR;
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
||||||
|
// VK_KHR_xlib_surface
|
||||||
|
extern PFN_vkCreateXlibSurfaceKHR CreateXlibSurfaceKHR;
|
||||||
|
extern PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR GetPhysicalDeviceXlibPresentationSupportKHR;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||||
|
// VK_KHR_xcb_surface
|
||||||
|
extern PFN_vkCreateXcbSurfaceKHR CreateXcbSurfaceKHR;
|
||||||
|
extern PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR GetPhysicalDeviceXcbPresentationSupportKHR;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||||
|
// VK_KHR_wayland_surface
|
||||||
|
extern PFN_vkCreateWaylandSurfaceKHR CreateWaylandSurfaceKHR;
|
||||||
|
extern PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR GetPhysicalDeviceWaylandPresentationSupportKHR;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_MIR_KHR
|
||||||
|
// VK_KHR_mir_surface
|
||||||
|
extern PFN_vkCreateMirSurfaceKHR CreateMirSurfaceKHR;
|
||||||
|
extern PFN_vkGetPhysicalDeviceMirPresentationSupportKHR GetPhysicalDeviceMirPresentationSupportKHR;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||||
|
// VK_KHR_android_surface
|
||||||
|
extern PFN_vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||||
|
// VK_KHR_win32_surface
|
||||||
|
extern PFN_vkCreateWin32SurfaceKHR CreateWin32SurfaceKHR;
|
||||||
|
extern PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR GetPhysicalDeviceWin32PresentationSupportKHR;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// VK_EXT_debug_report
|
||||||
|
extern PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT;
|
||||||
|
extern PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT;
|
||||||
|
extern PFN_vkDebugReportMessageEXT DebugReportMessageEXT;
|
||||||
|
|
||||||
|
void init_dispatch_table_top(PFN_vkGetInstanceProcAddr get_instance_proc_addr);
|
||||||
|
void init_dispatch_table_middle(VkInstance instance, bool include_bottom);
|
||||||
|
void init_dispatch_table_bottom(VkInstance instance, VkDevice dev);
|
||||||
|
|
||||||
|
} // namespace vk
|
||||||
|
|
||||||
|
#endif // HELPERSDISPATCHTABLE_H
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,525 @@
|
||||||
|
// This file is generated.
|
||||||
|
#include "boo/graphicsdev/VulkanDispatchTable.hpp"
|
||||||
|
|
||||||
|
namespace vk {
|
||||||
|
|
||||||
|
PFN_vkCreateInstance CreateInstance;
|
||||||
|
PFN_vkDestroyInstance DestroyInstance;
|
||||||
|
PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices;
|
||||||
|
PFN_vkGetPhysicalDeviceFeatures GetPhysicalDeviceFeatures;
|
||||||
|
PFN_vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties;
|
||||||
|
PFN_vkGetPhysicalDeviceImageFormatProperties GetPhysicalDeviceImageFormatProperties;
|
||||||
|
PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties;
|
||||||
|
PFN_vkGetPhysicalDeviceQueueFamilyProperties GetPhysicalDeviceQueueFamilyProperties;
|
||||||
|
PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties;
|
||||||
|
PFN_vkGetInstanceProcAddr GetInstanceProcAddr;
|
||||||
|
PFN_vkGetDeviceProcAddr GetDeviceProcAddr;
|
||||||
|
PFN_vkCreateDevice CreateDevice;
|
||||||
|
PFN_vkDestroyDevice DestroyDevice;
|
||||||
|
PFN_vkEnumerateInstanceExtensionProperties EnumerateInstanceExtensionProperties;
|
||||||
|
PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties;
|
||||||
|
PFN_vkEnumerateInstanceLayerProperties EnumerateInstanceLayerProperties;
|
||||||
|
PFN_vkGetDeviceQueue GetDeviceQueue;
|
||||||
|
PFN_vkQueueSubmit QueueSubmit;
|
||||||
|
PFN_vkQueueWaitIdle QueueWaitIdle;
|
||||||
|
PFN_vkDeviceWaitIdle DeviceWaitIdle;
|
||||||
|
PFN_vkAllocateMemory AllocateMemory;
|
||||||
|
PFN_vkFreeMemory FreeMemory;
|
||||||
|
PFN_vkMapMemory MapMemory;
|
||||||
|
PFN_vkUnmapMemory UnmapMemory;
|
||||||
|
PFN_vkFlushMappedMemoryRanges FlushMappedMemoryRanges;
|
||||||
|
PFN_vkInvalidateMappedMemoryRanges InvalidateMappedMemoryRanges;
|
||||||
|
PFN_vkGetDeviceMemoryCommitment GetDeviceMemoryCommitment;
|
||||||
|
PFN_vkBindBufferMemory BindBufferMemory;
|
||||||
|
PFN_vkBindImageMemory BindImageMemory;
|
||||||
|
PFN_vkGetBufferMemoryRequirements GetBufferMemoryRequirements;
|
||||||
|
PFN_vkGetImageMemoryRequirements GetImageMemoryRequirements;
|
||||||
|
PFN_vkGetImageSparseMemoryRequirements GetImageSparseMemoryRequirements;
|
||||||
|
PFN_vkGetPhysicalDeviceSparseImageFormatProperties GetPhysicalDeviceSparseImageFormatProperties;
|
||||||
|
PFN_vkQueueBindSparse QueueBindSparse;
|
||||||
|
PFN_vkCreateFence CreateFence;
|
||||||
|
PFN_vkDestroyFence DestroyFence;
|
||||||
|
PFN_vkResetFences ResetFences;
|
||||||
|
PFN_vkGetFenceStatus GetFenceStatus;
|
||||||
|
PFN_vkWaitForFences WaitForFences;
|
||||||
|
PFN_vkCreateSemaphore CreateSemaphore;
|
||||||
|
PFN_vkDestroySemaphore DestroySemaphore;
|
||||||
|
PFN_vkCreateEvent CreateEvent;
|
||||||
|
PFN_vkDestroyEvent DestroyEvent;
|
||||||
|
PFN_vkGetEventStatus GetEventStatus;
|
||||||
|
PFN_vkSetEvent SetEvent;
|
||||||
|
PFN_vkResetEvent ResetEvent;
|
||||||
|
PFN_vkCreateQueryPool CreateQueryPool;
|
||||||
|
PFN_vkDestroyQueryPool DestroyQueryPool;
|
||||||
|
PFN_vkGetQueryPoolResults GetQueryPoolResults;
|
||||||
|
PFN_vkCreateBuffer CreateBuffer;
|
||||||
|
PFN_vkDestroyBuffer DestroyBuffer;
|
||||||
|
PFN_vkCreateBufferView CreateBufferView;
|
||||||
|
PFN_vkDestroyBufferView DestroyBufferView;
|
||||||
|
PFN_vkCreateImage CreateImage;
|
||||||
|
PFN_vkDestroyImage DestroyImage;
|
||||||
|
PFN_vkGetImageSubresourceLayout GetImageSubresourceLayout;
|
||||||
|
PFN_vkCreateImageView CreateImageView;
|
||||||
|
PFN_vkDestroyImageView DestroyImageView;
|
||||||
|
PFN_vkCreateShaderModule CreateShaderModule;
|
||||||
|
PFN_vkDestroyShaderModule DestroyShaderModule;
|
||||||
|
PFN_vkCreatePipelineCache CreatePipelineCache;
|
||||||
|
PFN_vkDestroyPipelineCache DestroyPipelineCache;
|
||||||
|
PFN_vkGetPipelineCacheData GetPipelineCacheData;
|
||||||
|
PFN_vkMergePipelineCaches MergePipelineCaches;
|
||||||
|
PFN_vkCreateGraphicsPipelines CreateGraphicsPipelines;
|
||||||
|
PFN_vkCreateComputePipelines CreateComputePipelines;
|
||||||
|
PFN_vkDestroyPipeline DestroyPipeline;
|
||||||
|
PFN_vkCreatePipelineLayout CreatePipelineLayout;
|
||||||
|
PFN_vkDestroyPipelineLayout DestroyPipelineLayout;
|
||||||
|
PFN_vkCreateSampler CreateSampler;
|
||||||
|
PFN_vkDestroySampler DestroySampler;
|
||||||
|
PFN_vkCreateDescriptorSetLayout CreateDescriptorSetLayout;
|
||||||
|
PFN_vkDestroyDescriptorSetLayout DestroyDescriptorSetLayout;
|
||||||
|
PFN_vkCreateDescriptorPool CreateDescriptorPool;
|
||||||
|
PFN_vkDestroyDescriptorPool DestroyDescriptorPool;
|
||||||
|
PFN_vkResetDescriptorPool ResetDescriptorPool;
|
||||||
|
PFN_vkAllocateDescriptorSets AllocateDescriptorSets;
|
||||||
|
PFN_vkFreeDescriptorSets FreeDescriptorSets;
|
||||||
|
PFN_vkUpdateDescriptorSets UpdateDescriptorSets;
|
||||||
|
PFN_vkCreateFramebuffer CreateFramebuffer;
|
||||||
|
PFN_vkDestroyFramebuffer DestroyFramebuffer;
|
||||||
|
PFN_vkCreateRenderPass CreateRenderPass;
|
||||||
|
PFN_vkDestroyRenderPass DestroyRenderPass;
|
||||||
|
PFN_vkGetRenderAreaGranularity GetRenderAreaGranularity;
|
||||||
|
PFN_vkCreateCommandPool CreateCommandPool;
|
||||||
|
PFN_vkDestroyCommandPool DestroyCommandPool;
|
||||||
|
PFN_vkResetCommandPool ResetCommandPool;
|
||||||
|
PFN_vkAllocateCommandBuffers AllocateCommandBuffers;
|
||||||
|
PFN_vkFreeCommandBuffers FreeCommandBuffers;
|
||||||
|
PFN_vkBeginCommandBuffer BeginCommandBuffer;
|
||||||
|
PFN_vkEndCommandBuffer EndCommandBuffer;
|
||||||
|
PFN_vkResetCommandBuffer ResetCommandBuffer;
|
||||||
|
PFN_vkCmdBindPipeline CmdBindPipeline;
|
||||||
|
PFN_vkCmdSetViewport CmdSetViewport;
|
||||||
|
PFN_vkCmdSetScissor CmdSetScissor;
|
||||||
|
PFN_vkCmdSetLineWidth CmdSetLineWidth;
|
||||||
|
PFN_vkCmdSetDepthBias CmdSetDepthBias;
|
||||||
|
PFN_vkCmdSetBlendConstants CmdSetBlendConstants;
|
||||||
|
PFN_vkCmdSetDepthBounds CmdSetDepthBounds;
|
||||||
|
PFN_vkCmdSetStencilCompareMask CmdSetStencilCompareMask;
|
||||||
|
PFN_vkCmdSetStencilWriteMask CmdSetStencilWriteMask;
|
||||||
|
PFN_vkCmdSetStencilReference CmdSetStencilReference;
|
||||||
|
PFN_vkCmdBindDescriptorSets CmdBindDescriptorSets;
|
||||||
|
PFN_vkCmdBindIndexBuffer CmdBindIndexBuffer;
|
||||||
|
PFN_vkCmdBindVertexBuffers CmdBindVertexBuffers;
|
||||||
|
PFN_vkCmdDraw CmdDraw;
|
||||||
|
PFN_vkCmdDrawIndexed CmdDrawIndexed;
|
||||||
|
PFN_vkCmdDrawIndirect CmdDrawIndirect;
|
||||||
|
PFN_vkCmdDrawIndexedIndirect CmdDrawIndexedIndirect;
|
||||||
|
PFN_vkCmdDispatch CmdDispatch;
|
||||||
|
PFN_vkCmdDispatchIndirect CmdDispatchIndirect;
|
||||||
|
PFN_vkCmdCopyBuffer CmdCopyBuffer;
|
||||||
|
PFN_vkCmdCopyImage CmdCopyImage;
|
||||||
|
PFN_vkCmdBlitImage CmdBlitImage;
|
||||||
|
PFN_vkCmdCopyBufferToImage CmdCopyBufferToImage;
|
||||||
|
PFN_vkCmdCopyImageToBuffer CmdCopyImageToBuffer;
|
||||||
|
PFN_vkCmdUpdateBuffer CmdUpdateBuffer;
|
||||||
|
PFN_vkCmdFillBuffer CmdFillBuffer;
|
||||||
|
PFN_vkCmdClearColorImage CmdClearColorImage;
|
||||||
|
PFN_vkCmdClearDepthStencilImage CmdClearDepthStencilImage;
|
||||||
|
PFN_vkCmdClearAttachments CmdClearAttachments;
|
||||||
|
PFN_vkCmdResolveImage CmdResolveImage;
|
||||||
|
PFN_vkCmdSetEvent CmdSetEvent;
|
||||||
|
PFN_vkCmdResetEvent CmdResetEvent;
|
||||||
|
PFN_vkCmdWaitEvents CmdWaitEvents;
|
||||||
|
PFN_vkCmdPipelineBarrier CmdPipelineBarrier;
|
||||||
|
PFN_vkCmdBeginQuery CmdBeginQuery;
|
||||||
|
PFN_vkCmdEndQuery CmdEndQuery;
|
||||||
|
PFN_vkCmdResetQueryPool CmdResetQueryPool;
|
||||||
|
PFN_vkCmdWriteTimestamp CmdWriteTimestamp;
|
||||||
|
PFN_vkCmdCopyQueryPoolResults CmdCopyQueryPoolResults;
|
||||||
|
PFN_vkCmdPushConstants CmdPushConstants;
|
||||||
|
PFN_vkCmdBeginRenderPass CmdBeginRenderPass;
|
||||||
|
PFN_vkCmdNextSubpass CmdNextSubpass;
|
||||||
|
PFN_vkCmdEndRenderPass CmdEndRenderPass;
|
||||||
|
PFN_vkCmdExecuteCommands CmdExecuteCommands;
|
||||||
|
PFN_vkDestroySurfaceKHR DestroySurfaceKHR;
|
||||||
|
PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR;
|
||||||
|
PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR GetPhysicalDeviceSurfaceCapabilitiesKHR;
|
||||||
|
PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR;
|
||||||
|
PFN_vkGetPhysicalDeviceSurfacePresentModesKHR GetPhysicalDeviceSurfacePresentModesKHR;
|
||||||
|
PFN_vkCreateSwapchainKHR CreateSwapchainKHR;
|
||||||
|
PFN_vkDestroySwapchainKHR DestroySwapchainKHR;
|
||||||
|
PFN_vkGetSwapchainImagesKHR GetSwapchainImagesKHR;
|
||||||
|
PFN_vkAcquireNextImageKHR AcquireNextImageKHR;
|
||||||
|
PFN_vkQueuePresentKHR QueuePresentKHR;
|
||||||
|
PFN_vkGetPhysicalDeviceDisplayPropertiesKHR GetPhysicalDeviceDisplayPropertiesKHR;
|
||||||
|
PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR GetPhysicalDeviceDisplayPlanePropertiesKHR;
|
||||||
|
PFN_vkGetDisplayPlaneSupportedDisplaysKHR GetDisplayPlaneSupportedDisplaysKHR;
|
||||||
|
PFN_vkGetDisplayModePropertiesKHR GetDisplayModePropertiesKHR;
|
||||||
|
PFN_vkCreateDisplayModeKHR CreateDisplayModeKHR;
|
||||||
|
PFN_vkGetDisplayPlaneCapabilitiesKHR GetDisplayPlaneCapabilitiesKHR;
|
||||||
|
PFN_vkCreateDisplayPlaneSurfaceKHR CreateDisplayPlaneSurfaceKHR;
|
||||||
|
PFN_vkCreateSharedSwapchainsKHR CreateSharedSwapchainsKHR;
|
||||||
|
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
||||||
|
PFN_vkCreateXlibSurfaceKHR CreateXlibSurfaceKHR;
|
||||||
|
PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR GetPhysicalDeviceXlibPresentationSupportKHR;
|
||||||
|
#endif
|
||||||
|
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||||
|
PFN_vkCreateXcbSurfaceKHR CreateXcbSurfaceKHR;
|
||||||
|
PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR GetPhysicalDeviceXcbPresentationSupportKHR;
|
||||||
|
#endif
|
||||||
|
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||||
|
PFN_vkCreateWaylandSurfaceKHR CreateWaylandSurfaceKHR;
|
||||||
|
PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR GetPhysicalDeviceWaylandPresentationSupportKHR;
|
||||||
|
#endif
|
||||||
|
#ifdef VK_USE_PLATFORM_MIR_KHR
|
||||||
|
PFN_vkCreateMirSurfaceKHR CreateMirSurfaceKHR;
|
||||||
|
PFN_vkGetPhysicalDeviceMirPresentationSupportKHR GetPhysicalDeviceMirPresentationSupportKHR;
|
||||||
|
#endif
|
||||||
|
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||||
|
PFN_vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR;
|
||||||
|
#endif
|
||||||
|
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||||
|
PFN_vkCreateWin32SurfaceKHR CreateWin32SurfaceKHR;
|
||||||
|
PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR GetPhysicalDeviceWin32PresentationSupportKHR;
|
||||||
|
#endif
|
||||||
|
PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT;
|
||||||
|
PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT;
|
||||||
|
PFN_vkDebugReportMessageEXT DebugReportMessageEXT;
|
||||||
|
|
||||||
|
void init_dispatch_table_top(PFN_vkGetInstanceProcAddr get_instance_proc_addr)
|
||||||
|
{
|
||||||
|
GetInstanceProcAddr = get_instance_proc_addr;
|
||||||
|
|
||||||
|
CreateInstance = reinterpret_cast<PFN_vkCreateInstance>(GetInstanceProcAddr(VK_NULL_HANDLE, "vkCreateInstance"));
|
||||||
|
EnumerateInstanceExtensionProperties = reinterpret_cast<PFN_vkEnumerateInstanceExtensionProperties>(GetInstanceProcAddr(VK_NULL_HANDLE, "vkEnumerateInstanceExtensionProperties"));
|
||||||
|
EnumerateInstanceLayerProperties = reinterpret_cast<PFN_vkEnumerateInstanceLayerProperties>(GetInstanceProcAddr(VK_NULL_HANDLE, "vkEnumerateInstanceLayerProperties"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void init_dispatch_table_middle(VkInstance instance, bool include_bottom)
|
||||||
|
{
|
||||||
|
GetInstanceProcAddr = reinterpret_cast<PFN_vkGetInstanceProcAddr>(GetInstanceProcAddr(instance, "vkGetInstanceProcAddr"));
|
||||||
|
|
||||||
|
DestroyInstance = reinterpret_cast<PFN_vkDestroyInstance>(GetInstanceProcAddr(instance, "vkDestroyInstance"));
|
||||||
|
EnumeratePhysicalDevices = reinterpret_cast<PFN_vkEnumeratePhysicalDevices>(GetInstanceProcAddr(instance, "vkEnumeratePhysicalDevices"));
|
||||||
|
GetPhysicalDeviceFeatures = reinterpret_cast<PFN_vkGetPhysicalDeviceFeatures>(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceFeatures"));
|
||||||
|
GetPhysicalDeviceFormatProperties = reinterpret_cast<PFN_vkGetPhysicalDeviceFormatProperties>(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceFormatProperties"));
|
||||||
|
GetPhysicalDeviceImageFormatProperties = reinterpret_cast<PFN_vkGetPhysicalDeviceImageFormatProperties>(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceImageFormatProperties"));
|
||||||
|
GetPhysicalDeviceProperties = reinterpret_cast<PFN_vkGetPhysicalDeviceProperties>(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceProperties"));
|
||||||
|
GetPhysicalDeviceQueueFamilyProperties = reinterpret_cast<PFN_vkGetPhysicalDeviceQueueFamilyProperties>(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceQueueFamilyProperties"));
|
||||||
|
GetPhysicalDeviceMemoryProperties = reinterpret_cast<PFN_vkGetPhysicalDeviceMemoryProperties>(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceMemoryProperties"));
|
||||||
|
CreateDevice = reinterpret_cast<PFN_vkCreateDevice>(GetInstanceProcAddr(instance, "vkCreateDevice"));
|
||||||
|
EnumerateDeviceExtensionProperties = reinterpret_cast<PFN_vkEnumerateDeviceExtensionProperties>(GetInstanceProcAddr(instance, "vkEnumerateDeviceExtensionProperties"));
|
||||||
|
GetPhysicalDeviceSparseImageFormatProperties = reinterpret_cast<PFN_vkGetPhysicalDeviceSparseImageFormatProperties>(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSparseImageFormatProperties"));
|
||||||
|
DestroySurfaceKHR = reinterpret_cast<PFN_vkDestroySurfaceKHR>(GetInstanceProcAddr(instance, "vkDestroySurfaceKHR"));
|
||||||
|
GetPhysicalDeviceSurfaceSupportKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceSurfaceSupportKHR>(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceSupportKHR"));
|
||||||
|
GetPhysicalDeviceSurfaceCapabilitiesKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR>(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR"));
|
||||||
|
GetPhysicalDeviceSurfaceFormatsKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceSurfaceFormatsKHR>(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfaceFormatsKHR"));
|
||||||
|
GetPhysicalDeviceSurfacePresentModesKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceSurfacePresentModesKHR>(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceSurfacePresentModesKHR"));
|
||||||
|
GetPhysicalDeviceDisplayPropertiesKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceDisplayPropertiesKHR>(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceDisplayPropertiesKHR"));
|
||||||
|
GetPhysicalDeviceDisplayPlanePropertiesKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR>(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"));
|
||||||
|
GetDisplayPlaneSupportedDisplaysKHR = reinterpret_cast<PFN_vkGetDisplayPlaneSupportedDisplaysKHR>(GetInstanceProcAddr(instance, "vkGetDisplayPlaneSupportedDisplaysKHR"));
|
||||||
|
GetDisplayModePropertiesKHR = reinterpret_cast<PFN_vkGetDisplayModePropertiesKHR>(GetInstanceProcAddr(instance, "vkGetDisplayModePropertiesKHR"));
|
||||||
|
CreateDisplayModeKHR = reinterpret_cast<PFN_vkCreateDisplayModeKHR>(GetInstanceProcAddr(instance, "vkCreateDisplayModeKHR"));
|
||||||
|
GetDisplayPlaneCapabilitiesKHR = reinterpret_cast<PFN_vkGetDisplayPlaneCapabilitiesKHR>(GetInstanceProcAddr(instance, "vkGetDisplayPlaneCapabilitiesKHR"));
|
||||||
|
CreateDisplayPlaneSurfaceKHR = reinterpret_cast<PFN_vkCreateDisplayPlaneSurfaceKHR>(GetInstanceProcAddr(instance, "vkCreateDisplayPlaneSurfaceKHR"));
|
||||||
|
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
||||||
|
CreateXlibSurfaceKHR = reinterpret_cast<PFN_vkCreateXlibSurfaceKHR>(GetInstanceProcAddr(instance, "vkCreateXlibSurfaceKHR"));
|
||||||
|
#endif
|
||||||
|
#ifdef VK_USE_PLATFORM_XLIB_KHR
|
||||||
|
GetPhysicalDeviceXlibPresentationSupportKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR>(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceXlibPresentationSupportKHR"));
|
||||||
|
#endif
|
||||||
|
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||||
|
CreateXcbSurfaceKHR = reinterpret_cast<PFN_vkCreateXcbSurfaceKHR>(GetInstanceProcAddr(instance, "vkCreateXcbSurfaceKHR"));
|
||||||
|
#endif
|
||||||
|
#ifdef VK_USE_PLATFORM_XCB_KHR
|
||||||
|
GetPhysicalDeviceXcbPresentationSupportKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR>(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR"));
|
||||||
|
#endif
|
||||||
|
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||||
|
CreateWaylandSurfaceKHR = reinterpret_cast<PFN_vkCreateWaylandSurfaceKHR>(GetInstanceProcAddr(instance, "vkCreateWaylandSurfaceKHR"));
|
||||||
|
#endif
|
||||||
|
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
|
||||||
|
GetPhysicalDeviceWaylandPresentationSupportKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR>(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"));
|
||||||
|
#endif
|
||||||
|
#ifdef VK_USE_PLATFORM_MIR_KHR
|
||||||
|
CreateMirSurfaceKHR = reinterpret_cast<PFN_vkCreateMirSurfaceKHR>(GetInstanceProcAddr(instance, "vkCreateMirSurfaceKHR"));
|
||||||
|
#endif
|
||||||
|
#ifdef VK_USE_PLATFORM_MIR_KHR
|
||||||
|
GetPhysicalDeviceMirPresentationSupportKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceMirPresentationSupportKHR>(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceMirPresentationSupportKHR"));
|
||||||
|
#endif
|
||||||
|
#ifdef VK_USE_PLATFORM_ANDROID_KHR
|
||||||
|
CreateAndroidSurfaceKHR = reinterpret_cast<PFN_vkCreateAndroidSurfaceKHR>(GetInstanceProcAddr(instance, "vkCreateAndroidSurfaceKHR"));
|
||||||
|
#endif
|
||||||
|
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||||
|
CreateWin32SurfaceKHR = reinterpret_cast<PFN_vkCreateWin32SurfaceKHR>(GetInstanceProcAddr(instance, "vkCreateWin32SurfaceKHR"));
|
||||||
|
#endif
|
||||||
|
#ifdef VK_USE_PLATFORM_WIN32_KHR
|
||||||
|
GetPhysicalDeviceWin32PresentationSupportKHR = reinterpret_cast<PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR>(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR"));
|
||||||
|
#endif
|
||||||
|
CreateDebugReportCallbackEXT = reinterpret_cast<PFN_vkCreateDebugReportCallbackEXT>(GetInstanceProcAddr(instance, "vkCreateDebugReportCallbackEXT"));
|
||||||
|
DestroyDebugReportCallbackEXT = reinterpret_cast<PFN_vkDestroyDebugReportCallbackEXT>(GetInstanceProcAddr(instance, "vkDestroyDebugReportCallbackEXT"));
|
||||||
|
DebugReportMessageEXT = reinterpret_cast<PFN_vkDebugReportMessageEXT>(GetInstanceProcAddr(instance, "vkDebugReportMessageEXT"));
|
||||||
|
|
||||||
|
if (!include_bottom)
|
||||||
|
return;
|
||||||
|
|
||||||
|
GetDeviceProcAddr = reinterpret_cast<PFN_vkGetDeviceProcAddr>(GetInstanceProcAddr(instance, "vkGetDeviceProcAddr"));
|
||||||
|
DestroyDevice = reinterpret_cast<PFN_vkDestroyDevice>(GetInstanceProcAddr(instance, "vkDestroyDevice"));
|
||||||
|
GetDeviceQueue = reinterpret_cast<PFN_vkGetDeviceQueue>(GetInstanceProcAddr(instance, "vkGetDeviceQueue"));
|
||||||
|
QueueSubmit = reinterpret_cast<PFN_vkQueueSubmit>(GetInstanceProcAddr(instance, "vkQueueSubmit"));
|
||||||
|
QueueWaitIdle = reinterpret_cast<PFN_vkQueueWaitIdle>(GetInstanceProcAddr(instance, "vkQueueWaitIdle"));
|
||||||
|
DeviceWaitIdle = reinterpret_cast<PFN_vkDeviceWaitIdle>(GetInstanceProcAddr(instance, "vkDeviceWaitIdle"));
|
||||||
|
AllocateMemory = reinterpret_cast<PFN_vkAllocateMemory>(GetInstanceProcAddr(instance, "vkAllocateMemory"));
|
||||||
|
FreeMemory = reinterpret_cast<PFN_vkFreeMemory>(GetInstanceProcAddr(instance, "vkFreeMemory"));
|
||||||
|
MapMemory = reinterpret_cast<PFN_vkMapMemory>(GetInstanceProcAddr(instance, "vkMapMemory"));
|
||||||
|
UnmapMemory = reinterpret_cast<PFN_vkUnmapMemory>(GetInstanceProcAddr(instance, "vkUnmapMemory"));
|
||||||
|
FlushMappedMemoryRanges = reinterpret_cast<PFN_vkFlushMappedMemoryRanges>(GetInstanceProcAddr(instance, "vkFlushMappedMemoryRanges"));
|
||||||
|
InvalidateMappedMemoryRanges = reinterpret_cast<PFN_vkInvalidateMappedMemoryRanges>(GetInstanceProcAddr(instance, "vkInvalidateMappedMemoryRanges"));
|
||||||
|
GetDeviceMemoryCommitment = reinterpret_cast<PFN_vkGetDeviceMemoryCommitment>(GetInstanceProcAddr(instance, "vkGetDeviceMemoryCommitment"));
|
||||||
|
BindBufferMemory = reinterpret_cast<PFN_vkBindBufferMemory>(GetInstanceProcAddr(instance, "vkBindBufferMemory"));
|
||||||
|
BindImageMemory = reinterpret_cast<PFN_vkBindImageMemory>(GetInstanceProcAddr(instance, "vkBindImageMemory"));
|
||||||
|
GetBufferMemoryRequirements = reinterpret_cast<PFN_vkGetBufferMemoryRequirements>(GetInstanceProcAddr(instance, "vkGetBufferMemoryRequirements"));
|
||||||
|
GetImageMemoryRequirements = reinterpret_cast<PFN_vkGetImageMemoryRequirements>(GetInstanceProcAddr(instance, "vkGetImageMemoryRequirements"));
|
||||||
|
GetImageSparseMemoryRequirements = reinterpret_cast<PFN_vkGetImageSparseMemoryRequirements>(GetInstanceProcAddr(instance, "vkGetImageSparseMemoryRequirements"));
|
||||||
|
QueueBindSparse = reinterpret_cast<PFN_vkQueueBindSparse>(GetInstanceProcAddr(instance, "vkQueueBindSparse"));
|
||||||
|
CreateFence = reinterpret_cast<PFN_vkCreateFence>(GetInstanceProcAddr(instance, "vkCreateFence"));
|
||||||
|
DestroyFence = reinterpret_cast<PFN_vkDestroyFence>(GetInstanceProcAddr(instance, "vkDestroyFence"));
|
||||||
|
ResetFences = reinterpret_cast<PFN_vkResetFences>(GetInstanceProcAddr(instance, "vkResetFences"));
|
||||||
|
GetFenceStatus = reinterpret_cast<PFN_vkGetFenceStatus>(GetInstanceProcAddr(instance, "vkGetFenceStatus"));
|
||||||
|
WaitForFences = reinterpret_cast<PFN_vkWaitForFences>(GetInstanceProcAddr(instance, "vkWaitForFences"));
|
||||||
|
CreateSemaphore = reinterpret_cast<PFN_vkCreateSemaphore>(GetInstanceProcAddr(instance, "vkCreateSemaphore"));
|
||||||
|
DestroySemaphore = reinterpret_cast<PFN_vkDestroySemaphore>(GetInstanceProcAddr(instance, "vkDestroySemaphore"));
|
||||||
|
CreateEvent = reinterpret_cast<PFN_vkCreateEvent>(GetInstanceProcAddr(instance, "vkCreateEvent"));
|
||||||
|
DestroyEvent = reinterpret_cast<PFN_vkDestroyEvent>(GetInstanceProcAddr(instance, "vkDestroyEvent"));
|
||||||
|
GetEventStatus = reinterpret_cast<PFN_vkGetEventStatus>(GetInstanceProcAddr(instance, "vkGetEventStatus"));
|
||||||
|
SetEvent = reinterpret_cast<PFN_vkSetEvent>(GetInstanceProcAddr(instance, "vkSetEvent"));
|
||||||
|
ResetEvent = reinterpret_cast<PFN_vkResetEvent>(GetInstanceProcAddr(instance, "vkResetEvent"));
|
||||||
|
CreateQueryPool = reinterpret_cast<PFN_vkCreateQueryPool>(GetInstanceProcAddr(instance, "vkCreateQueryPool"));
|
||||||
|
DestroyQueryPool = reinterpret_cast<PFN_vkDestroyQueryPool>(GetInstanceProcAddr(instance, "vkDestroyQueryPool"));
|
||||||
|
GetQueryPoolResults = reinterpret_cast<PFN_vkGetQueryPoolResults>(GetInstanceProcAddr(instance, "vkGetQueryPoolResults"));
|
||||||
|
CreateBuffer = reinterpret_cast<PFN_vkCreateBuffer>(GetInstanceProcAddr(instance, "vkCreateBuffer"));
|
||||||
|
DestroyBuffer = reinterpret_cast<PFN_vkDestroyBuffer>(GetInstanceProcAddr(instance, "vkDestroyBuffer"));
|
||||||
|
CreateBufferView = reinterpret_cast<PFN_vkCreateBufferView>(GetInstanceProcAddr(instance, "vkCreateBufferView"));
|
||||||
|
DestroyBufferView = reinterpret_cast<PFN_vkDestroyBufferView>(GetInstanceProcAddr(instance, "vkDestroyBufferView"));
|
||||||
|
CreateImage = reinterpret_cast<PFN_vkCreateImage>(GetInstanceProcAddr(instance, "vkCreateImage"));
|
||||||
|
DestroyImage = reinterpret_cast<PFN_vkDestroyImage>(GetInstanceProcAddr(instance, "vkDestroyImage"));
|
||||||
|
GetImageSubresourceLayout = reinterpret_cast<PFN_vkGetImageSubresourceLayout>(GetInstanceProcAddr(instance, "vkGetImageSubresourceLayout"));
|
||||||
|
CreateImageView = reinterpret_cast<PFN_vkCreateImageView>(GetInstanceProcAddr(instance, "vkCreateImageView"));
|
||||||
|
DestroyImageView = reinterpret_cast<PFN_vkDestroyImageView>(GetInstanceProcAddr(instance, "vkDestroyImageView"));
|
||||||
|
CreateShaderModule = reinterpret_cast<PFN_vkCreateShaderModule>(GetInstanceProcAddr(instance, "vkCreateShaderModule"));
|
||||||
|
DestroyShaderModule = reinterpret_cast<PFN_vkDestroyShaderModule>(GetInstanceProcAddr(instance, "vkDestroyShaderModule"));
|
||||||
|
CreatePipelineCache = reinterpret_cast<PFN_vkCreatePipelineCache>(GetInstanceProcAddr(instance, "vkCreatePipelineCache"));
|
||||||
|
DestroyPipelineCache = reinterpret_cast<PFN_vkDestroyPipelineCache>(GetInstanceProcAddr(instance, "vkDestroyPipelineCache"));
|
||||||
|
GetPipelineCacheData = reinterpret_cast<PFN_vkGetPipelineCacheData>(GetInstanceProcAddr(instance, "vkGetPipelineCacheData"));
|
||||||
|
MergePipelineCaches = reinterpret_cast<PFN_vkMergePipelineCaches>(GetInstanceProcAddr(instance, "vkMergePipelineCaches"));
|
||||||
|
CreateGraphicsPipelines = reinterpret_cast<PFN_vkCreateGraphicsPipelines>(GetInstanceProcAddr(instance, "vkCreateGraphicsPipelines"));
|
||||||
|
CreateComputePipelines = reinterpret_cast<PFN_vkCreateComputePipelines>(GetInstanceProcAddr(instance, "vkCreateComputePipelines"));
|
||||||
|
DestroyPipeline = reinterpret_cast<PFN_vkDestroyPipeline>(GetInstanceProcAddr(instance, "vkDestroyPipeline"));
|
||||||
|
CreatePipelineLayout = reinterpret_cast<PFN_vkCreatePipelineLayout>(GetInstanceProcAddr(instance, "vkCreatePipelineLayout"));
|
||||||
|
DestroyPipelineLayout = reinterpret_cast<PFN_vkDestroyPipelineLayout>(GetInstanceProcAddr(instance, "vkDestroyPipelineLayout"));
|
||||||
|
CreateSampler = reinterpret_cast<PFN_vkCreateSampler>(GetInstanceProcAddr(instance, "vkCreateSampler"));
|
||||||
|
DestroySampler = reinterpret_cast<PFN_vkDestroySampler>(GetInstanceProcAddr(instance, "vkDestroySampler"));
|
||||||
|
CreateDescriptorSetLayout = reinterpret_cast<PFN_vkCreateDescriptorSetLayout>(GetInstanceProcAddr(instance, "vkCreateDescriptorSetLayout"));
|
||||||
|
DestroyDescriptorSetLayout = reinterpret_cast<PFN_vkDestroyDescriptorSetLayout>(GetInstanceProcAddr(instance, "vkDestroyDescriptorSetLayout"));
|
||||||
|
CreateDescriptorPool = reinterpret_cast<PFN_vkCreateDescriptorPool>(GetInstanceProcAddr(instance, "vkCreateDescriptorPool"));
|
||||||
|
DestroyDescriptorPool = reinterpret_cast<PFN_vkDestroyDescriptorPool>(GetInstanceProcAddr(instance, "vkDestroyDescriptorPool"));
|
||||||
|
ResetDescriptorPool = reinterpret_cast<PFN_vkResetDescriptorPool>(GetInstanceProcAddr(instance, "vkResetDescriptorPool"));
|
||||||
|
AllocateDescriptorSets = reinterpret_cast<PFN_vkAllocateDescriptorSets>(GetInstanceProcAddr(instance, "vkAllocateDescriptorSets"));
|
||||||
|
FreeDescriptorSets = reinterpret_cast<PFN_vkFreeDescriptorSets>(GetInstanceProcAddr(instance, "vkFreeDescriptorSets"));
|
||||||
|
UpdateDescriptorSets = reinterpret_cast<PFN_vkUpdateDescriptorSets>(GetInstanceProcAddr(instance, "vkUpdateDescriptorSets"));
|
||||||
|
CreateFramebuffer = reinterpret_cast<PFN_vkCreateFramebuffer>(GetInstanceProcAddr(instance, "vkCreateFramebuffer"));
|
||||||
|
DestroyFramebuffer = reinterpret_cast<PFN_vkDestroyFramebuffer>(GetInstanceProcAddr(instance, "vkDestroyFramebuffer"));
|
||||||
|
CreateRenderPass = reinterpret_cast<PFN_vkCreateRenderPass>(GetInstanceProcAddr(instance, "vkCreateRenderPass"));
|
||||||
|
DestroyRenderPass = reinterpret_cast<PFN_vkDestroyRenderPass>(GetInstanceProcAddr(instance, "vkDestroyRenderPass"));
|
||||||
|
GetRenderAreaGranularity = reinterpret_cast<PFN_vkGetRenderAreaGranularity>(GetInstanceProcAddr(instance, "vkGetRenderAreaGranularity"));
|
||||||
|
CreateCommandPool = reinterpret_cast<PFN_vkCreateCommandPool>(GetInstanceProcAddr(instance, "vkCreateCommandPool"));
|
||||||
|
DestroyCommandPool = reinterpret_cast<PFN_vkDestroyCommandPool>(GetInstanceProcAddr(instance, "vkDestroyCommandPool"));
|
||||||
|
ResetCommandPool = reinterpret_cast<PFN_vkResetCommandPool>(GetInstanceProcAddr(instance, "vkResetCommandPool"));
|
||||||
|
AllocateCommandBuffers = reinterpret_cast<PFN_vkAllocateCommandBuffers>(GetInstanceProcAddr(instance, "vkAllocateCommandBuffers"));
|
||||||
|
FreeCommandBuffers = reinterpret_cast<PFN_vkFreeCommandBuffers>(GetInstanceProcAddr(instance, "vkFreeCommandBuffers"));
|
||||||
|
BeginCommandBuffer = reinterpret_cast<PFN_vkBeginCommandBuffer>(GetInstanceProcAddr(instance, "vkBeginCommandBuffer"));
|
||||||
|
EndCommandBuffer = reinterpret_cast<PFN_vkEndCommandBuffer>(GetInstanceProcAddr(instance, "vkEndCommandBuffer"));
|
||||||
|
ResetCommandBuffer = reinterpret_cast<PFN_vkResetCommandBuffer>(GetInstanceProcAddr(instance, "vkResetCommandBuffer"));
|
||||||
|
CmdBindPipeline = reinterpret_cast<PFN_vkCmdBindPipeline>(GetInstanceProcAddr(instance, "vkCmdBindPipeline"));
|
||||||
|
CmdSetViewport = reinterpret_cast<PFN_vkCmdSetViewport>(GetInstanceProcAddr(instance, "vkCmdSetViewport"));
|
||||||
|
CmdSetScissor = reinterpret_cast<PFN_vkCmdSetScissor>(GetInstanceProcAddr(instance, "vkCmdSetScissor"));
|
||||||
|
CmdSetLineWidth = reinterpret_cast<PFN_vkCmdSetLineWidth>(GetInstanceProcAddr(instance, "vkCmdSetLineWidth"));
|
||||||
|
CmdSetDepthBias = reinterpret_cast<PFN_vkCmdSetDepthBias>(GetInstanceProcAddr(instance, "vkCmdSetDepthBias"));
|
||||||
|
CmdSetBlendConstants = reinterpret_cast<PFN_vkCmdSetBlendConstants>(GetInstanceProcAddr(instance, "vkCmdSetBlendConstants"));
|
||||||
|
CmdSetDepthBounds = reinterpret_cast<PFN_vkCmdSetDepthBounds>(GetInstanceProcAddr(instance, "vkCmdSetDepthBounds"));
|
||||||
|
CmdSetStencilCompareMask = reinterpret_cast<PFN_vkCmdSetStencilCompareMask>(GetInstanceProcAddr(instance, "vkCmdSetStencilCompareMask"));
|
||||||
|
CmdSetStencilWriteMask = reinterpret_cast<PFN_vkCmdSetStencilWriteMask>(GetInstanceProcAddr(instance, "vkCmdSetStencilWriteMask"));
|
||||||
|
CmdSetStencilReference = reinterpret_cast<PFN_vkCmdSetStencilReference>(GetInstanceProcAddr(instance, "vkCmdSetStencilReference"));
|
||||||
|
CmdBindDescriptorSets = reinterpret_cast<PFN_vkCmdBindDescriptorSets>(GetInstanceProcAddr(instance, "vkCmdBindDescriptorSets"));
|
||||||
|
CmdBindIndexBuffer = reinterpret_cast<PFN_vkCmdBindIndexBuffer>(GetInstanceProcAddr(instance, "vkCmdBindIndexBuffer"));
|
||||||
|
CmdBindVertexBuffers = reinterpret_cast<PFN_vkCmdBindVertexBuffers>(GetInstanceProcAddr(instance, "vkCmdBindVertexBuffers"));
|
||||||
|
CmdDraw = reinterpret_cast<PFN_vkCmdDraw>(GetInstanceProcAddr(instance, "vkCmdDraw"));
|
||||||
|
CmdDrawIndexed = reinterpret_cast<PFN_vkCmdDrawIndexed>(GetInstanceProcAddr(instance, "vkCmdDrawIndexed"));
|
||||||
|
CmdDrawIndirect = reinterpret_cast<PFN_vkCmdDrawIndirect>(GetInstanceProcAddr(instance, "vkCmdDrawIndirect"));
|
||||||
|
CmdDrawIndexedIndirect = reinterpret_cast<PFN_vkCmdDrawIndexedIndirect>(GetInstanceProcAddr(instance, "vkCmdDrawIndexedIndirect"));
|
||||||
|
CmdDispatch = reinterpret_cast<PFN_vkCmdDispatch>(GetInstanceProcAddr(instance, "vkCmdDispatch"));
|
||||||
|
CmdDispatchIndirect = reinterpret_cast<PFN_vkCmdDispatchIndirect>(GetInstanceProcAddr(instance, "vkCmdDispatchIndirect"));
|
||||||
|
CmdCopyBuffer = reinterpret_cast<PFN_vkCmdCopyBuffer>(GetInstanceProcAddr(instance, "vkCmdCopyBuffer"));
|
||||||
|
CmdCopyImage = reinterpret_cast<PFN_vkCmdCopyImage>(GetInstanceProcAddr(instance, "vkCmdCopyImage"));
|
||||||
|
CmdBlitImage = reinterpret_cast<PFN_vkCmdBlitImage>(GetInstanceProcAddr(instance, "vkCmdBlitImage"));
|
||||||
|
CmdCopyBufferToImage = reinterpret_cast<PFN_vkCmdCopyBufferToImage>(GetInstanceProcAddr(instance, "vkCmdCopyBufferToImage"));
|
||||||
|
CmdCopyImageToBuffer = reinterpret_cast<PFN_vkCmdCopyImageToBuffer>(GetInstanceProcAddr(instance, "vkCmdCopyImageToBuffer"));
|
||||||
|
CmdUpdateBuffer = reinterpret_cast<PFN_vkCmdUpdateBuffer>(GetInstanceProcAddr(instance, "vkCmdUpdateBuffer"));
|
||||||
|
CmdFillBuffer = reinterpret_cast<PFN_vkCmdFillBuffer>(GetInstanceProcAddr(instance, "vkCmdFillBuffer"));
|
||||||
|
CmdClearColorImage = reinterpret_cast<PFN_vkCmdClearColorImage>(GetInstanceProcAddr(instance, "vkCmdClearColorImage"));
|
||||||
|
CmdClearDepthStencilImage = reinterpret_cast<PFN_vkCmdClearDepthStencilImage>(GetInstanceProcAddr(instance, "vkCmdClearDepthStencilImage"));
|
||||||
|
CmdClearAttachments = reinterpret_cast<PFN_vkCmdClearAttachments>(GetInstanceProcAddr(instance, "vkCmdClearAttachments"));
|
||||||
|
CmdResolveImage = reinterpret_cast<PFN_vkCmdResolveImage>(GetInstanceProcAddr(instance, "vkCmdResolveImage"));
|
||||||
|
CmdSetEvent = reinterpret_cast<PFN_vkCmdSetEvent>(GetInstanceProcAddr(instance, "vkCmdSetEvent"));
|
||||||
|
CmdResetEvent = reinterpret_cast<PFN_vkCmdResetEvent>(GetInstanceProcAddr(instance, "vkCmdResetEvent"));
|
||||||
|
CmdWaitEvents = reinterpret_cast<PFN_vkCmdWaitEvents>(GetInstanceProcAddr(instance, "vkCmdWaitEvents"));
|
||||||
|
CmdPipelineBarrier = reinterpret_cast<PFN_vkCmdPipelineBarrier>(GetInstanceProcAddr(instance, "vkCmdPipelineBarrier"));
|
||||||
|
CmdBeginQuery = reinterpret_cast<PFN_vkCmdBeginQuery>(GetInstanceProcAddr(instance, "vkCmdBeginQuery"));
|
||||||
|
CmdEndQuery = reinterpret_cast<PFN_vkCmdEndQuery>(GetInstanceProcAddr(instance, "vkCmdEndQuery"));
|
||||||
|
CmdResetQueryPool = reinterpret_cast<PFN_vkCmdResetQueryPool>(GetInstanceProcAddr(instance, "vkCmdResetQueryPool"));
|
||||||
|
CmdWriteTimestamp = reinterpret_cast<PFN_vkCmdWriteTimestamp>(GetInstanceProcAddr(instance, "vkCmdWriteTimestamp"));
|
||||||
|
CmdCopyQueryPoolResults = reinterpret_cast<PFN_vkCmdCopyQueryPoolResults>(GetInstanceProcAddr(instance, "vkCmdCopyQueryPoolResults"));
|
||||||
|
CmdPushConstants = reinterpret_cast<PFN_vkCmdPushConstants>(GetInstanceProcAddr(instance, "vkCmdPushConstants"));
|
||||||
|
CmdBeginRenderPass = reinterpret_cast<PFN_vkCmdBeginRenderPass>(GetInstanceProcAddr(instance, "vkCmdBeginRenderPass"));
|
||||||
|
CmdNextSubpass = reinterpret_cast<PFN_vkCmdNextSubpass>(GetInstanceProcAddr(instance, "vkCmdNextSubpass"));
|
||||||
|
CmdEndRenderPass = reinterpret_cast<PFN_vkCmdEndRenderPass>(GetInstanceProcAddr(instance, "vkCmdEndRenderPass"));
|
||||||
|
CmdExecuteCommands = reinterpret_cast<PFN_vkCmdExecuteCommands>(GetInstanceProcAddr(instance, "vkCmdExecuteCommands"));
|
||||||
|
CreateSwapchainKHR = reinterpret_cast<PFN_vkCreateSwapchainKHR>(GetInstanceProcAddr(instance, "vkCreateSwapchainKHR"));
|
||||||
|
DestroySwapchainKHR = reinterpret_cast<PFN_vkDestroySwapchainKHR>(GetInstanceProcAddr(instance, "vkDestroySwapchainKHR"));
|
||||||
|
GetSwapchainImagesKHR = reinterpret_cast<PFN_vkGetSwapchainImagesKHR>(GetInstanceProcAddr(instance, "vkGetSwapchainImagesKHR"));
|
||||||
|
AcquireNextImageKHR = reinterpret_cast<PFN_vkAcquireNextImageKHR>(GetInstanceProcAddr(instance, "vkAcquireNextImageKHR"));
|
||||||
|
QueuePresentKHR = reinterpret_cast<PFN_vkQueuePresentKHR>(GetInstanceProcAddr(instance, "vkQueuePresentKHR"));
|
||||||
|
CreateSharedSwapchainsKHR = reinterpret_cast<PFN_vkCreateSharedSwapchainsKHR>(GetInstanceProcAddr(instance, "vkCreateSharedSwapchainsKHR"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void init_dispatch_table_bottom(VkInstance instance, VkDevice dev)
|
||||||
|
{
|
||||||
|
GetDeviceProcAddr = reinterpret_cast<PFN_vkGetDeviceProcAddr>(GetInstanceProcAddr(instance, "vkGetDeviceProcAddr"));
|
||||||
|
GetDeviceProcAddr = reinterpret_cast<PFN_vkGetDeviceProcAddr>(GetDeviceProcAddr(dev, "vkGetDeviceProcAddr"));
|
||||||
|
|
||||||
|
DestroyDevice = reinterpret_cast<PFN_vkDestroyDevice>(GetDeviceProcAddr(dev, "vkDestroyDevice"));
|
||||||
|
GetDeviceQueue = reinterpret_cast<PFN_vkGetDeviceQueue>(GetDeviceProcAddr(dev, "vkGetDeviceQueue"));
|
||||||
|
QueueSubmit = reinterpret_cast<PFN_vkQueueSubmit>(GetDeviceProcAddr(dev, "vkQueueSubmit"));
|
||||||
|
QueueWaitIdle = reinterpret_cast<PFN_vkQueueWaitIdle>(GetDeviceProcAddr(dev, "vkQueueWaitIdle"));
|
||||||
|
DeviceWaitIdle = reinterpret_cast<PFN_vkDeviceWaitIdle>(GetDeviceProcAddr(dev, "vkDeviceWaitIdle"));
|
||||||
|
AllocateMemory = reinterpret_cast<PFN_vkAllocateMemory>(GetDeviceProcAddr(dev, "vkAllocateMemory"));
|
||||||
|
FreeMemory = reinterpret_cast<PFN_vkFreeMemory>(GetDeviceProcAddr(dev, "vkFreeMemory"));
|
||||||
|
MapMemory = reinterpret_cast<PFN_vkMapMemory>(GetDeviceProcAddr(dev, "vkMapMemory"));
|
||||||
|
UnmapMemory = reinterpret_cast<PFN_vkUnmapMemory>(GetDeviceProcAddr(dev, "vkUnmapMemory"));
|
||||||
|
FlushMappedMemoryRanges = reinterpret_cast<PFN_vkFlushMappedMemoryRanges>(GetDeviceProcAddr(dev, "vkFlushMappedMemoryRanges"));
|
||||||
|
InvalidateMappedMemoryRanges = reinterpret_cast<PFN_vkInvalidateMappedMemoryRanges>(GetDeviceProcAddr(dev, "vkInvalidateMappedMemoryRanges"));
|
||||||
|
GetDeviceMemoryCommitment = reinterpret_cast<PFN_vkGetDeviceMemoryCommitment>(GetDeviceProcAddr(dev, "vkGetDeviceMemoryCommitment"));
|
||||||
|
BindBufferMemory = reinterpret_cast<PFN_vkBindBufferMemory>(GetDeviceProcAddr(dev, "vkBindBufferMemory"));
|
||||||
|
BindImageMemory = reinterpret_cast<PFN_vkBindImageMemory>(GetDeviceProcAddr(dev, "vkBindImageMemory"));
|
||||||
|
GetBufferMemoryRequirements = reinterpret_cast<PFN_vkGetBufferMemoryRequirements>(GetDeviceProcAddr(dev, "vkGetBufferMemoryRequirements"));
|
||||||
|
GetImageMemoryRequirements = reinterpret_cast<PFN_vkGetImageMemoryRequirements>(GetDeviceProcAddr(dev, "vkGetImageMemoryRequirements"));
|
||||||
|
GetImageSparseMemoryRequirements = reinterpret_cast<PFN_vkGetImageSparseMemoryRequirements>(GetDeviceProcAddr(dev, "vkGetImageSparseMemoryRequirements"));
|
||||||
|
QueueBindSparse = reinterpret_cast<PFN_vkQueueBindSparse>(GetDeviceProcAddr(dev, "vkQueueBindSparse"));
|
||||||
|
CreateFence = reinterpret_cast<PFN_vkCreateFence>(GetDeviceProcAddr(dev, "vkCreateFence"));
|
||||||
|
DestroyFence = reinterpret_cast<PFN_vkDestroyFence>(GetDeviceProcAddr(dev, "vkDestroyFence"));
|
||||||
|
ResetFences = reinterpret_cast<PFN_vkResetFences>(GetDeviceProcAddr(dev, "vkResetFences"));
|
||||||
|
GetFenceStatus = reinterpret_cast<PFN_vkGetFenceStatus>(GetDeviceProcAddr(dev, "vkGetFenceStatus"));
|
||||||
|
WaitForFences = reinterpret_cast<PFN_vkWaitForFences>(GetDeviceProcAddr(dev, "vkWaitForFences"));
|
||||||
|
CreateSemaphore = reinterpret_cast<PFN_vkCreateSemaphore>(GetDeviceProcAddr(dev, "vkCreateSemaphore"));
|
||||||
|
DestroySemaphore = reinterpret_cast<PFN_vkDestroySemaphore>(GetDeviceProcAddr(dev, "vkDestroySemaphore"));
|
||||||
|
CreateEvent = reinterpret_cast<PFN_vkCreateEvent>(GetDeviceProcAddr(dev, "vkCreateEvent"));
|
||||||
|
DestroyEvent = reinterpret_cast<PFN_vkDestroyEvent>(GetDeviceProcAddr(dev, "vkDestroyEvent"));
|
||||||
|
GetEventStatus = reinterpret_cast<PFN_vkGetEventStatus>(GetDeviceProcAddr(dev, "vkGetEventStatus"));
|
||||||
|
SetEvent = reinterpret_cast<PFN_vkSetEvent>(GetDeviceProcAddr(dev, "vkSetEvent"));
|
||||||
|
ResetEvent = reinterpret_cast<PFN_vkResetEvent>(GetDeviceProcAddr(dev, "vkResetEvent"));
|
||||||
|
CreateQueryPool = reinterpret_cast<PFN_vkCreateQueryPool>(GetDeviceProcAddr(dev, "vkCreateQueryPool"));
|
||||||
|
DestroyQueryPool = reinterpret_cast<PFN_vkDestroyQueryPool>(GetDeviceProcAddr(dev, "vkDestroyQueryPool"));
|
||||||
|
GetQueryPoolResults = reinterpret_cast<PFN_vkGetQueryPoolResults>(GetDeviceProcAddr(dev, "vkGetQueryPoolResults"));
|
||||||
|
CreateBuffer = reinterpret_cast<PFN_vkCreateBuffer>(GetDeviceProcAddr(dev, "vkCreateBuffer"));
|
||||||
|
DestroyBuffer = reinterpret_cast<PFN_vkDestroyBuffer>(GetDeviceProcAddr(dev, "vkDestroyBuffer"));
|
||||||
|
CreateBufferView = reinterpret_cast<PFN_vkCreateBufferView>(GetDeviceProcAddr(dev, "vkCreateBufferView"));
|
||||||
|
DestroyBufferView = reinterpret_cast<PFN_vkDestroyBufferView>(GetDeviceProcAddr(dev, "vkDestroyBufferView"));
|
||||||
|
CreateImage = reinterpret_cast<PFN_vkCreateImage>(GetDeviceProcAddr(dev, "vkCreateImage"));
|
||||||
|
DestroyImage = reinterpret_cast<PFN_vkDestroyImage>(GetDeviceProcAddr(dev, "vkDestroyImage"));
|
||||||
|
GetImageSubresourceLayout = reinterpret_cast<PFN_vkGetImageSubresourceLayout>(GetDeviceProcAddr(dev, "vkGetImageSubresourceLayout"));
|
||||||
|
CreateImageView = reinterpret_cast<PFN_vkCreateImageView>(GetDeviceProcAddr(dev, "vkCreateImageView"));
|
||||||
|
DestroyImageView = reinterpret_cast<PFN_vkDestroyImageView>(GetDeviceProcAddr(dev, "vkDestroyImageView"));
|
||||||
|
CreateShaderModule = reinterpret_cast<PFN_vkCreateShaderModule>(GetDeviceProcAddr(dev, "vkCreateShaderModule"));
|
||||||
|
DestroyShaderModule = reinterpret_cast<PFN_vkDestroyShaderModule>(GetDeviceProcAddr(dev, "vkDestroyShaderModule"));
|
||||||
|
CreatePipelineCache = reinterpret_cast<PFN_vkCreatePipelineCache>(GetDeviceProcAddr(dev, "vkCreatePipelineCache"));
|
||||||
|
DestroyPipelineCache = reinterpret_cast<PFN_vkDestroyPipelineCache>(GetDeviceProcAddr(dev, "vkDestroyPipelineCache"));
|
||||||
|
GetPipelineCacheData = reinterpret_cast<PFN_vkGetPipelineCacheData>(GetDeviceProcAddr(dev, "vkGetPipelineCacheData"));
|
||||||
|
MergePipelineCaches = reinterpret_cast<PFN_vkMergePipelineCaches>(GetDeviceProcAddr(dev, "vkMergePipelineCaches"));
|
||||||
|
CreateGraphicsPipelines = reinterpret_cast<PFN_vkCreateGraphicsPipelines>(GetDeviceProcAddr(dev, "vkCreateGraphicsPipelines"));
|
||||||
|
CreateComputePipelines = reinterpret_cast<PFN_vkCreateComputePipelines>(GetDeviceProcAddr(dev, "vkCreateComputePipelines"));
|
||||||
|
DestroyPipeline = reinterpret_cast<PFN_vkDestroyPipeline>(GetDeviceProcAddr(dev, "vkDestroyPipeline"));
|
||||||
|
CreatePipelineLayout = reinterpret_cast<PFN_vkCreatePipelineLayout>(GetDeviceProcAddr(dev, "vkCreatePipelineLayout"));
|
||||||
|
DestroyPipelineLayout = reinterpret_cast<PFN_vkDestroyPipelineLayout>(GetDeviceProcAddr(dev, "vkDestroyPipelineLayout"));
|
||||||
|
CreateSampler = reinterpret_cast<PFN_vkCreateSampler>(GetDeviceProcAddr(dev, "vkCreateSampler"));
|
||||||
|
DestroySampler = reinterpret_cast<PFN_vkDestroySampler>(GetDeviceProcAddr(dev, "vkDestroySampler"));
|
||||||
|
CreateDescriptorSetLayout = reinterpret_cast<PFN_vkCreateDescriptorSetLayout>(GetDeviceProcAddr(dev, "vkCreateDescriptorSetLayout"));
|
||||||
|
DestroyDescriptorSetLayout = reinterpret_cast<PFN_vkDestroyDescriptorSetLayout>(GetDeviceProcAddr(dev, "vkDestroyDescriptorSetLayout"));
|
||||||
|
CreateDescriptorPool = reinterpret_cast<PFN_vkCreateDescriptorPool>(GetDeviceProcAddr(dev, "vkCreateDescriptorPool"));
|
||||||
|
DestroyDescriptorPool = reinterpret_cast<PFN_vkDestroyDescriptorPool>(GetDeviceProcAddr(dev, "vkDestroyDescriptorPool"));
|
||||||
|
ResetDescriptorPool = reinterpret_cast<PFN_vkResetDescriptorPool>(GetDeviceProcAddr(dev, "vkResetDescriptorPool"));
|
||||||
|
AllocateDescriptorSets = reinterpret_cast<PFN_vkAllocateDescriptorSets>(GetDeviceProcAddr(dev, "vkAllocateDescriptorSets"));
|
||||||
|
FreeDescriptorSets = reinterpret_cast<PFN_vkFreeDescriptorSets>(GetDeviceProcAddr(dev, "vkFreeDescriptorSets"));
|
||||||
|
UpdateDescriptorSets = reinterpret_cast<PFN_vkUpdateDescriptorSets>(GetDeviceProcAddr(dev, "vkUpdateDescriptorSets"));
|
||||||
|
CreateFramebuffer = reinterpret_cast<PFN_vkCreateFramebuffer>(GetDeviceProcAddr(dev, "vkCreateFramebuffer"));
|
||||||
|
DestroyFramebuffer = reinterpret_cast<PFN_vkDestroyFramebuffer>(GetDeviceProcAddr(dev, "vkDestroyFramebuffer"));
|
||||||
|
CreateRenderPass = reinterpret_cast<PFN_vkCreateRenderPass>(GetDeviceProcAddr(dev, "vkCreateRenderPass"));
|
||||||
|
DestroyRenderPass = reinterpret_cast<PFN_vkDestroyRenderPass>(GetDeviceProcAddr(dev, "vkDestroyRenderPass"));
|
||||||
|
GetRenderAreaGranularity = reinterpret_cast<PFN_vkGetRenderAreaGranularity>(GetDeviceProcAddr(dev, "vkGetRenderAreaGranularity"));
|
||||||
|
CreateCommandPool = reinterpret_cast<PFN_vkCreateCommandPool>(GetDeviceProcAddr(dev, "vkCreateCommandPool"));
|
||||||
|
DestroyCommandPool = reinterpret_cast<PFN_vkDestroyCommandPool>(GetDeviceProcAddr(dev, "vkDestroyCommandPool"));
|
||||||
|
ResetCommandPool = reinterpret_cast<PFN_vkResetCommandPool>(GetDeviceProcAddr(dev, "vkResetCommandPool"));
|
||||||
|
AllocateCommandBuffers = reinterpret_cast<PFN_vkAllocateCommandBuffers>(GetDeviceProcAddr(dev, "vkAllocateCommandBuffers"));
|
||||||
|
FreeCommandBuffers = reinterpret_cast<PFN_vkFreeCommandBuffers>(GetDeviceProcAddr(dev, "vkFreeCommandBuffers"));
|
||||||
|
BeginCommandBuffer = reinterpret_cast<PFN_vkBeginCommandBuffer>(GetDeviceProcAddr(dev, "vkBeginCommandBuffer"));
|
||||||
|
EndCommandBuffer = reinterpret_cast<PFN_vkEndCommandBuffer>(GetDeviceProcAddr(dev, "vkEndCommandBuffer"));
|
||||||
|
ResetCommandBuffer = reinterpret_cast<PFN_vkResetCommandBuffer>(GetDeviceProcAddr(dev, "vkResetCommandBuffer"));
|
||||||
|
CmdBindPipeline = reinterpret_cast<PFN_vkCmdBindPipeline>(GetDeviceProcAddr(dev, "vkCmdBindPipeline"));
|
||||||
|
CmdSetViewport = reinterpret_cast<PFN_vkCmdSetViewport>(GetDeviceProcAddr(dev, "vkCmdSetViewport"));
|
||||||
|
CmdSetScissor = reinterpret_cast<PFN_vkCmdSetScissor>(GetDeviceProcAddr(dev, "vkCmdSetScissor"));
|
||||||
|
CmdSetLineWidth = reinterpret_cast<PFN_vkCmdSetLineWidth>(GetDeviceProcAddr(dev, "vkCmdSetLineWidth"));
|
||||||
|
CmdSetDepthBias = reinterpret_cast<PFN_vkCmdSetDepthBias>(GetDeviceProcAddr(dev, "vkCmdSetDepthBias"));
|
||||||
|
CmdSetBlendConstants = reinterpret_cast<PFN_vkCmdSetBlendConstants>(GetDeviceProcAddr(dev, "vkCmdSetBlendConstants"));
|
||||||
|
CmdSetDepthBounds = reinterpret_cast<PFN_vkCmdSetDepthBounds>(GetDeviceProcAddr(dev, "vkCmdSetDepthBounds"));
|
||||||
|
CmdSetStencilCompareMask = reinterpret_cast<PFN_vkCmdSetStencilCompareMask>(GetDeviceProcAddr(dev, "vkCmdSetStencilCompareMask"));
|
||||||
|
CmdSetStencilWriteMask = reinterpret_cast<PFN_vkCmdSetStencilWriteMask>(GetDeviceProcAddr(dev, "vkCmdSetStencilWriteMask"));
|
||||||
|
CmdSetStencilReference = reinterpret_cast<PFN_vkCmdSetStencilReference>(GetDeviceProcAddr(dev, "vkCmdSetStencilReference"));
|
||||||
|
CmdBindDescriptorSets = reinterpret_cast<PFN_vkCmdBindDescriptorSets>(GetDeviceProcAddr(dev, "vkCmdBindDescriptorSets"));
|
||||||
|
CmdBindIndexBuffer = reinterpret_cast<PFN_vkCmdBindIndexBuffer>(GetDeviceProcAddr(dev, "vkCmdBindIndexBuffer"));
|
||||||
|
CmdBindVertexBuffers = reinterpret_cast<PFN_vkCmdBindVertexBuffers>(GetDeviceProcAddr(dev, "vkCmdBindVertexBuffers"));
|
||||||
|
CmdDraw = reinterpret_cast<PFN_vkCmdDraw>(GetDeviceProcAddr(dev, "vkCmdDraw"));
|
||||||
|
CmdDrawIndexed = reinterpret_cast<PFN_vkCmdDrawIndexed>(GetDeviceProcAddr(dev, "vkCmdDrawIndexed"));
|
||||||
|
CmdDrawIndirect = reinterpret_cast<PFN_vkCmdDrawIndirect>(GetDeviceProcAddr(dev, "vkCmdDrawIndirect"));
|
||||||
|
CmdDrawIndexedIndirect = reinterpret_cast<PFN_vkCmdDrawIndexedIndirect>(GetDeviceProcAddr(dev, "vkCmdDrawIndexedIndirect"));
|
||||||
|
CmdDispatch = reinterpret_cast<PFN_vkCmdDispatch>(GetDeviceProcAddr(dev, "vkCmdDispatch"));
|
||||||
|
CmdDispatchIndirect = reinterpret_cast<PFN_vkCmdDispatchIndirect>(GetDeviceProcAddr(dev, "vkCmdDispatchIndirect"));
|
||||||
|
CmdCopyBuffer = reinterpret_cast<PFN_vkCmdCopyBuffer>(GetDeviceProcAddr(dev, "vkCmdCopyBuffer"));
|
||||||
|
CmdCopyImage = reinterpret_cast<PFN_vkCmdCopyImage>(GetDeviceProcAddr(dev, "vkCmdCopyImage"));
|
||||||
|
CmdBlitImage = reinterpret_cast<PFN_vkCmdBlitImage>(GetDeviceProcAddr(dev, "vkCmdBlitImage"));
|
||||||
|
CmdCopyBufferToImage = reinterpret_cast<PFN_vkCmdCopyBufferToImage>(GetDeviceProcAddr(dev, "vkCmdCopyBufferToImage"));
|
||||||
|
CmdCopyImageToBuffer = reinterpret_cast<PFN_vkCmdCopyImageToBuffer>(GetDeviceProcAddr(dev, "vkCmdCopyImageToBuffer"));
|
||||||
|
CmdUpdateBuffer = reinterpret_cast<PFN_vkCmdUpdateBuffer>(GetDeviceProcAddr(dev, "vkCmdUpdateBuffer"));
|
||||||
|
CmdFillBuffer = reinterpret_cast<PFN_vkCmdFillBuffer>(GetDeviceProcAddr(dev, "vkCmdFillBuffer"));
|
||||||
|
CmdClearColorImage = reinterpret_cast<PFN_vkCmdClearColorImage>(GetDeviceProcAddr(dev, "vkCmdClearColorImage"));
|
||||||
|
CmdClearDepthStencilImage = reinterpret_cast<PFN_vkCmdClearDepthStencilImage>(GetDeviceProcAddr(dev, "vkCmdClearDepthStencilImage"));
|
||||||
|
CmdClearAttachments = reinterpret_cast<PFN_vkCmdClearAttachments>(GetDeviceProcAddr(dev, "vkCmdClearAttachments"));
|
||||||
|
CmdResolveImage = reinterpret_cast<PFN_vkCmdResolveImage>(GetDeviceProcAddr(dev, "vkCmdResolveImage"));
|
||||||
|
CmdSetEvent = reinterpret_cast<PFN_vkCmdSetEvent>(GetDeviceProcAddr(dev, "vkCmdSetEvent"));
|
||||||
|
CmdResetEvent = reinterpret_cast<PFN_vkCmdResetEvent>(GetDeviceProcAddr(dev, "vkCmdResetEvent"));
|
||||||
|
CmdWaitEvents = reinterpret_cast<PFN_vkCmdWaitEvents>(GetDeviceProcAddr(dev, "vkCmdWaitEvents"));
|
||||||
|
CmdPipelineBarrier = reinterpret_cast<PFN_vkCmdPipelineBarrier>(GetDeviceProcAddr(dev, "vkCmdPipelineBarrier"));
|
||||||
|
CmdBeginQuery = reinterpret_cast<PFN_vkCmdBeginQuery>(GetDeviceProcAddr(dev, "vkCmdBeginQuery"));
|
||||||
|
CmdEndQuery = reinterpret_cast<PFN_vkCmdEndQuery>(GetDeviceProcAddr(dev, "vkCmdEndQuery"));
|
||||||
|
CmdResetQueryPool = reinterpret_cast<PFN_vkCmdResetQueryPool>(GetDeviceProcAddr(dev, "vkCmdResetQueryPool"));
|
||||||
|
CmdWriteTimestamp = reinterpret_cast<PFN_vkCmdWriteTimestamp>(GetDeviceProcAddr(dev, "vkCmdWriteTimestamp"));
|
||||||
|
CmdCopyQueryPoolResults = reinterpret_cast<PFN_vkCmdCopyQueryPoolResults>(GetDeviceProcAddr(dev, "vkCmdCopyQueryPoolResults"));
|
||||||
|
CmdPushConstants = reinterpret_cast<PFN_vkCmdPushConstants>(GetDeviceProcAddr(dev, "vkCmdPushConstants"));
|
||||||
|
CmdBeginRenderPass = reinterpret_cast<PFN_vkCmdBeginRenderPass>(GetDeviceProcAddr(dev, "vkCmdBeginRenderPass"));
|
||||||
|
CmdNextSubpass = reinterpret_cast<PFN_vkCmdNextSubpass>(GetDeviceProcAddr(dev, "vkCmdNextSubpass"));
|
||||||
|
CmdEndRenderPass = reinterpret_cast<PFN_vkCmdEndRenderPass>(GetDeviceProcAddr(dev, "vkCmdEndRenderPass"));
|
||||||
|
CmdExecuteCommands = reinterpret_cast<PFN_vkCmdExecuteCommands>(GetDeviceProcAddr(dev, "vkCmdExecuteCommands"));
|
||||||
|
CreateSwapchainKHR = reinterpret_cast<PFN_vkCreateSwapchainKHR>(GetDeviceProcAddr(dev, "vkCreateSwapchainKHR"));
|
||||||
|
DestroySwapchainKHR = reinterpret_cast<PFN_vkDestroySwapchainKHR>(GetDeviceProcAddr(dev, "vkDestroySwapchainKHR"));
|
||||||
|
GetSwapchainImagesKHR = reinterpret_cast<PFN_vkGetSwapchainImagesKHR>(GetDeviceProcAddr(dev, "vkGetSwapchainImagesKHR"));
|
||||||
|
AcquireNextImageKHR = reinterpret_cast<PFN_vkAcquireNextImageKHR>(GetDeviceProcAddr(dev, "vkAcquireNextImageKHR"));
|
||||||
|
QueuePresentKHR = reinterpret_cast<PFN_vkQueuePresentKHR>(GetDeviceProcAddr(dev, "vkQueuePresentKHR"));
|
||||||
|
CreateSharedSwapchainsKHR = reinterpret_cast<PFN_vkCreateSharedSwapchainsKHR>(GetDeviceProcAddr(dev, "vkCreateSharedSwapchainsKHR"));
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace vk
|
|
@ -4,7 +4,6 @@
|
||||||
#include "boo/graphicsdev/GL.hpp"
|
#include "boo/graphicsdev/GL.hpp"
|
||||||
|
|
||||||
#if BOO_HAS_VULKAN
|
#if BOO_HAS_VULKAN
|
||||||
#define VK_USE_PLATFORM_XCB_KHR
|
|
||||||
#include "boo/graphicsdev/Vulkan.hpp"
|
#include "boo/graphicsdev/Vulkan.hpp"
|
||||||
#include <X11/Xlib-xcb.h>
|
#include <X11/Xlib-xcb.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -14,6 +13,8 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <dlfcn.h>
|
||||||
|
|
||||||
#include <thread>
|
#include <thread>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include <condition_variable>
|
#include <condition_variable>
|
||||||
|
@ -687,7 +688,7 @@ public:
|
||||||
VulkanContext::Window& m_windowCtx = *m_ctx->m_windows[m_parentWindow];
|
VulkanContext::Window& m_windowCtx = *m_ctx->m_windows[m_parentWindow];
|
||||||
m_windowCtx.m_swapChains[0].destroy(m_ctx->m_dev);
|
m_windowCtx.m_swapChains[0].destroy(m_ctx->m_dev);
|
||||||
m_windowCtx.m_swapChains[1].destroy(m_ctx->m_dev);
|
m_windowCtx.m_swapChains[1].destroy(m_ctx->m_dev);
|
||||||
//vkDestroySurfaceKHR(m_ctx->m_instance, m_surface, nullptr);
|
//vk::DestroySurfaceKHR(m_ctx->m_instance, m_surface, nullptr);
|
||||||
|
|
||||||
if (m_vsyncRunning)
|
if (m_vsyncRunning)
|
||||||
{
|
{
|
||||||
|
@ -728,6 +729,35 @@ public:
|
||||||
m_pf = pf;
|
m_pf = pf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void* m_vkHandle;
|
||||||
|
static PFN_vkGetInstanceProcAddr loadVk()
|
||||||
|
{
|
||||||
|
const char filename[] = "libvulkan.so";
|
||||||
|
void *handle, *symbol;
|
||||||
|
|
||||||
|
#ifdef UNINSTALLED_LOADER
|
||||||
|
handle = dlopen(UNINSTALLED_LOADER, RTLD_LAZY);
|
||||||
|
if (!handle)
|
||||||
|
handle = dlopen(filename, RTLD_LAZY);
|
||||||
|
#else
|
||||||
|
handle = dlopen(filename, RTLD_LAZY);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (handle)
|
||||||
|
symbol = dlsym(handle, "vkGetInstanceProcAddr");
|
||||||
|
|
||||||
|
if (!handle || !symbol) {
|
||||||
|
Log.report(logvisor::Fatal, "unable to load vulkan: %s", dlerror());
|
||||||
|
|
||||||
|
if (handle)
|
||||||
|
dlclose(handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_vkHandle = handle;
|
||||||
|
|
||||||
|
return reinterpret_cast<PFN_vkGetInstanceProcAddr>(symbol);
|
||||||
|
}
|
||||||
|
|
||||||
void initializeContext()
|
void initializeContext()
|
||||||
{
|
{
|
||||||
if (!glXWaitVideoSyncSGI)
|
if (!glXWaitVideoSyncSGI)
|
||||||
|
@ -738,9 +768,13 @@ public:
|
||||||
Log.report(logvisor::Fatal, "unable to resolve glXWaitVideoSyncSGI");
|
Log.report(logvisor::Fatal, "unable to resolve glXWaitVideoSyncSGI");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vk::init_dispatch_table_top(loadVk());
|
||||||
if (m_ctx->m_instance == VK_NULL_HANDLE)
|
if (m_ctx->m_instance == VK_NULL_HANDLE)
|
||||||
m_ctx->initVulkan(APP->getUniqueName().c_str());
|
m_ctx->initVulkan(APP->getUniqueName().c_str());
|
||||||
|
|
||||||
|
vk::init_dispatch_table_middle(m_ctx->m_instance, false);
|
||||||
|
m_ctx->enumerateDevices();
|
||||||
|
|
||||||
m_windowCtx =
|
m_windowCtx =
|
||||||
m_ctx->m_windows.emplace(std::make_pair(m_parentWindow,
|
m_ctx->m_windows.emplace(std::make_pair(m_parentWindow,
|
||||||
std::make_unique<VulkanContext::Window>())).first->second.get();
|
std::make_unique<VulkanContext::Window>())).first->second.get();
|
||||||
|
@ -749,12 +783,12 @@ public:
|
||||||
surfaceInfo.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR;
|
surfaceInfo.sType = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR;
|
||||||
surfaceInfo.connection = m_xcbConn;
|
surfaceInfo.connection = m_xcbConn;
|
||||||
surfaceInfo.window = m_parentWindow->getPlatformHandle();
|
surfaceInfo.window = m_parentWindow->getPlatformHandle();
|
||||||
ThrowIfFailed(vkCreateXcbSurfaceKHR(m_ctx->m_instance, &surfaceInfo, nullptr, &m_surface));
|
ThrowIfFailed(vk::CreateXcbSurfaceKHR(m_ctx->m_instance, &surfaceInfo, nullptr, &m_surface));
|
||||||
|
|
||||||
/* Iterate over each queue to learn whether it supports presenting */
|
/* Iterate over each queue to learn whether it supports presenting */
|
||||||
VkBool32 *supportsPresent = (VkBool32*)malloc(m_ctx->m_queueCount * sizeof(VkBool32));
|
VkBool32 *supportsPresent = (VkBool32*)malloc(m_ctx->m_queueCount * sizeof(VkBool32));
|
||||||
for (uint32_t i=0 ; i<m_ctx->m_queueCount ; ++i)
|
for (uint32_t i=0 ; i<m_ctx->m_queueCount ; ++i)
|
||||||
vkGetPhysicalDeviceSurfaceSupportKHR(m_ctx->m_gpus[0], i, m_surface, &supportsPresent[i]);
|
vk::GetPhysicalDeviceSurfaceSupportKHR(m_ctx->m_gpus[0], i, m_surface, &supportsPresent[i]);
|
||||||
|
|
||||||
/* Search for a graphics queue and a present queue in the array of queue
|
/* Search for a graphics queue and a present queue in the array of queue
|
||||||
* families, try to find one that supports both */
|
* families, try to find one that supports both */
|
||||||
|
@ -788,7 +822,9 @@ public:
|
||||||
}
|
}
|
||||||
free(supportsPresent);
|
free(supportsPresent);
|
||||||
|
|
||||||
if (!vkGetPhysicalDeviceXcbPresentationSupportKHR(m_ctx->m_gpus[0], m_ctx->m_graphicsQueueFamilyIndex, m_xcbConn, m_visualid))
|
vk::init_dispatch_table_bottom(m_ctx->m_instance, m_ctx->m_dev);
|
||||||
|
|
||||||
|
if (!vk::GetPhysicalDeviceXcbPresentationSupportKHR(m_ctx->m_gpus[0], m_ctx->m_graphicsQueueFamilyIndex, m_xcbConn, m_visualid))
|
||||||
{
|
{
|
||||||
Log.report(logvisor::Fatal, "XCB visual doesn't support vulkan present");
|
Log.report(logvisor::Fatal, "XCB visual doesn't support vulkan present");
|
||||||
return;
|
return;
|
||||||
|
@ -796,9 +832,9 @@ public:
|
||||||
|
|
||||||
/* Get the list of VkFormats that are supported */
|
/* Get the list of VkFormats that are supported */
|
||||||
uint32_t formatCount;
|
uint32_t formatCount;
|
||||||
ThrowIfFailed(vkGetPhysicalDeviceSurfaceFormatsKHR(m_ctx->m_gpus[0], m_surface, &formatCount, nullptr));
|
ThrowIfFailed(vk::GetPhysicalDeviceSurfaceFormatsKHR(m_ctx->m_gpus[0], m_surface, &formatCount, nullptr));
|
||||||
VkSurfaceFormatKHR* surfFormats = (VkSurfaceFormatKHR*)malloc(formatCount * sizeof(VkSurfaceFormatKHR));
|
VkSurfaceFormatKHR* surfFormats = (VkSurfaceFormatKHR*)malloc(formatCount * sizeof(VkSurfaceFormatKHR));
|
||||||
ThrowIfFailed(vkGetPhysicalDeviceSurfaceFormatsKHR(m_ctx->m_gpus[0], m_surface, &formatCount, surfFormats));
|
ThrowIfFailed(vk::GetPhysicalDeviceSurfaceFormatsKHR(m_ctx->m_gpus[0], m_surface, &formatCount, surfFormats));
|
||||||
|
|
||||||
|
|
||||||
/* If the format list includes just one entry of VK_FORMAT_UNDEFINED,
|
/* If the format list includes just one entry of VK_FORMAT_UNDEFINED,
|
||||||
|
@ -892,6 +928,7 @@ public:
|
||||||
void present() {}
|
void present() {}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
void* GraphicsContextXlibVulkan::m_vkHandle = nullptr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
class WindowXlib : public IWindow
|
class WindowXlib : public IWindow
|
||||||
|
|
|
@ -223,7 +223,7 @@ struct TestApplicationCallback : IApplicationCallback
|
||||||
std::mutex m_initmt;
|
std::mutex m_initmt;
|
||||||
std::condition_variable m_initcv;
|
std::condition_variable m_initcv;
|
||||||
|
|
||||||
static void LoaderProc(TestApplicationCallback* self)
|
static GraphicsDataToken LoaderProc(TestApplicationCallback* self)
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> lk(self->m_initmt);
|
std::unique_lock<std::mutex> lk(self->m_initmt);
|
||||||
|
|
||||||
|
@ -239,8 +239,8 @@ struct TestApplicationCallback : IApplicationCallback
|
||||||
/* Make Tri-strip VBO */
|
/* Make Tri-strip VBO */
|
||||||
struct Vert
|
struct Vert
|
||||||
{
|
{
|
||||||
float pos[4];
|
float pos[3];
|
||||||
float uv[4];
|
float uv[2];
|
||||||
};
|
};
|
||||||
static const Vert quad[4] =
|
static const Vert quad[4] =
|
||||||
{
|
{
|
||||||
|
@ -255,8 +255,8 @@ struct TestApplicationCallback : IApplicationCallback
|
||||||
/* Make vertex format */
|
/* Make vertex format */
|
||||||
VertexElementDescriptor descs[2] =
|
VertexElementDescriptor descs[2] =
|
||||||
{
|
{
|
||||||
{vbo, nullptr, VertexSemantic::Position4},
|
{vbo, nullptr, VertexSemantic::Position3},
|
||||||
{vbo, nullptr, VertexSemantic::UV4}
|
{vbo, nullptr, VertexSemantic::UV2}
|
||||||
};
|
};
|
||||||
IVertexFormat* vfmt = ctx.newVertexFormat(2, descs);
|
IVertexFormat* vfmt = ctx.newVertexFormat(2, descs);
|
||||||
|
|
||||||
|
@ -315,13 +315,14 @@ struct TestApplicationCallback : IApplicationCallback
|
||||||
|
|
||||||
static const char* VS =
|
static const char* VS =
|
||||||
"#version 330\n"
|
"#version 330\n"
|
||||||
|
BOO_GLSL_BINDING_HEAD
|
||||||
"layout(location=0) in vec3 in_pos;\n"
|
"layout(location=0) in vec3 in_pos;\n"
|
||||||
"layout(location=1) in vec2 in_uv;\n"
|
"layout(location=1) in vec2 in_uv;\n"
|
||||||
"out vec4 out_uv;\n"
|
"SBINDING(0) out vec2 out_uv;\n"
|
||||||
"void main()\n"
|
"void main()\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" gl_Position = vec4(in_pos, 1.0);\n"
|
" gl_Position = vec4(in_pos, 1.0);\n"
|
||||||
" out_uv.xy = in_uv;\n"
|
" out_uv = in_uv;\n"
|
||||||
"}\n";
|
"}\n";
|
||||||
|
|
||||||
static const char* FS =
|
static const char* FS =
|
||||||
|
@ -330,19 +331,19 @@ struct TestApplicationCallback : IApplicationCallback
|
||||||
"precision highp float;\n"
|
"precision highp float;\n"
|
||||||
"TBINDING0 uniform sampler2D texs[1];\n"
|
"TBINDING0 uniform sampler2D texs[1];\n"
|
||||||
"layout(location=0) out vec4 out_frag;\n"
|
"layout(location=0) out vec4 out_frag;\n"
|
||||||
"in vec4 out_uv;\n"
|
"SBINDING(0) in vec2 out_uv;\n"
|
||||||
"void main()\n"
|
"void main()\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" out_frag = texture(texs[0], out_uv.xy);\n"
|
" out_frag = texture(texs[0], out_uv);\n"
|
||||||
"}\n";
|
"}\n";
|
||||||
|
|
||||||
pipeline = vkF.newShaderPipeline(VS, FS, vfmt, BlendFactor::One, BlendFactor::Zero,
|
pipeline = vkF.newShaderPipeline(VS, FS, vfmt, BlendFactor::One, BlendFactor::Zero,
|
||||||
Primitive::TriStrips, false, false, false);
|
Primitive::TriStrips, true, true, false);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if _WIN32
|
#if _WIN32
|
||||||
else if (ctx.platform() == IGraphicsDataFactory::Platform::D3D12 ||
|
else if (plat == IGraphicsDataFactory::Platform::D3D12 ||
|
||||||
ctx.platform() == IGraphicsDataFactory::Platform::D3D11)
|
plat == IGraphicsDataFactory::Platform::D3D11)
|
||||||
{
|
{
|
||||||
ID3DDataFactory::Context& d3dF = dynamic_cast<ID3DDataFactory::Context&>(ctx);
|
ID3DDataFactory::Context& d3dF = dynamic_cast<ID3DDataFactory::Context&>(ctx);
|
||||||
|
|
||||||
|
@ -374,7 +375,7 @@ struct TestApplicationCallback : IApplicationCallback
|
||||||
true, true, false);
|
true, true, false);
|
||||||
}
|
}
|
||||||
#elif BOO_HAS_METAL
|
#elif BOO_HAS_METAL
|
||||||
else if (ctx.platform() == IGraphicsDataFactory::Platform::Metal)
|
else if (plat == IGraphicsDataFactory::Platform::Metal)
|
||||||
{
|
{
|
||||||
MetalDataFactory::Context& metalF = dynamic_cast<MetalDataFactory::Context&>(ctx);
|
MetalDataFactory::Context& metalF = dynamic_cast<MetalDataFactory::Context&>(ctx);
|
||||||
|
|
||||||
|
@ -426,6 +427,7 @@ struct TestApplicationCallback : IApplicationCallback
|
||||||
if (!self->running)
|
if (!self->running)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
int appMain(IApplication* app)
|
int appMain(IApplication* app)
|
||||||
|
@ -473,7 +475,7 @@ struct TestApplicationCallback : IApplicationCallback
|
||||||
r.location[1] = 0;
|
r.location[1] = 0;
|
||||||
gfxQ->setViewport(r);
|
gfxQ->setViewport(r);
|
||||||
gfxQ->setScissor(r);
|
gfxQ->setScissor(r);
|
||||||
float rgba[] = {sinf(frameIdx / 60.0), cosf(frameIdx / 60.0), 0.0, 1.0};
|
float rgba[] = {std::max(0.f, sinf(frameIdx / 60.0)), std::max(0.f, cosf(frameIdx / 60.0)), 0.0, 1.0};
|
||||||
gfxQ->setClearColor(rgba);
|
gfxQ->setClearColor(rgba);
|
||||||
gfxQ->clearTarget();
|
gfxQ->clearTarget();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue