| 23 | |
| 24 | template<typename T> |
| 25 | void copyData(T *data, const Array<T> &src) { |
| 26 | if (src.elements() > 0) { |
| 27 | Array<T> out = src.isReady() && src.isLinear() ? src : copyArray(src); |
| 28 | // out is now guaranteed linear |
| 29 | getQueue().enqueueReadBuffer(*out.get(), CL_TRUE, |
| 30 | sizeof(T) * out.getOffset(), |
| 31 | sizeof(T) * out.elements(), data); |
| 32 | } |
| 33 | } |
| 34 | |
| 35 | template<typename T> |
| 36 | Array<T> copyArray(const Array<T> &src) { |