internal static extern CLError clReleaseKernel(CLKernel kernel);
internal static extern CLError clRetainKernel(CLKernel kernel);
internal static extern CLError clGetKernelInfo(CLKernel kernel, CLKernelInfo param_name, SizeT param_value_size, IntPtr param_value, ref SizeT param_value_size_ret);
internal static extern CLError clGetKernelWorkGroupInfo(CLKernel kernel, CLDeviceID device, CLKernelWorkGroupInfo param_name, SizeT param_value_size, IntPtr param_value, ref SizeT param_value_size_ret);
internal override void SetAsKernelArgument(CLKernel kernel, int index) { var clMem = new CLMem { Value = openCLSampler.Value }; OpenCLError.Validate(OpenCLDriver.clSetKernelArg(kernel, index, new SizeT(IntPtr.Size), ref clMem)); }
internal static extern CLError clEnqueueTask(CLCommandQueue command_queue, CLKernel kernel, int num_events_in_wait_list, [In] CLEvent[] event_wait_list, ref CLEvent e);
internal static extern CLError clSetKernelArg(CLKernel kernel, int arg_index, SizeT arg_size, int[] arg_value);
internal abstract void SetAsKernelArgument(CLKernel kernel, Int32 index);
internal static extern CLError clSetKernelArg(CLKernel kernel, int arg_index, SizeT arg_size, ref CLSampler arg_value);
internal static extern CLError clEnqueueNDRangeKernel(CLCommandQueue command_queue, CLKernel kernel, int work_dim, [In] SizeT[] global_work_offset, [In] SizeT[] global_work_size, [In] SizeT[] local_work_size, int num_events_in_wait_list, [In] CLEvent[] event_wait_list, ref CLEvent e);
internal override void SetAsKernelArgument(CLKernel kernel, int index) { OpenCLError.Validate(OpenCLDriver.clSetKernelArg(kernel, index, new SizeT(IntPtr.Size), ref openCLMem)); }
internal override void SetAsKernelArgument(CLKernel kernel, Int32 index) { OpenCLError.Validate(OpenCLDriver.clSetKernelArg(kernel, index, new SizeT(IntPtr.Size), memObjects)); }
internal override void SetAsKernelArgument(CLKernel kernel, int index) { throw new NotImplementedException (); }