public NvHostEvent(NvHostSyncpt syncpointManager, uint eventId, Horizon system) { Fence.Id = 0; State = NvHostEventState.Available; Event = new KEvent(system); _eventId = eventId; _syncpointManager = syncpointManager; }
private void Signal() { NvHostEventState oldState = State; State = NvHostEventState.Signaling; if (oldState == NvHostEventState.Waiting) { Event.WritableEvent.Signal(); } State = NvHostEventState.Signaled; }
public NvHostEvent(NvHostSyncpt syncpointManager, uint eventId, Horizon system) { Fence.Id = 0; State = NvHostEventState.Available; Event = new KEvent(system.KernelContext); _eventId = eventId; _syncpointManager = syncpointManager; ResetFailingState(); }
public NvHostEvent(NvHostSyncpt syncpointManager, uint eventId, Horizon system) { Fence.Id = 0; State = NvHostEventState.Available; Event = new KEvent(system.KernelContext); if (KernelStatic.GetCurrentProcess().HandleTable.GenerateHandle(Event.ReadableEvent, out EventHandle) != KernelResult.Success) { throw new InvalidOperationException("Out of handles!"); } _eventId = eventId; _syncpointManager = syncpointManager; ResetFailingState(); }
private NvInternalResult EventSignal(ref uint userEventId) { uint eventId = userEventId & ushort.MaxValue; if (eventId >= EventsCount) { return(NvInternalResult.InvalidInput); } lock (_events) { NvHostEvent hostEvent = _events[eventId]; if (hostEvent == null) { return(NvInternalResult.InvalidInput); } lock (hostEvent.Lock) { NvHostEventState oldState = hostEvent.State; if (oldState == NvHostEventState.Waiting) { hostEvent.State = NvHostEventState.Cancelling; hostEvent.Cancel(_device.Gpu); } hostEvent.State = NvHostEventState.Cancelled; _device.System.HostSyncpoint.UpdateMin(hostEvent.Fence.Id); return(NvInternalResult.Success); } } }
public void Reset() { Fence.Id = NvFence.InvalidSyncPointId; Fence.Value = 0; State = NvHostEventState.Availaible; }