From e1c87bbb4bcaa9b5946bc88f9f5d7868372d8400 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Fri, 8 Nov 2019 12:53:43 +0100 Subject: zink: implement buffer-to-buffer copies --- src/gallium/drivers/zink/zink_context.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/gallium/drivers/zink/zink_context.c') diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index 30d19c6ffa2..2be6ce351be 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -1510,6 +1510,18 @@ zink_resource_copy_region(struct pipe_context *pctx, vkCmdCopyImage(batch->cmdbuf, src->image, src->layout, dst->image, dst->layout, 1, ®ion); + } else if (dst->base.target == PIPE_BUFFER && + src->base.target == PIPE_BUFFER) { + VkBufferCopy region; + region.srcOffset = src_box->x; + region.dstOffset = dstx; + region.size = src_box->width; + + struct zink_batch *batch = zink_batch_no_rp(ctx); + zink_batch_reference_resoure(batch, src); + zink_batch_reference_resoure(batch, dst); + + vkCmdCopyBuffer(batch->cmdbuf, src->buffer, dst->buffer, 1, ®ion); } else debug_printf("zink: TODO resource copy\n"); } -- cgit v1.2.3