From dde2e324effef280fefcf5b65d6c65131d615fdd Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Tue, 6 Apr 2021 12:15:45 +0200 Subject: wsi/x11: Wait for fences with IMMEDIATE on Xwayland The commit below was already meant to do this, but accidentally missed this part. Fixes stutter when the frame-rate drops below the refresh rate. Fixes: e8f50bd60087 "wsi/x11: Treat IMMEDIATE present mode the same as MAILBOX for Xwayland" Reviewed-by: Adam Jackson Part-of: (cherry picked from commit 8ec530d9828e01ac12918c7abb9b4e4aaf9a38cf) --- .pick_status.json | 2 +- src/vulkan/wsi/wsi_common_x11.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index f7d3ab67770..cc3aa948500 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -148,7 +148,7 @@ "description": "wsi/x11: Wait for fences with IMMEDIATE on Xwayland", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "e8f50bd60087805aa89144ecdd6e5a9b4368b532" }, diff --git a/src/vulkan/wsi/wsi_common_x11.c b/src/vulkan/wsi/wsi_common_x11.c index 165b366e2df..bf53dbc055f 100644 --- a/src/vulkan/wsi/wsi_common_x11.c +++ b/src/vulkan/wsi/wsi_common_x11.c @@ -1202,6 +1202,8 @@ static void * x11_manage_fifo_queues(void *state) { struct x11_swapchain *chain = state; + struct wsi_x11_connection *wsi_conn = + wsi_x11_get_connection((struct wsi_device*)chain->base.wsi, chain->conn); VkResult result = VK_SUCCESS; assert(chain->has_present_queue); @@ -1225,7 +1227,9 @@ x11_manage_fifo_queues(void *state) return NULL; } - if (chain->base.present_mode == VK_PRESENT_MODE_MAILBOX_KHR) { + if (chain->base.present_mode == VK_PRESENT_MODE_MAILBOX_KHR || + (chain->base.present_mode == VK_PRESENT_MODE_IMMEDIATE_KHR && + wsi_conn->is_xwayland)) { result = chain->base.wsi->WaitForFences(chain->base.device, 1, &chain->base.fences[image_index], true, UINT64_MAX); -- cgit v1.2.3