From: Dave Airlie Date: Thu, 13 Oct 2016 02:38:49 +0000 (+1000) Subject: radv/wsi: fix app that acquire multiple images up front X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8bdac874e667179bd2682f0111cd7db58b858e5b;p=mesa.git radv/wsi: fix app that acquire multiple images up front dota2 does multiple acquires followed by multiple queues, this bug manifested itself as a hang in the xshmfence code randomly when dota2 was doing it's menus. It also occured when running dota2 under phoronix-test-suite. The fix is once the image is acquired to mark it busy then so nobody else can acquire. We have to trust vulkan apps that they will eventually submit it. Acked-by: Edward O'Callaghan Signed-off-by: Dave Airlie --- diff --git a/src/amd/vulkan/radv_wsi_wayland.c b/src/amd/vulkan/radv_wsi_wayland.c index 2b4a3d32a45..5ce2e9e7915 100644 --- a/src/amd/vulkan/radv_wsi_wayland.c +++ b/src/amd/vulkan/radv_wsi_wayland.c @@ -521,6 +521,7 @@ wsi_wl_swapchain_acquire_next_image(struct radv_swapchain *radv_chain, if (!chain->images[i].busy) { /* We found a non-busy image */ *image_index = i; + chain->images[image_index].busy = true; return VK_SUCCESS; } } diff --git a/src/amd/vulkan/radv_wsi_x11.c b/src/amd/vulkan/radv_wsi_x11.c index 0aae2a3530d..9cd0db0a685 100644 --- a/src/amd/vulkan/radv_wsi_x11.c +++ b/src/amd/vulkan/radv_wsi_x11.c @@ -579,6 +579,7 @@ x11_acquire_next_image(struct radv_swapchain *radv_chain, /* We found a non-busy image */ xshmfence_await(chain->images[i].shm_fence); *image_index = i; + chain->images[i].busy = true; return VK_SUCCESS; } }