diff options
Diffstat (limited to 'src/Ryujinx.Graphics.OpenGL/Sync.cs')
-rw-r--r-- | src/Ryujinx.Graphics.OpenGL/Sync.cs | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/Ryujinx.Graphics.OpenGL/Sync.cs b/src/Ryujinx.Graphics.OpenGL/Sync.cs index 58818e6a..54e9c6d3 100644 --- a/src/Ryujinx.Graphics.OpenGL/Sync.cs +++ b/src/Ryujinx.Graphics.OpenGL/Sync.cs @@ -15,13 +15,13 @@ namespace Ryujinx.Graphics.OpenGL } private ulong _firstHandle = 0; - private ClientWaitSyncFlags _syncFlags => HwCapabilities.RequiresSyncFlush ? ClientWaitSyncFlags.None : ClientWaitSyncFlags.SyncFlushCommandsBit; + private static ClientWaitSyncFlags SyncFlags => HwCapabilities.RequiresSyncFlush ? ClientWaitSyncFlags.None : ClientWaitSyncFlags.SyncFlushCommandsBit; - private List<SyncHandle> _handles = new List<SyncHandle>(); + private readonly List<SyncHandle> _handles = new(); public void Create(ulong id) { - SyncHandle handle = new SyncHandle + SyncHandle handle = new() { ID = id, Handle = GL.FenceSync(SyncCondition.SyncGpuCommandsComplete, WaitSyncFlags.None) @@ -57,7 +57,7 @@ namespace Ryujinx.Graphics.OpenGL if (handle.ID > lastHandle) { - WaitSyncStatus syncResult = GL.ClientWaitSync(handle.Handle, _syncFlags, 0); + WaitSyncStatus syncResult = GL.ClientWaitSync(handle.Handle, SyncFlags, 0); if (syncResult == WaitSyncStatus.AlreadySignaled) { @@ -101,8 +101,8 @@ namespace Ryujinx.Graphics.OpenGL return; } - WaitSyncStatus syncResult = GL.ClientWaitSync(result.Handle, _syncFlags, 1000000000); - + WaitSyncStatus syncResult = GL.ClientWaitSync(result.Handle, SyncFlags, 1000000000); + if (syncResult == WaitSyncStatus.TimeoutExpired) { Logger.Error?.PrintMsg(LogClass.Gpu, $"GL Sync Object {result.ID} failed to signal within 1000ms. Continuing..."); @@ -123,9 +123,12 @@ namespace Ryujinx.Graphics.OpenGL first = _handles.FirstOrDefault(); } - if (first == null) break; + if (first == null) + { + break; + } - WaitSyncStatus syncResult = GL.ClientWaitSync(first.Handle, _syncFlags, 0); + WaitSyncStatus syncResult = GL.ClientWaitSync(first.Handle, SyncFlags, 0); if (syncResult == WaitSyncStatus.AlreadySignaled) { @@ -140,7 +143,8 @@ namespace Ryujinx.Graphics.OpenGL first.Handle = IntPtr.Zero; } } - } else + } + else { // This sync handle and any following have not been reached yet. break; |