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;