#include #include #include #include #include #include "hk21/vulkan_loader/api.hpp" int SDL_main(int /* argc */, char* /* argv */[]) { SDL_Init(SDL_INIT_VIDEO); SDL_Window* window = SDL_CreateWindow("HK-21 - 460nm", 1280, 720, SDL_WINDOW_VULKAN); SDL_ShowWindow(window); asl::buffer instance_extensions; asl::buffer device_extensions; asl::buffer layers; { uint32_t count = 0; const char* const* extensions = SDL_Vulkan_GetInstanceExtensions(&count); for (uint32_t i = 0; i < count; ++i) { instance_extensions.push(extensions[i]); // NOLINT(*-pointer-arithmetic) } } layers.push("VK_LAYER_KHRONOS_validation"); layers.push("VK_LAYER_LUNARG_monitor"); instance_extensions.push(VK_EXT_DEBUG_UTILS_EXTENSION_NAME); device_extensions.push(VK_KHR_SWAPCHAIN_EXTENSION_NAME); auto vkGetInstanceProcAddr = asl::bit_cast(SDL_Vulkan_GetVkGetInstanceProcAddr()); auto status = vulkan_loader::load_global(vkGetInstanceProcAddr); if (!status.ok()) { asl::eprint("Couldn't load global Vulkan functions: {}\n", status); } uint32_t version{}; vkEnumerateInstanceVersion(&version); asl::print("Vulkan version: {}.{}\n", VK_API_VERSION_MAJOR(version), // NOLINT VK_API_VERSION_MINOR(version)); // NOLINT bool running = true; while (running) { SDL_Event e; while (SDL_PollEvent(&e)) { if (e.type == SDL_EVENT_QUIT || (e.type == SDL_EVENT_KEY_DOWN && e.key.key == SDLK_ESCAPE)) { running = false; } } SDL_Delay(16); } SDL_DestroyWindow(window); SDL_Quit(); return 0; }