lima: track write submits of context (v3)
[mesa.git] / src / gallium / drivers / lima / lima_resource.c
index 2785341785238adba21a4ac2ff075370e2a74990..6c207f19d9186f58de1c33e61cd034231fa50974 100644 (file)
@@ -594,8 +594,7 @@ lima_transfer_map(struct pipe_context *pctx,
     * range, so no need to sync */
    if (pres->usage != PIPE_USAGE_STREAM) {
       if (usage & PIPE_TRANSFER_READ_WRITE) {
-         if (lima_need_flush(ctx, bo, usage & PIPE_TRANSFER_WRITE))
-            lima_flush(ctx);
+         lima_flush_submit_accessing_bo(ctx, bo, usage & PIPE_TRANSFER_WRITE);
 
          unsigned op = usage & PIPE_TRANSFER_WRITE ?
             LIMA_GEM_WAIT_WRITE : LIMA_GEM_WAIT_READ;
@@ -632,10 +631,11 @@ lima_transfer_map(struct pipe_context *pctx,
             panfrost_load_tiled_image(
                trans->staging + i * ptrans->stride * ptrans->box.height,
                bo->map + res->levels[level].offset + (i + box->z) * res->levels[level].layer_stride,
-               &ptrans->box,
+               ptrans->box.x, ptrans->box.y,
+               ptrans->box.width, ptrans->box.height,
                ptrans->stride,
                res->levels[level].stride,
-               util_format_get_blocksize(pres->format));
+               pres->format);
       }
 
       return trans->staging;
@@ -677,10 +677,11 @@ lima_transfer_unmap(struct pipe_context *pctx,
             panfrost_store_tiled_image(
                bo->map + res->levels[ptrans->level].offset + (i + ptrans->box.z) * res->levels[ptrans->level].layer_stride,
                trans->staging + i * ptrans->stride * ptrans->box.height,
-               &ptrans->box,
+               ptrans->box.x, ptrans->box.y,
+               ptrans->box.width, ptrans->box.height,
                res->levels[ptrans->level].stride,
                ptrans->stride,
-               util_format_get_blocksize(pres->format));
+               pres->format);
       }
       free(trans->staging);
    }