From df1d08533c4007bf767387e2c03f2075becbe33d Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Tue, 6 Jul 2021 07:53:31 +0200 Subject: [PATCH] v3dv: fix copy buffer to image TFU path for 3D images MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This bug was exposed by the following CTS tests (requires geometry shaders): dEQP-VK.geometry.layered.3d.*.readback Reviewed-by: Alejandro PiƱeiro Part-of: --- src/broadcom/vulkan/v3dv_meta_copy.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/broadcom/vulkan/v3dv_meta_copy.c b/src/broadcom/vulkan/v3dv_meta_copy.c index d5d56dc5af4..7299582c693 100644 --- a/src/broadcom/vulkan/v3dv_meta_copy.c +++ b/src/broadcom/vulkan/v3dv_meta_copy.c @@ -1485,7 +1485,11 @@ copy_buffer_to_image_tfu(struct v3dv_cmd_buffer *cmd_buffer, /* Emit a TFU job per layer to copy */ const uint32_t buffer_stride = width * image->cpp; for (int i = 0; i < num_layers; i++) { - uint32_t layer = region->imageSubresource.baseArrayLayer + i; + uint32_t layer; + if (image->type != VK_IMAGE_TYPE_3D) + layer = region->imageSubresource.baseArrayLayer + i; + else + layer = region->imageOffset.z + i; struct drm_v3d_submit_tfu tfu = { .ios = (height << 16) | width,