diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c index 507d6e64bd8..fc71479d68a 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -917,7 +917,13 @@ static HRESULT wined3d_swapchain_vk_create_vulkan_swapchain(struct wined3d_swapc goto fail; } - image_count = desc->backbuffer_count; + /* CW HACK 18838: Create MoltenVK swapchains with 3 images, as + * recommended by the MoltenVK documentation. Performance of full-screen + * swapchains is atrocious with the only other supported image count of 2. */ + if (adapter_vk->driver_properties.driverID == VK_DRIVER_ID_MOLTENVK) + image_count = 3; + else + image_count = desc->backbuffer_count; if (image_count < surface_caps.minImageCount) image_count = surface_caps.minImageCount; else if (surface_caps.maxImageCount && image_count > surface_caps.maxImageCount)