diff options
Diffstat (limited to 'src/Ryujinx.Graphics.Device/ISynchronizationManager.cs')
-rw-r--r-- | src/Ryujinx.Graphics.Device/ISynchronizationManager.cs | 39 |
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); + } +} |