예제 #1
0
        ///<summary>
        ///Creates a new <see cref = "ComputeCommandQueue"/>.
        ///</summary>
        ///<param name = "context"> A <see cref = "ComputeContext"/>. </param>
        ///<para name = "device"> A <see cref = "ComputeDevice"/> associated with the <paramref name = "context"/>. It can either be one of <see cref = "ComputeContext.Devices"/> or have   the same <see cref = "ComputeDeviceTypes"/> as the <paramref name = "device"/> specified when <paramref name = "context"/> is created. </param>
        ///<param name = "properties"> The properties for the <see cref = "ComputeCommandQueue"/>. </param>
        public ComputeCommandQueue(ComputeContext context, ComputeDevice device, ComputeCommandQueueFlags properties)
        {
            ComputeErrorCode error = ComputeErrorCode.Success;

            Handle = CL12.CreateCommandQueue(context.Handle, device.Handle, properties, out error);
            ComputeException.ThrowOnError(error);

            SetID(Handle.Value);

            this.device  = device;
            this.context = context;

            outOfOrderExec = ((properties & ComputeCommandQueueFlags.OutOfOrderExecution) == ComputeCommandQueueFlags.OutOfOrderExecution);
            profiling      = ((properties & ComputeCommandQueueFlags.Profiling) == ComputeCommandQueueFlags.Profiling);

            Events = new List <ComputeEventBase>();

            Trace.WriteLine("Create " + this + " in Thread(" + Thread.CurrentThread.ManagedThreadId + ").", "Information");
        }