Mesa (master): radv: Implement waiting on non-submitted fences.

Bas Nieuwenhuizen bnieuwenhuizen at kemper.freedesktop.org
Thu Mar 1 00:08:18 UTC 2018


Module: Mesa
Branch: master
Commit: 6968d782d3063c639e80dbcf6df944902d72692f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6968d782d3063c639e80dbcf6df944902d72692f

Author: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Date:   Mon Feb 26 22:54:06 2018 +0100

radv: Implement waiting on non-submitted fences.

Fixes: f4e499ec79 "radv: add initial non-conformant radv vulkan driver"
Reviewed-by: Dave Airlie <airlied at redhat.com>

---

 src/amd/vulkan/radv_device.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index 24ea3b689e..8eadd8f203 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -2946,8 +2946,17 @@ VkResult radv_WaitForFences(
 		if (fence->signalled)
 			continue;
 
-		if (!fence->submitted)
-			return VK_TIMEOUT;
+		if (!fence->submitted) {
+			while(radv_get_current_time() <= timeout && !fence->submitted)
+				/* Do nothing */;
+
+			if (!fence->submitted)
+				return VK_TIMEOUT;
+
+			/* Recheck as it may have been set by submitting operations. */
+			if (fence->signalled)
+				continue;
+		}
 
 		expired = device->ws->fence_wait(device->ws, fence->fence, true, timeout);
 		if (!expired)




More information about the mesa-commit mailing list