| 288 | |
| 289 | public: |
| 290 | mapped_ptr<T> getMappedPtr(cl_map_flags map_flags = CL_MAP_READ | |
| 291 | CL_MAP_WRITE) const { |
| 292 | if (!isReady()) eval(); |
| 293 | auto func = [data = data](void *ptr) { |
| 294 | if (ptr != nullptr) { |
| 295 | cl_int err = getQueue().enqueueUnmapMemObject(*data, ptr); |
| 296 | UNUSED(err); |
| 297 | ptr = nullptr; |
| 298 | } |
| 299 | }; |
| 300 | |
| 301 | T *ptr = (T *)getQueue().enqueueMapBuffer( |
| 302 | *static_cast<const cl::Buffer *>(get()), CL_TRUE, map_flags, |
| 303 | getOffset() * sizeof(T), elements() * sizeof(T), nullptr, nullptr, |
| 304 | nullptr); |
| 305 | |
| 306 | return mapped_ptr<T>(ptr, func); |
| 307 | } |
| 308 | |
| 309 | friend void evalMultiple<T>(std::vector<Array<T> *> arrays); |
| 310 |
no test coverage detected