validate_object(q, mem, obj_origin, obj_pitch, region);
validate_map_flags(mem, flags);
- void *map = mem.resource_in(q).add_map(q, flags, blocking, obj_origin, region);
+ auto *map = mem.resource_in(q).add_map(q, flags, blocking, obj_origin, region);
auto hev = create<hard_event>(q, CL_COMMAND_MAP_BUFFER, deps);
if (blocking)
ret_object(rd_ev, hev);
ret_error(r_errcode, CL_SUCCESS);
- return map;
+ return *map;
} catch (error &e) {
ret_error(r_errcode, e);
if (img.slice_pitch() && !slice_pitch)
throw error(CL_INVALID_VALUE);
- void *map = img.resource_in(q).add_map(q, flags, blocking, origin, region);
+ auto *map = img.resource_in(q).add_map(q, flags, blocking, origin, region);
+ *row_pitch = map->pitch()[1];
+ if (slice_pitch)
+ *slice_pitch = map->pitch()[2];
auto hev = create<hard_event>(q, CL_COMMAND_MAP_IMAGE, deps);
if (blocking)
ret_object(rd_ev, hev);
ret_error(r_errcode, CL_SUCCESS);
- return map;
+ return *map;
} catch (error &e) {
ret_error(r_errcode, e);
}
}
-void *
+mapping *
resource::add_map(command_queue &q, cl_map_flags flags, bool blocking,
const vector &origin, const vector ®ion) {
maps.emplace_back(q, *this, flags, blocking, origin, region);
- return maps.back();
+ return &maps.back();
}
void
void clear(command_queue &q, const vector &origin, const vector ®ion,
const std::string &data);
- void *add_map(command_queue &q, cl_map_flags flags, bool blocking,
- const vector &origin, const vector ®ion);
+ mapping *add_map(command_queue &q, cl_map_flags flags, bool blocking,
+ const vector &origin, const vector ®ion);
void del_map(void *p);
unsigned map_count() const;