| 440 | static bool vulkanInitialized; |
| 441 | |
| 442 | void initVulkan() { |
| 443 | if (!vulkanInitialized) { |
| 444 | BOXEDWINE_CRITICAL_SECTION; |
| 445 | if (vulkanInitialized) { |
| 446 | return; |
| 447 | } |
| 448 | |
| 449 | if (SDL_Vulkan_LoadLibrary(NULL)) { |
| 450 | kpanic_fmt("Failed to load vulkan: %s\n", SDL_GetError()); |
| 451 | } |
| 452 | pvkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)SDL_Vulkan_GetVkGetInstanceProcAddr(); |
| 453 | pvkCreateInstance = (PFN_vkCreateInstance)pvkGetInstanceProcAddr(VK_NULL_HANDLE, "vkCreateInstance"); |
| 454 | pvkEnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties)pvkGetInstanceProcAddr(VK_NULL_HANDLE, "vkEnumerateInstanceExtensionProperties"); |
| 455 | #undef VKFUNC_INSTANCE |
| 456 | #define VKFUNC_INSTANCE(f) |
| 457 | #undef VKFUNC |
| 458 | #define VKFUNC(f) pvk##f = (PFN_vk##f)pvkGetInstanceProcAddr(VK_NULL_HANDLE, "vk"#f); if (!pvk##f) {kwarn("Boxedwine: Failed to load vk"#f);} |
| 459 | #include "../vulkan/vkfuncs.h" |
| 460 | #undef LOAD_FUNCPTR |
| 461 | vulkanInitialized = true; |
| 462 | } |
| 463 | } |
| 464 | |
| 465 | Int99Callback int9ACallback[VK_LAST_VALUE+1]; |
| 466 | U32 int9ACallbackSize; |
no test coverage detected