diff options
| author | Quentin Ladevie <ladevie.quentin@gmail.com> | 2021-03-14 23:28:39 +0100 |
|---|---|---|
| committer | Quentin Ladevie <ladevie.quentin@gmail.com> | 2021-03-14 23:28:39 +0100 |
| commit | da0bf8dc570f6e8421b8d80546dfce913b8251ad (patch) | |
| tree | 06646be201b1157923a8f08e7d7562859cb3f1a5 /src/vk-api.cpp | |
| parent | 26369a8cdf90320cdd472fdca23ee38f7ce48302 (diff) | |
Make it compile on mac
Diffstat (limited to 'src/vk-api.cpp')
| -rw-r--r-- | src/vk-api.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/vk-api.cpp b/src/vk-api.cpp index 440af02..dc30520 100644 --- a/src/vk-api.cpp +++ b/src/vk-api.cpp @@ -666,6 +666,14 @@ VkSurfaceKHR vkapi::create_surface(window& wnd) { create_info.hwnd = wnd.win_handle; VKRESULT(vkCreateWin32SurfaceKHR(context.instance, &create_info, nullptr, &surface)) +#elif defined(MACOS) + VkMetalSurfaceCreateInfoEXT create_info = {}; + create_info.sType = VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT; + create_info.pNext = nullptr; + create_info.flags = 0; + // create_info.pLayer = GetModuleHandle(NULL); + + VKRESULT(vkCreateMetalSurfaceEXT(context.instance, &create_info, nullptr, &surface)) #endif return surface; @@ -676,7 +684,7 @@ void vkapi::destroy_surface(VkSurfaceKHR surface) { } -Swapchain vkapi::create_swapchain(VkSurfaceKHR surface, size_t min_image_count, VkImageUsageFlags usages, std::optional<std::reference_wrapper<Swapchain>> old_swapchain) { +Swapchain vkapi::create_swapchain(VkSurfaceKHR surface, size_t min_image_count, VkImageUsageFlags usages, VkSwapchainKHR old_swapchain) { Swapchain swapchain; VkBool32 queue_support_presentation = VK_FALSE; VKRESULT(vkGetPhysicalDeviceSurfaceSupportKHR(context.physical_device, context.queue_index, surface, &queue_support_presentation)) @@ -713,7 +721,6 @@ Swapchain vkapi::create_swapchain(VkSurfaceKHR surface, size_t min_image_count, VKRESULT(vkGetPhysicalDeviceSurfacePresentModesKHR(context.physical_device, surface, &supported_present_modes_count, supported_present_modes.data())) swapchain.surface_format = supported_formats[0]; - VkSwapchainKHR old_swapchain_handle = (old_swapchain != std::nullopt) ? old_swapchain.value().get().handle : VK_NULL_HANDLE; VkSwapchainCreateInfoKHR create_info = {}; create_info.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR; @@ -731,14 +738,10 @@ Swapchain vkapi::create_swapchain(VkSurfaceKHR surface, size_t min_image_count, create_info.compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR; create_info.presentMode = VK_PRESENT_MODE_FIFO_KHR; create_info.clipped = VK_TRUE; - create_info.oldSwapchain = old_swapchain_handle; + create_info.oldSwapchain = old_swapchain; VKRESULT(vkCreateSwapchainKHR(context.device, &create_info, nullptr, &swapchain.handle)) - if (old_swapchain != std::nullopt) { - destroy_swapchain(old_swapchain.value()); - } - uint32_t image_count = 0; VKRESULT(vkGetSwapchainImagesKHR(context.device, swapchain.handle, &image_count, VK_NULL_HANDLE)) |
