Example #1
0
        public void SetKernelArg(uint idx, HandleObject val)
        {
            var    size  = (IntPtr)Marshal.SizeOf <IntPtr>();
            IntPtr obj   = val.handle;
            var    error = NativeMethods.clSetKernelArg(this.handle, idx, size, ref obj);

            if (error != ErrorCode.Success)
            {
                throw new OpenClException(error);
            }
        }
Example #2
0
        // Kernel methods

        public void SetKernelArg <T> (uint idx, T val) where T : struct
        {
            var      size = (IntPtr)Marshal.SizeOf <T> ();
            GCHandle gch  = GCHandle.Alloc(val, GCHandleType.Pinned);

            try {
                var error = NativeMethods.clSetKernelArg(this.handle, idx, size, gch.AddrOfPinnedObject());
                if (error != ErrorCode.Success)
                {
                    throw new OpenClException(error);
                }
            } finally {
                gch.Free();
            }
        }