Module: Mesa Branch: master Commit: f2bdb69218829551f7c1f47a77ace122c9da619b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f2bdb69218829551f7c1f47a77ace122c9da619b
Author: Karol Herbst <[email protected]> Date: Thu Oct 15 01:19:57 2020 +0200 clover: support custom driver strides This is required by llvmpipe as it sets explicit strides on buffers and textures. Reviewed-by: Dave Airlie <[email protected]> Reviewed-by: Francisco Jerez <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7069> --- src/gallium/frontends/clover/api/transfer.cpp | 11 +++++++---- src/gallium/frontends/clover/core/resource.cpp | 4 ++-- src/gallium/frontends/clover/core/resource.hpp | 4 ++-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/gallium/frontends/clover/api/transfer.cpp b/src/gallium/frontends/clover/api/transfer.cpp index 1d9663a9d53..bb9133c8285 100644 --- a/src/gallium/frontends/clover/api/transfer.cpp +++ b/src/gallium/frontends/clover/api/transfer.cpp @@ -806,7 +806,7 @@ clEnqueueMapBuffer(cl_command_queue d_q, cl_mem d_mem, cl_bool blocking, 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) @@ -814,7 +814,7 @@ clEnqueueMapBuffer(cl_command_queue d_q, cl_mem d_mem, cl_bool blocking, ret_object(rd_ev, hev); ret_error(r_errcode, CL_SUCCESS); - return map; + return *map; } catch (error &e) { ret_error(r_errcode, e); @@ -844,7 +844,10 @@ clEnqueueMapImage(cl_command_queue d_q, cl_mem d_mem, cl_bool blocking, 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) @@ -852,7 +855,7 @@ clEnqueueMapImage(cl_command_queue d_q, cl_mem d_mem, cl_bool blocking, ret_object(rd_ev, hev); ret_error(r_errcode, CL_SUCCESS); - return map; + return *map; } catch (error &e) { ret_error(r_errcode, e); diff --git a/src/gallium/frontends/clover/core/resource.cpp b/src/gallium/frontends/clover/core/resource.cpp index 4315204fb35..e0f151c2df3 100644 --- a/src/gallium/frontends/clover/core/resource.cpp +++ b/src/gallium/frontends/clover/core/resource.cpp @@ -79,11 +79,11 @@ resource::clear(command_queue &q, const vector &origin, const vector ®ion, } } -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 diff --git a/src/gallium/frontends/clover/core/resource.hpp b/src/gallium/frontends/clover/core/resource.hpp index 562f410c590..facf31e13bd 100644 --- a/src/gallium/frontends/clover/core/resource.hpp +++ b/src/gallium/frontends/clover/core/resource.hpp @@ -53,8 +53,8 @@ namespace clover { 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; _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
