/// <summary> /// Cloo compute command queue /// </summary> /// <param name="context">command context</param> /// <param name="device">command device</param> /// <param name="flags">command queue flags</param> public ClooCommandQueue(ClooContext context, ClooDevice device, ComputeCommandQueueFlags flags) : base(context, device, flags) { _context = context; _device = device; _flags = flags; }
/// <summary> /// Updates all devices list /// </summary> public static void UpdateCompatibleDevices() { lock (_lockUpdateCompatibleDevices) { _devicesByHandle = new Dictionary<IntPtr, ClooDevice>(); _allDevices = new List<ClooDevice>(); foreach (ComputePlatform platform in ComputePlatform.Platforms) { foreach (ComputeDevice device in platform.Devices) { if (_devicesByHandle.ContainsKey(device.Handle)) continue; // device already added if (!device.CompilerAvailable) continue; if (!device.ImageSupport) continue; ClooDevice clooDevice = new ClooDevice(platform, device.Handle); _devicesByHandle[device.Handle] = clooDevice; _allDevices.Add(clooDevice); } } } }
/// <summary> /// Creates a compute context from device /// </summary> /// <param name="device">compute device</param> /// <returns>compute context</returns> /// <exception cref="ArgumentNulLException">device</exception> public static ClooContext FromDevice(ClooDevice device) { if (device == null) throw new ArgumentNullException("device"); return device.CreateContext(); }