Commit 951d48df by Ben Clayton

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: 's avatarBen Clayton <bclayton@google.com> Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarChris Forbes <chrisforbes@google.com>
parent 59f2d5e5
......@@ -177,37 +177,27 @@ VkResult Device::waitForFences(uint32_t fenceCount, const VkFence* pFences, VkBo
}
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;
}
else if (infiniteTimeout)
{
any.wait();
return VK_SUCCESS;
}
else
{
return any.wait_until(end_ns) ? VK_SUCCESS : VK_TIMEOUT;
}
return VK_TIMEOUT;
}
}
......
......@@ -58,6 +58,8 @@ public:
return event.wait_until(timeout) ? VK_SUCCESS : VK_TIMEOUT;
}
const marl::Event& getEvent() const { return event; }
// TaskEvents compliance
void start() override
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment