aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Device/ISynchronizationManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Graphics.Device/ISynchronizationManager.cs')
-rw-r--r--src/Ryujinx.Graphics.Device/ISynchronizationManager.cs39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/Ryujinx.Graphics.Device/ISynchronizationManager.cs b/src/Ryujinx.Graphics.Device/ISynchronizationManager.cs
new file mode 100644
index 00000000..2a8d1d9b
--- /dev/null
+++ b/src/Ryujinx.Graphics.Device/ISynchronizationManager.cs
@@ -0,0 +1,39 @@
+using Ryujinx.Common.Logging;
+using System;
+using System.Threading;
+
+namespace Ryujinx.Graphics.Device
+{
+ /// <summary>
+ /// Synchronization manager interface.
+ /// </summary>
+ public interface ISynchronizationManager
+ {
+ /// <summary>
+ /// Increment the value of a syncpoint with a given id.
+ /// </summary>
+ /// <param name="id">The id of the syncpoint</param>
+ /// <exception cref="System.ArgumentOutOfRangeException">Thrown when id >= MaxHardwareSyncpoints</exception>
+ /// <returns>The incremented value of the syncpoint</returns>
+ uint IncrementSyncpoint(uint id);
+
+ /// <summary>
+ /// Get the value of a syncpoint with a given id.
+ /// </summary>
+ /// <param name="id">The id of the syncpoint</param>
+ /// <exception cref="System.ArgumentOutOfRangeException">Thrown when id >= MaxHardwareSyncpoints</exception>
+ /// <returns>The value of the syncpoint</returns>
+ uint GetSyncpointValue(uint id);
+
+ /// <summary>
+ /// Wait on a syncpoint with a given id at a target threshold.
+ /// The callback will be called once the threshold is reached and will automatically be unregistered.
+ /// </summary>
+ /// <param name="id">The id of the syncpoint</param>
+ /// <param name="threshold">The target threshold</param>
+ /// <param name="timeout">The timeout</param>
+ /// <exception cref="System.ArgumentOutOfRangeException">Thrown when id >= MaxHardwareSyncpoints</exception>
+ /// <returns>True if timed out</returns>
+ bool WaitOnSyncpoint(uint id, uint threshold, TimeSpan timeout);
+ }
+}