public SynchronizedCommandQueue(
            ExecutionContext context,
            ComPtr <ID3D12CommandQueue> queue,
            ComPtr <ID3D12Fence> fence
            )
        {
            Debug.Assert(queue.Exists);
            Debug.Assert(fence.Exists);

            _queue  = queue;
            _fence  = fence;
            _marker = new FenceMarker(FenceMarker.GetFirstFenceForExecutionContext(context), context);
            _queue.Get()->Signal(_fence.Get(), _marker.FenceValue);
        }
 internal void Signal(ID3D12Fence *fence, FenceMarker marker)
 {
     _queue.Get()->Signal(fence, marker.FenceValue);
 }
 internal GpuDispatchSynchronizer GetSynchronizer(FenceMarker fenceMarker)
 {
     return(new GpuDispatchSynchronizer(_fence.Copy(), fenceMarker));
 }
Example #4
0
 /// <summary>
 /// Creates a new instance of <see cref="GpuDispatchSynchronizer"/>
 /// </summary>
 public GpuDispatchSynchronizer(ComPtr <ID3D12Fence> fence, FenceMarker completionValue)
 {
     _fence           = fence;
     _completionValue = completionValue;
 }