Exemple #1
0
        private bool NonBlockingWait()
        {
            // only on the first time
            ClientWaitSyncFlags waitOption = ClientWaitSyncFlags.SyncFlushCommandsBit;

            WaitSyncStatus result = GL.ClientWaitSync(ObjectPtr, waitOption, 0);

            waitOption = ClientWaitSyncFlags.None;
            if (result == WaitSyncStatus.WaitFailed)
            {
                throw new InvalidOperationException("GPU NonBlockingWait sync failed - surplus actions incomplete");
            }
            return(!(result == WaitSyncStatus.ConditionSatisfied || result == WaitSyncStatus.AlreadySignaled));
        }
        /// <summary>
        /// Wait for fence
        /// </summary>
        /// <param name="flags">Only None or SyncFlushCommandsBit</param>
        /// <param name="timeout">In nanoseconds!</param>
        /// <returns>Wait state (AlreadySignalled (pre signalled),Expired (timeout),Satisfied (signalled during timeout), Failed)</returns>

        public WaitSyncStatus ClientWait(ClientWaitSyncFlags flags, int timeout)
        {
            var status = GL.ClientWaitSync(Id, flags, timeout);

            return(status);
        }
Exemple #3
0
        /// <inheritdoc cref="GLOFC.GL4.GLFenceSync.GLWait"/>

        public WaitSyncStatus ClientWait(ClientWaitSyncFlags flags, int timeout)
        {
            return(Sync.ClientWait(flags, timeout));
        }
Exemple #4
0
 public void BeginSync()
 {
     ObjectPtr   = GL.FenceSync(SyncCondition.SyncGpuCommandsComplete, 0);
     IsSignalled = false;
     mWaitOption = ClientWaitSyncFlags.SyncFlushCommandsBit;
 }