#pragma once #include "vk.hpp" #include #include #include /////////////////////////////////////////////////////////////////////////////// namespace cruft::vk::icd { struct icd_t { std::string file_format_version; struct { std::filesystem::path library_path; std::string api_version; } icd; }; std::vector enumerate (void); class vendor { public: vendor (icd_t const&); vendor (::cruft::library &&); struct vtable_t { VkResult (*CreateInstance) ( VkInstanceCreateInfo const*, VkAllocationCallbacks const*, VkInstance* ) noexcept; void (*GetInstanceProc) (VkInstance instance, const char* pName) noexcept; } vtable; private: ::cruft::library m_library; public: using get_proc_t = void* (*)(VkInstance, char const*); get_proc_t const m_get_proc; }; }