From 164a51c80f52795da26ce180758232269f098587 Mon Sep 17 00:00:00 2001 From: Lukas Feller Date: Mon, 8 Mar 2021 07:54:40 +0100 Subject: [PATCH] v3dv: fix stride in buffer copy Reviewed-by: Iago Toral Quiroga Part-of: --- src/broadcom/vulkan/v3dv_meta_copy.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/broadcom/vulkan/v3dv_meta_copy.c b/src/broadcom/vulkan/v3dv_meta_copy.c index de71f2da189..f934c5891d3 100644 --- a/src/broadcom/vulkan/v3dv_meta_copy.c +++ b/src/broadcom/vulkan/v3dv_meta_copy.c @@ -2212,9 +2212,10 @@ emit_copy_buffer(struct v3dv_job *job, uint32_t dst_offset, uint32_t src_offset, struct framebuffer_data *framebuffer, - uint32_t format) + uint32_t format, + uint32_t item_size) { - const uint32_t stride = job->frame_tiling.width * 4; + const uint32_t stride = job->frame_tiling.width * item_size; emit_copy_buffer_per_tile_list(job, dst, src, dst_offset, src_offset, stride, format); @@ -2228,13 +2229,17 @@ emit_copy_buffer_rcl(struct v3dv_job *job, uint32_t dst_offset, uint32_t src_offset, struct framebuffer_data *framebuffer, - uint32_t format) + uint32_t format, + uint32_t item_size) { struct v3dv_cl *rcl = emit_rcl_prologue(job, framebuffer, NULL); v3dv_return_if_oom(NULL, job); emit_frame_setup(job, 0, NULL); - emit_copy_buffer(job, dst, src, dst_offset, src_offset, framebuffer, format); + + emit_copy_buffer(job, dst, src, dst_offset, src_offset, + framebuffer, format, item_size); + cl_emit(rcl, END_OF_RENDERING, end); } @@ -2337,7 +2342,7 @@ copy_buffer(struct v3dv_cmd_buffer *cmd_buffer, v3dv_job_emit_binning_flush(job); emit_copy_buffer_rcl(job, dst, src, dst_offset, src_offset, - &framebuffer, format); + &framebuffer, format, item_size); v3dv_cmd_buffer_finish_job(cmd_buffer);