The driver may set the pitch of a 2d or 3d mapping. --- src/gallium/state_trackers/clover/api/transfer.cpp | 13 ++++++++----- src/gallium/state_trackers/clover/core/resource.hpp | 8 ++++++++ 2 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/src/gallium/state_trackers/clover/api/transfer.cpp b/src/gallium/state_trackers/clover/api/transfer.cpp index f21819f..8bd4aa0 100644 --- a/src/gallium/state_trackers/clover/api/transfer.cpp +++ b/src/gallium/state_trackers/clover/api/transfer.cpp @@ -218,8 +218,11 @@ namespace { static mapping get(command_queue &q, image *obj, cl_map_flags flags, const vector_t& origin, const vector_t& region, - const vector_t& pitch) { - return { q, obj->resource(q), flags, true, origin, region }; + vector_t& pitch) { + mapping res{ q, obj->resource(q), flags, true, origin, region }; + pitch[1] = res.get_row_pitch(); + pitch[2] = res.get_slice_pitch(); + return res; } }; @@ -250,10 +253,10 @@ namespace { template<typename T, typename S> std::function<void (event &)> soft_copy_op(command_queue &q, - T dst_obj, const vector_t &dst_orig, const vector_t &dst_pitch, - S src_obj, const vector_t &src_orig, const vector_t &src_pitch, + T dst_obj, const vector_t &dst_orig, vector_t dst_pitch, + S src_obj, const vector_t &src_orig, vector_t src_pitch, const vector_t ®ion) { - return [=, &q](event &) { + return [=, &q](event &) mutable { auto dst = _map<T>::get(q, dst_obj, CL_MAP_WRITE, dst_orig, region, dst_pitch); auto src = _map<S>::get(q, src_obj, CL_MAP_READ, diff --git a/src/gallium/state_trackers/clover/core/resource.hpp b/src/gallium/state_trackers/clover/core/resource.hpp index 9993dcb..90f74fd 100644 --- a/src/gallium/state_trackers/clover/core/resource.hpp +++ b/src/gallium/state_trackers/clover/core/resource.hpp @@ -122,6 +122,14 @@ namespace clover { return (T *)p; } + unsigned get_row_pitch() const { + return pxfer->stride; + } + + unsigned get_slice_pitch() const { + return pxfer->layer_stride; + } + private: pipe_context *pctx; pipe_transfer *pxfer; -- 2.4.6 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev