#include #include #include #include #include using namespace deimos; static LogApi* log_api; [[nodiscard]] Status CreateInstance(VulkanApi* vk, VkInstance* instance) { VkApplicationInfo application_info{ .sType = VK_STRUCTURE_TYPE_APPLICATION_INFO, .pNext = nullptr, .pApplicationName = "Deimos game", .applicationVersion = 0, .pEngineName = "Deimos engine", .engineVersion = 0, .apiVersion = VK_API_VERSION_1_3, }; const char* extensions[]{ "VK_KHR_surface", "VK_KHR_win32_surfaceu", }; const char* layers[]{ "VK_LAYER_KHRONOS_validation", "VK_LAYER_LUNARG_monitor", }; VkInstanceCreateInfo create_info{ .sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, .pNext = nullptr, .flags = 0, .pApplicationInfo = &application_info, .enabledLayerCount = (uint32_t)ArraySize(layers), .ppEnabledLayerNames = layers, .enabledExtensionCount = (uint32_t)ArraySize(extensions), .ppEnabledExtensionNames = extensions, }; VkResult res = vk->CreateInstance(&create_info, nullptr, instance); if (res != VK_SUCCESS) { return UnknownError(); } return {}; } int main(int /* argc */, char* /* argv */[]) { auto* api_registry = InitializeGlobalApiRegistry(); log_api = api_registry->Get(); log_api->LogInfo("Base APIs registered"); RegisterVulkanLoaderApi(api_registry); auto* vulkan_loader_api = api_registry->Get(); auto* vk = vulkan_loader_api->LoadEntry(); VkInstance instance{}; Status s = CreateInstance(vk, &instance); if (!s.ok()) { log_api->LogError("Couldn't create Vulkan instance: $", s); } log_api->LogInfo("OK"); return 0; }