iris: Fix MOCS for buffer copies
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 20 Oct 2021 06:13:47 +0000 (23:13 -0700)
committerMarge Bot <emma+marge@anholt.net>
Thu, 28 Oct 2021 19:45:55 +0000 (19:45 +0000)
We were passing a MOCS of 0, which is uncached.  Yikes.

Fixes: c5b22441f1c ("iris: Fix buffer -> buffer copy_region")

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13480>

src/gallium/drivers/iris/iris_blit.c

index 6f789ad..a755f94 100644 (file)
@@ -642,10 +642,14 @@ iris_copy_region(struct blorp_context *blorp,
    if (dst->target == PIPE_BUFFER && src->target == PIPE_BUFFER) {
       struct blorp_address src_addr = {
          .buffer = iris_resource_bo(src), .offset = src_box->x,
+         .mocs = iris_mocs(src_res->bo, &screen->isl_dev,
+                           ISL_SURF_USAGE_RENDER_TARGET_BIT),
       };
       struct blorp_address dst_addr = {
          .buffer = iris_resource_bo(dst), .offset = dstx,
          .reloc_flags = EXEC_OBJECT_WRITE,
+         .mocs = iris_mocs(dst_res->bo, &screen->isl_dev,
+                           ISL_SURF_USAGE_TEXTURE_BIT),
       };
 
       iris_emit_buffer_barrier_for(batch, iris_resource_bo(src),