summaryrefslogtreecommitdiff
path: root/deimos/vulkan/vulkan_loader.cpp
diff options
context:
space:
mode:
authorSteven Le Rouzic <steven.lerouzic@gmail.com>2024-04-27 01:16:21 +0200
committerSteven Le Rouzic <steven.lerouzic@gmail.com>2024-04-27 01:16:21 +0200
commite02f9fd89b059919baf3a8d8bf8b783470976a27 (patch)
tree6bb16cce1231dba9b0eab5f43ceb7c5d86f8e7cb /deimos/vulkan/vulkan_loader.cpp
parent08eece258ceff7824250454906bff013a7303c28 (diff)
Some work on Vulkan initialization
Diffstat (limited to 'deimos/vulkan/vulkan_loader.cpp')
-rw-r--r--deimos/vulkan/vulkan_loader.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/deimos/vulkan/vulkan_loader.cpp b/deimos/vulkan/vulkan_loader.cpp
index ddd5cf0..0760c67 100644
--- a/deimos/vulkan/vulkan_loader.cpp
+++ b/deimos/vulkan/vulkan_loader.cpp
@@ -31,16 +31,32 @@ public:
else
{
deimos_Panic("Couldn't load Vulkan DLL");
- return nullptr;
}
}
VulkanApi* api = m_allocator->New<VulkanApi>();
+
#define FN(NAME) api->NAME = (PFN_vk##NAME)os_api->dll->GetSymbol(m_vulkan_dll, "vk" #NAME);
+#include "deimos/vulkan/vulkan_bootstrap_functions.inc"
+#undef FN
+
+#define FN(NAME) api->NAME = (PFN_vk##NAME)api->GetInstanceProcAddr(VK_NULL_HANDLE, "vk" #NAME);
#include "deimos/vulkan/vulkan_entry_functions.inc"
#undef FN
+
return api;
}
+
+ void LoadInstance(VulkanApi* api, VkInstance instance) override
+ {
+ Expects(api != nullptr);
+ Expects(instance != VK_NULL_HANDLE);
+ Expects(api->GetInstanceProcAddr != nullptr);
+
+#define FN(NAME) api->NAME = (PFN_vk##NAME)api->GetInstanceProcAddr(instance, "vk" #NAME);
+#include "deimos/vulkan/vulkan_instance_functions.inc"
+#undef FN
+ }
};
void RegisterVulkanLoaderApi(ApiRegistry* registry)