Enqueues a command to read data from \p buffer to host memory. \see_opencl_ref{clEnqueueReadBuffer} \see copy()
| 295 | /// |
| 296 | /// \see copy() |
| 297 | event enqueue_read_buffer(const buffer &buffer, |
| 298 | size_t offset, |
| 299 | size_t size, |
| 300 | void *host_ptr, |
| 301 | const wait_list &events = wait_list()) |
| 302 | { |
| 303 | BOOST_ASSERT(m_queue != 0); |
| 304 | BOOST_ASSERT(size <= buffer.size()); |
| 305 | BOOST_ASSERT(buffer.get_context() == this->get_context()); |
| 306 | BOOST_ASSERT(host_ptr != 0); |
| 307 | |
| 308 | event event_; |
| 309 | |
| 310 | cl_int ret = clEnqueueReadBuffer( |
| 311 | m_queue, |
| 312 | buffer.get(), |
| 313 | CL_TRUE, |
| 314 | offset, |
| 315 | size, |
| 316 | host_ptr, |
| 317 | events.size(), |
| 318 | events.get_event_ptr(), |
| 319 | &event_.get() |
| 320 | ); |
| 321 | |
| 322 | if(ret != CL_SUCCESS){ |
| 323 | BOOST_THROW_EXCEPTION(opencl_error(ret)); |
| 324 | } |
| 325 | |
| 326 | return event_; |
| 327 | } |
| 328 | |
| 329 | /// Enqueues a command to read data from \p buffer to host memory. The |
| 330 | /// copy will be performed asynchronously. |