Exemplo n.º 1
0
        public static Mem <T> CreateBuffer(Context context, MemFlags flags, uint size)
        {
            ErrorCode error;
            var       res = NativeMethods.clCreateBuffer(context.handle, flags, (IntPtr)size, IntPtr.Zero, out error);

            if (error != ErrorCode.Success)
            {
                throw new OpenClException(error);
            }
            return(new Mem <T>(res));
        }
Exemplo n.º 2
0
        public static Mem <T> CreateBuffer(Context context, MemFlags flags, T[] data)
        {
            var res = IntPtr.Zero;
            var gch = GCHandle.Alloc(data, GCHandleType.Pinned);

            try {
                var       size = (IntPtr)(Marshal.SizeOf <T> () * data.Length);
                ErrorCode error;
                res = NativeMethods.clCreateBuffer(context.handle, flags, size, gch.AddrOfPinnedObject(), out error);
                if (error != ErrorCode.Success)
                {
                    throw new OpenClException(error);
                }
            } finally {
                gch.Free();
            }
            return(new Mem <T> (res));
        }