#pragma once #include #include namespace deimos { class ApiRegistry; class Allocator; class IRenderBackend; struct OsWindow; class IVulkanBackend { public: IVulkanBackend() = default; deimos_NO_COPY_MOVE(IVulkanBackend); virtual ~IVulkanBackend() = default; virtual IRenderBackend* AsRenderBackend() = 0; }; class VulkanBackendApi { public: VulkanBackendApi() = default; deimos_NO_COPY_MOVE(VulkanBackendApi); virtual ~VulkanBackendApi() = default; static constexpr IdName kApiName{"deimos::VulkanBackendApi"}; virtual StatusOr> CreateBackend(Allocator*, OsWindow*) = 0; }; void RegisterVulkanBackendApi(ApiRegistry*); } // namespace deimos