VkSurfaceCapabilitiesKHR pSurfaceCapabilities;
res = vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, &pSurfaceCapabilities);
if (res != VK_SUCCESS)
return 1;
VkFormatProperties formatProperties = {};
vkGetPhysicalDeviceFormatProperties(physicalDevice, VK_FORMAT_A8B8G8R8_UINT_PACK32, &formatProperties);
VkSwapchainCreateInfoKHR swapchainInfo = {};
swapchainInfo.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR;
swapchainInfo.surface = surface;
swapchainInfo.imageArrayLayers = 1;
swapchainInfo.imageExtent = pSurfaceCapabilities.currentExtent;
swapchainInfo.imageFormat = VK_FORMAT_A8B8G8R8_UINT_PACK32;
swapchainInfo.imageUsage = pSurfaceCapabilities.supportedUsageFlags;
swapchainInfo.imageColorSpace = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR;
swapchainInfo.minImageCount = pSurfaceCapabilities.minImageCount;
swapchainInfo.presentMode = VK_PRESENT_MODE_IMMEDIATE_KHR;
VkSwapchainKHR swapchain;
// Create Swapchain
res = vkCreateSwapchainKHR(device, &swapchainInfo, 0, &swapchain);
if (res != VK_SUCCESS)
return 1;