Mesa (main): iris: Check data alignment for copy_mem_mem

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri May 21 23:42:38 UTC 2021


Module: Mesa
Branch: main
Commit: a04d0a304ab9d7f84bd21643cd93584d1dc23adc
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a04d0a304ab9d7f84bd21643cd93584d1dc23adc

Author: Robert Tarasov <tutankhamen at chromium.org>
Date:   Thu May 20 19:48:16 2021 -0700

iris: Check data alignment for copy_mem_mem

Check both source and destination offsets are aligned to 4. This
patch fixes dEQP-GLES{2|3}.functional.buffer.write.random.* tests
failures on guest side while trying to copy small (<16b) buffers
via glBufferSubData() with offset which isn't aligned to 4.

Fixes: 9b1b9714 ("iris: Use MI_COPY_MEM_MEM for tiny resource_copy_region calls.")
Cc: mesa-stable at lists.freedesktop.org
Reviewed-by: Lionel Landwerlin lionel.g.landwerlin at intel.com
Reviewed-by: Marcin Ślusarz marcin.slusarz at intel.com
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10910>

---

 src/gallium/drivers/iris/iris_blit.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/iris/iris_blit.c b/src/gallium/drivers/iris/iris_blit.c
index 8f92bc3258f..ad7e6e2fa42 100644
--- a/src/gallium/drivers/iris/iris_blit.c
+++ b/src/gallium/drivers/iris/iris_blit.c
@@ -752,7 +752,8 @@ iris_resource_copy_region(struct pipe_context *ctx,
 
    /* Use MI_COPY_MEM_MEM for tiny (<= 16 byte, % 4) buffer copies. */
    if (p_src->target == PIPE_BUFFER && p_dst->target == PIPE_BUFFER &&
-       (src_box->width % 4 == 0) && src_box->width <= 16) {
+       dstx % 4 == 0 && src_box->x % 4 == 0 &&
+       src_box->width % 4 == 0 && src_box->width <= 16) {
       struct iris_bo *dst_bo = iris_resource_bo(p_dst);
       batch = get_preferred_batch(ice, dst_bo);
       iris_batch_maybe_flush(batch, 24 + 5 * (src_box->width / 4));



More information about the mesa-commit mailing list