From 909304e44763c58c0ebbe40068a58784ebaced7b Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Fri, 3 May 2024 00:40:22 +0200 Subject: Add Vulkan backend API --- deimos/vulkan/vulkan_loader.h | 49 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 deimos/vulkan/vulkan_loader.h (limited to 'deimos/vulkan/vulkan_loader.h') diff --git a/deimos/vulkan/vulkan_loader.h b/deimos/vulkan/vulkan_loader.h new file mode 100644 index 0000000..1339ba4 --- /dev/null +++ b/deimos/vulkan/vulkan_loader.h @@ -0,0 +1,49 @@ +#pragma once + +#include + +#define VK_NO_STDINT_H +#define VK_NO_STDDEF_H +#include + +#include + +using HINSTANCE = void*; +using HWND = void*; +#include + +namespace deimos +{ + +class ApiRegistry; +class Allocator; + +struct VulkanApi +{ +#define FN(NAME) PFN_vk##NAME NAME{}; +#include "deimos/vulkan/vulkan_bootstrap_functions.inc" +#include "deimos/vulkan/vulkan_entry_functions.inc" +#include "deimos/vulkan/vulkan_instance_functions.inc" +#include "deimos/vulkan/vulkan_device_functions.inc" +#undef FN +}; + +class VulkanLoaderApi +{ +public: + VulkanLoaderApi() = default; + deimos_NO_COPY_MOVE(VulkanLoaderApi); + virtual ~VulkanLoaderApi() = default; + + static constexpr IdName kApiName{"deimos::VulkanLoaderApi"}; + + virtual VulkanApi* LoadEntry(Allocator* allocator) = 0; + + virtual void LoadInstance(VulkanApi*, VkInstance) = 0; + virtual void LoadDevice(VulkanApi*, VkDevice) = 0; +}; + +void RegisterVulkanLoaderApi(ApiRegistry*); + +} // namespace deimos + -- cgit