From ec2cce6d60989e3a1aa0d5de1488f613b1271039 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 31 Aug 2021 14:54:07 -0400 Subject: [PATCH] zink: remove batch params from resource copy functions Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_context.c | 22 ++++++++-------------- src/gallium/drivers/zink/zink_context.h | 4 ++-- src/gallium/drivers/zink/zink_query.c | 6 +++--- src/gallium/drivers/zink/zink_resource.c | 6 +++--- 4 files changed, 16 insertions(+), 22 deletions(-) diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index 30e819a5133..51f3107a08e 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -2847,7 +2847,7 @@ zink_flush_resource(struct pipe_context *pctx, } void -zink_copy_buffer(struct zink_context *ctx, struct zink_batch *batch, struct zink_resource *dst, struct zink_resource *src, +zink_copy_buffer(struct zink_context *ctx, struct zink_resource *dst, struct zink_resource *src, unsigned dst_offset, unsigned src_offset, unsigned size) { VkBufferCopy region; @@ -2855,11 +2855,8 @@ zink_copy_buffer(struct zink_context *ctx, struct zink_batch *batch, struct zink region.dstOffset = dst_offset; region.size = size; - if (!batch) { - batch = &ctx->batch; - zink_batch_no_rp(ctx); - } - assert(!batch->in_rp); + struct zink_batch *batch = &ctx->batch; + zink_batch_no_rp(ctx); zink_batch_reference_resource_rw(batch, src, false); zink_batch_reference_resource_rw(batch, dst, true); util_range_add(&dst->base.b, &dst->valid_buffer_range, dst_offset, dst_offset + size); @@ -2869,17 +2866,14 @@ zink_copy_buffer(struct zink_context *ctx, struct zink_batch *batch, struct zink } void -zink_copy_image_buffer(struct zink_context *ctx, struct zink_batch *batch, struct zink_resource *dst, struct zink_resource *src, +zink_copy_image_buffer(struct zink_context *ctx, struct zink_resource *dst, struct zink_resource *src, unsigned dst_level, unsigned dstx, unsigned dsty, unsigned dstz, unsigned src_level, const struct pipe_box *src_box, enum pipe_map_flags map_flags) { struct zink_resource *img = dst->base.b.target == PIPE_BUFFER ? src : dst; struct zink_resource *buf = dst->base.b.target == PIPE_BUFFER ? dst : src; - - if (!batch) { - batch = &ctx->batch; - zink_batch_no_rp(ctx); - } + struct zink_batch *batch = &ctx->batch; + zink_batch_no_rp(ctx); bool buf2img = buf == src; @@ -3063,9 +3057,9 @@ zink_resource_copy_region(struct pipe_context *pctx, 1, ®ion); } else if (dst->base.b.target == PIPE_BUFFER && src->base.b.target == PIPE_BUFFER) { - zink_copy_buffer(ctx, NULL, dst, src, dstx, src_box->x, src_box->width); + zink_copy_buffer(ctx, dst, src, dstx, src_box->x, src_box->width); } else - zink_copy_image_buffer(ctx, NULL, dst, src, dst_level, dstx, dsty, dstz, src_level, src_box, 0); + zink_copy_image_buffer(ctx, dst, src, dst_level, dstx, dsty, dstz, src_level, src_box, 0); } static struct pipe_stream_output_target * diff --git a/src/gallium/drivers/zink/zink_context.h b/src/gallium/drivers/zink/zink_context.h index 94c9c10cbe1..997414f0d0b 100644 --- a/src/gallium/drivers/zink/zink_context.h +++ b/src/gallium/drivers/zink/zink_context.h @@ -500,11 +500,11 @@ void zink_rebind_framebuffer(struct zink_context *ctx, struct zink_resource *res); void -zink_copy_buffer(struct zink_context *ctx, struct zink_batch *batch, struct zink_resource *dst, struct zink_resource *src, +zink_copy_buffer(struct zink_context *ctx, struct zink_resource *dst, struct zink_resource *src, unsigned dst_offset, unsigned src_offset, unsigned size); void -zink_copy_image_buffer(struct zink_context *ctx, struct zink_batch *batch, struct zink_resource *dst, struct zink_resource *src, +zink_copy_image_buffer(struct zink_context *ctx, struct zink_resource *dst, struct zink_resource *src, unsigned dst_level, unsigned dstx, unsigned dsty, unsigned dstz, unsigned src_level, const struct pipe_box *src_box, enum pipe_map_flags map_flags); diff --git a/src/gallium/drivers/zink/zink_query.c b/src/gallium/drivers/zink/zink_query.c index 581425482fb..f5efa6a0ef7 100644 --- a/src/gallium/drivers/zink/zink_query.c +++ b/src/gallium/drivers/zink/zink_query.c @@ -194,7 +194,7 @@ qbo_sync_from_prev(struct zink_context *ctx, struct zink_query *query, unsigned unsigned qbo_offset = last_start * get_num_results(query->type) * sizeof(uint64_t); query->curr_query = id_offset; query->curr_qbo->num_results = id_offset; - zink_copy_buffer(ctx, NULL, zink_resource(query->curr_qbo->buffer), zink_resource(prev->buffer), 0, + zink_copy_buffer(ctx, zink_resource(query->curr_qbo->buffer), zink_resource(prev->buffer), 0, qbo_offset, id_offset * result_size); } @@ -1006,7 +1006,7 @@ zink_get_query_result_resource(struct pipe_context *pctx, } struct pipe_resource *staging = pipe_buffer_create(pctx->screen, 0, PIPE_USAGE_STAGING, result_size * 2); copy_results_to_buffer(ctx, query, zink_resource(staging), 0, 1, size_flags | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT | flag); - zink_copy_buffer(ctx, &ctx->batch, res, zink_resource(staging), offset, result_size, result_size); + zink_copy_buffer(ctx, res, zink_resource(staging), offset, result_size, result_size); pipe_resource_reference(&staging, NULL); return; } @@ -1019,7 +1019,7 @@ zink_get_query_result_resource(struct pipe_context *pctx, if (query->needs_update) update_qbo(ctx, query); /* internal qbo always writes 64bit value so we can just direct copy */ - zink_copy_buffer(ctx, NULL, res, zink_resource(query->curr_qbo->buffer), offset, + zink_copy_buffer(ctx, res, zink_resource(query->curr_qbo->buffer), offset, get_buffer_offset(query, query->curr_qbo->buffer, query->last_start), result_size); } else diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index e5b178ce756..7d6b4a8df8b 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -999,7 +999,7 @@ zink_transfer_copy_bufimage(struct zink_context *ctx, box.x = trans->offset; if (dst->obj->transfer_dst) - zink_copy_image_buffer(ctx, NULL, dst, src, trans->base.b.level, buf2img ? x : 0, + zink_copy_image_buffer(ctx, dst, src, trans->base.b.level, buf2img ? x : 0, box.y, box.z, trans->base.b.level, &box, trans->base.b.usage); else util_blitter_copy_texture(ctx->blitter, &dst->base.b, trans->base.b.level, @@ -1192,7 +1192,7 @@ zink_buffer_map(struct pipe_context *pctx, if (!trans->staging_res) goto fail; struct zink_resource *staging_res = zink_resource(trans->staging_res); - zink_copy_buffer(ctx, NULL, staging_res, res, trans->offset, box->x, box->width); + zink_copy_buffer(ctx, staging_res, res, trans->offset, box->x, box->width); res = staging_res; usage &= ~PIPE_MAP_UNSYNCHRONIZED; ptr = map_resource(screen, res); @@ -1403,7 +1403,7 @@ zink_transfer_flush_region(struct pipe_context *pctx, struct zink_resource *staging_res = zink_resource(trans->staging_res); if (ptrans->resource->target == PIPE_BUFFER) - zink_copy_buffer(ctx, NULL, res, staging_res, box->x, offset, box->width); + zink_copy_buffer(ctx, res, staging_res, box->x, offset, box->width); else zink_transfer_copy_bufimage(ctx, res, staging_res, trans); }