aboutsummaryrefslogtreecommitdiffstats
path: root/src/vk-api.cpp
diff options
context:
space:
mode:
authorQuentin Ladevie <ladevie.quentin@gmail.com>2021-03-14 23:28:39 +0100
committerQuentin Ladevie <ladevie.quentin@gmail.com>2021-03-14 23:28:39 +0100
commitda0bf8dc570f6e8421b8d80546dfce913b8251ad (patch)
tree06646be201b1157923a8f08e7d7562859cb3f1a5 /src/vk-api.cpp
parent26369a8cdf90320cdd472fdca23ee38f7ce48302 (diff)
Make it compile on mac
Diffstat (limited to 'src/vk-api.cpp')
-rw-r--r--src/vk-api.cpp17
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))