void
wsi_swapchain_finish(struct wsi_swapchain *chain)
{
diff --git a/src/vulkan/wsi/wsi_common_display.c
b/src/vulkan/wsi/wsi_common_display.c
index 09c18315623..36ddb07a5bf 100644
--- a/src/vulkan/wsi/wsi_common_display.c
+++ b/src/vulkan/wsi/wsi_common_display.c
@@ -1765,6 +1765,8 @@ wsi_display_surface_create_swapchain(
chain->surface = (VkIcdSurfaceDisplay *) icd_surface;
+ wsi_swapchain_override_present_mode(&chain->base);
+
for (uint32_t image = 0; image < chain->base.image_count;
image++) {
result = wsi_display_image_init(device, &chain->base,
create_info, allocator,
diff --git a/src/vulkan/wsi/wsi_common_private.h
b/src/vulkan/wsi/wsi_common_private.h
index a6f49fc3124..5ed4029ed70 100644
--- a/src/vulkan/wsi/wsi_common_private.h
+++ b/src/vulkan/wsi/wsi_common_private.h
@@ -78,6 +78,8 @@ wsi_swapchain_init(const struct wsi_device *wsi,
VkDevice device,
const VkSwapchainCreateInfoKHR *pCreateInfo,
const VkAllocationCallbacks *pAllocator);
+void
+wsi_swapchain_override_present_mode(struct wsi_swapchain *swapchain);
void wsi_swapchain_finish(struct wsi_swapchain *chain);
diff --git a/src/vulkan/wsi/wsi_common_wayland.c
b/src/vulkan/wsi/wsi_common_wayland.c
index 03a47028ef2..dcb2f8733f6 100644
--- a/src/vulkan/wsi/wsi_common_wayland.c
+++ b/src/vulkan/wsi/wsi_common_wayland.c
@@ -1015,6 +1015,8 @@
wsi_wl_surface_create_swapchain(VkIcdSurfaceBase *icd_surface,
chain->vk_format = pCreateInfo->imageFormat;
chain->drm_format =
wl_drm_format_for_vk_format(chain->vk_format, alpha);
+ wsi_swapchain_override_present_mode(&chain->base);
+
if (pCreateInfo->oldSwapchain) {
/* If we have an oldSwapchain parameter, copy the display
struct over
* from the old one so we don't have to fully re-initialize it.
diff --git a/src/vulkan/wsi/wsi_common_x11.c
b/src/vulkan/wsi/wsi_common_x11.c
index c87b9312636..f4dafb3b55e 100644
--- a/src/vulkan/wsi/wsi_common_x11.c
+++ b/src/vulkan/wsi/wsi_common_x11.c
@@ -1373,6 +1373,8 @@ x11_surface_create_swapchain(VkIcdSurfaceBase
*icd_surface,
chain->status = VK_SUCCESS;
chain->has_dri3_modifiers = wsi_conn->has_dri3_modifiers;
+ wsi_swapchain_override_present_mode(&chain->base);
+
/* If we are reallocating from an old swapchain, then we inherit
its
* last completion mode, to ensure we don't get into reallocation
* cycles. If we are starting anew, we set 'COPY', as that is
the only