Exemple #1
0
 public extern static int clEnqueueWriteBuffer(
     IntPtr command_queue,
     IntPtr buffer,
     CL_Bool blocking_write,
     IntPtr offset,
     IntPtr cb,
     IntPtr ptr,
     uint num_events_in_wait_list,
     IntPtr[] event_wait_list,
     IntPtr event_wait);
Exemple #2
0
 public extern static IntPtr clEnqueueMapBuffer(
     IntPtr command_queue,
     IntPtr buffer,
     CL_Bool blocking_map,
     MapFlags map_flags,
     IntPtr offset,
     IntPtr cb,
     uint num_events_in_wait_list,
     IntPtr[] event_wait_list,
     IntPtr event_wait,
     out int errcode_ret);
Exemple #3
0
        void ReadBufferInternal(bool blocking, bool outputEventHandle, Memory buf, int buf_offset, object dst, int dst_offset, int size, EventHandle[] wait_list, out EventHandle eventHandle)
        {
            IntPtr   dst_handle;
            GCHandle dst_gc_handle;

            if (dst is IntPtr)
            {
                dst_handle    = (IntPtr)dst;
                dst_gc_handle = new GCHandle();
            }
            else
            {
                dst_gc_handle = GCHandle.Alloc(dst, GCHandleType.Pinned);
                dst_handle    = dst_gc_handle.AddrOfPinnedObject();
            }

            try {
                IntPtr   dst_ptr     = new IntPtr(dst_handle.ToInt64() + dst_offset);
                IntPtr[] waits       = EventHandle.ToIntPtrArray(wait_list);
                uint     num_waits   = waits == null ? 0 : (uint)waits.Length;
                CL_Bool  is_blocking = (blocking ? CL_Bool.True : CL_Bool.False);
                if (outputEventHandle)
                {
                    IntPtr event_handle;
                    OpenCLException.Check(Native.clEnqueueReadBuffer(_handle, buf.Handle, is_blocking, new IntPtr(buf_offset), new IntPtr(size),
                                                                     dst_ptr, num_waits, waits, out event_handle));
                    eventHandle = new EventHandle(event_handle);
                }
                else
                {
                    OpenCLException.Check(Native.clEnqueueReadBuffer(_handle, buf.Handle, is_blocking, new IntPtr(buf_offset), new IntPtr(size),
                                                                     dst_ptr, num_waits, waits, IntPtr.Zero));
                    eventHandle = null;
                }
            } finally {
                if (dst_gc_handle.IsAllocated)
                {
                    dst_gc_handle.Free();
                }
            }
        }
Exemple #4
0
		public extern static IntPtr clEnqueueMapBuffer (
			IntPtr command_queue,
			IntPtr buffer,
			CL_Bool blocking_map,
			MapFlags map_flags,
			IntPtr offset,
			IntPtr cb,
			uint num_events_in_wait_list,
			IntPtr[] event_wait_list,
			IntPtr event_wait,
			out int errcode_ret);
Exemple #5
0
		public extern static int clEnqueueWriteBuffer (
			IntPtr command_queue,
			IntPtr buffer,
			CL_Bool blocking_write,
			IntPtr offset,
			IntPtr cb,
			IntPtr ptr,
			uint num_events_in_wait_list,
			IntPtr[] event_wait_list,
			IntPtr event_wait);