error* enqueue_copy_buffer_rect(clobj_t *evt, clobj_t _queue, clobj_t _src, clobj_t _dst, const size_t *_src_orig, size_t src_orig_l, const size_t *_dst_orig, size_t dst_orig_l, const size_t *_reg, size_t reg_l, const size_t *_src_pitches, size_t src_pitches_l, const size_t *_dst_pitches, size_t dst_pitches_l, const clobj_t *_wait_for, uint32_t num_wait_for) { #if PYOPENCL_CL_VERSION >= 0x1010 const auto wait_for = buf_from_class<event>(_wait_for, num_wait_for); auto queue = static_cast<command_queue*>(_queue); auto src = static_cast<memory_object*>(_src); auto dst = static_cast<memory_object*>(_dst); ConstBuffer<size_t, 3> src_orig(_src_orig, src_orig_l); ConstBuffer<size_t, 3> dst_orig(_dst_orig, dst_orig_l); ConstBuffer<size_t, 3> reg(_reg, reg_l, 1); ConstBuffer<size_t, 2> src_pitches(_src_pitches, src_pitches_l); ConstBuffer<size_t, 2> dst_pitches(_dst_pitches, dst_pitches_l); return c_handle_retry_mem_error([&] { pyopencl_call_guarded( clEnqueueCopyBufferRect, queue, src, dst, src_orig, dst_orig, reg, src_pitches[0], src_pitches[1], dst_pitches[0], dst_pitches[1], wait_for, event_out(evt)); }); #else PYOPENCL_UNSUPPORTED(clEnqueueCopyBufferRect, "CL 1.0") #endif }
error* enqueue_copy_image(clobj_t *evt, clobj_t _queue, clobj_t _src, clobj_t _dst, const size_t *_src_orig, size_t src_orig_l, const size_t *_dst_orig, size_t dst_orig_l, const size_t *_reg, size_t reg_l, const clobj_t *_wait_for, uint32_t num_wait_for) { const auto wait_for = buf_from_class<event>(_wait_for, num_wait_for); auto queue = static_cast<command_queue*>(_queue); auto src = static_cast<image*>(_src); auto dst = static_cast<image*>(_dst); ConstBuffer<size_t, 3> src_orig(_src_orig, src_orig_l); ConstBuffer<size_t, 3> dst_orig(_dst_orig, dst_orig_l); ConstBuffer<size_t, 3> reg(_reg, reg_l, 1); return c_handle_retry_mem_error([&] { pyopencl_call_guarded(clEnqueueCopyImage, queue, src, dst, src_orig, dst_orig, reg, wait_for, event_out(evt)); }); }