| 123456789101112131415161718192021222324252627282930 |
- using Silk.NET.Vulkan;
- using System;
- namespace Ryujinx.Graphics.Vulkan
- {
- static class FenceHelper
- {
- private const ulong DefaultTimeout = 100000000; // 100ms
- public static bool AnySignaled(Vk api, Device device, ReadOnlySpan<Fence> fences, ulong timeout = 0)
- {
- return api.WaitForFences(device, (uint)fences.Length, fences, false, timeout) == Result.Success;
- }
- public static bool AllSignaled(Vk api, Device device, ReadOnlySpan<Fence> fences, ulong timeout = 0)
- {
- return api.WaitForFences(device, (uint)fences.Length, fences, true, timeout) == Result.Success;
- }
- public static void WaitAllIndefinitely(Vk api, Device device, ReadOnlySpan<Fence> fences)
- {
- Result result;
- while ((result = api.WaitForFences(device, (uint)fences.Length, fences, true, DefaultTimeout)) == Result.Timeout)
- {
- // Keep waiting while the fence is not signaled.
- }
- result.ThrowOnError();
- }
- }
- }
|