VkDevice: Migrate to using marl::Event::any()

Bug: b/144388391
Change-Id: I5a9c63899fcb1a39c80be25813d1d89ca22b26a8
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/38138
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Tested-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Chris Forbes <chrisforbes@google.com>
diff --git a/src/Vulkan/VkDevice.cpp b/src/Vulkan/VkDevice.cpp
index 5816683..ae74729 100644
--- a/src/Vulkan/VkDevice.cpp
+++ b/src/Vulkan/VkDevice.cpp
@@ -177,37 +177,27 @@
 	}
 	else // At least one fence must be signaled
 	{
-		// Start by quickly checking the status of all fences, as only one is required
+		marl::containers::vector<marl::Event, 8> events;
 		for(uint32_t i = 0; i < fenceCount; i++)
 		{
-			if(Cast(pFences[i])->getStatus() == VK_SUCCESS) // At least one fence is signaled
-			{
-				return VK_SUCCESS;
-			}
+			events.push_back(Cast(pFences[i])->getEvent());
 		}
 
-		if(timeout > 0)
+		auto any = marl::Event::any(events.begin(), events.end());
+
+		if(timeout == 0)
 		{
-			for(uint32_t i = 0; i < fenceCount; i++)
-			{
-				if(infiniteTimeout)
-				{
-					if(Cast(pFences[i])->wait() == VK_SUCCESS) // At least one fence is signaled
-					{
-						return VK_SUCCESS;
-					}
-				}
-				else
-				{
-					if(Cast(pFences[i])->wait(end_ns) == VK_SUCCESS) // At least one fence is signaled
-					{
-						return VK_SUCCESS;
-					}
-				}
-			}
+			return any.isSignalled() ? VK_SUCCESS : VK_TIMEOUT;
 		}
-
-		return VK_TIMEOUT;
+		else if (infiniteTimeout)
+		{
+			any.wait();
+			return VK_SUCCESS;
+		}
+		else
+		{
+			return any.wait_until(end_ns) ? VK_SUCCESS : VK_TIMEOUT;
+		}
 	}
 }
 
diff --git a/src/Vulkan/VkFence.hpp b/src/Vulkan/VkFence.hpp
index 4fa8293..586d42f 100644
--- a/src/Vulkan/VkFence.hpp
+++ b/src/Vulkan/VkFence.hpp
@@ -58,6 +58,8 @@
 		return event.wait_until(timeout) ? VK_SUCCESS : VK_TIMEOUT;
 	}
 
+	const marl::Event& getEvent() const { return event; }
+
 	// TaskEvents compliance
 	void start() override
 	{