Fire VkFence in vkAcquireImageANDROID Have Vk synchronization objects fire in vkAcquireImageANDROID as per described in https://source.android.com/devices/graphics/implement-vulkan Tests: dEQP-VK.wsi.android.swapchain.modify.resize Bug: b/133520634 Change-Id: I9b045df3b5ed0fff8efde9c0207e4a1da9c94b8f Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/31968 Reviewed-by: Chris Forbes <chrisforbes@google.com> Tested-by: Hernan Liatis <hliatis@google.com>
diff --git a/src/Vulkan/libVulkan.cpp b/src/Vulkan/libVulkan.cpp index c339caf..1c88a33 100644 --- a/src/Vulkan/libVulkan.cpp +++ b/src/Vulkan/libVulkan.cpp
@@ -2770,6 +2770,22 @@ TRACE("(VkDevice device = %p, VkImage image = %p, int nativeFenceFd = %d, VkSemaphore semaphore = %p, VkFence fence = %p)", device, image.get(), nativeFenceFd, semaphore.get(), fence.get()); + if(nativeFenceFd >= 0) + { + sync_wait(nativeFenceFd, -1); + close(nativeFenceFd); + } + + if(fence != VK_NULL_HANDLE) + { + vk::Cast(fence)->complete(); + } + + if(semaphore != VK_NULL_HANDLE) + { + vk::Cast(semaphore)->signal(); + } + return VK_SUCCESS; }