From 54374f36dfe46caebda094c53d19b20fbdd8f824 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Thu, 16 Jan 2020 17:09:36 +0100 Subject: [PATCH] v3dv: fix copy image to buffer If either of bufferRowLength or bufferImageHeight are zero, then that aspect alone of the image is tighly packed. We were assuming that if either was zero both aspects were tightly packed, which is wrong. Part-of: --- src/broadcom/vulkan/v3dv_meta_copy.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/broadcom/vulkan/v3dv_meta_copy.c b/src/broadcom/vulkan/v3dv_meta_copy.c index c3adab8a020..390bf2c7818 100644 --- a/src/broadcom/vulkan/v3dv_meta_copy.c +++ b/src/broadcom/vulkan/v3dv_meta_copy.c @@ -116,13 +116,15 @@ emit_copy_layer_to_buffer_per_tile_list(struct v3dv_job *job, /* Store TLB to buffer */ uint32_t width, height; - if (region->bufferRowLength == 0 || region->bufferImageHeight == 0) { + if (region->bufferRowLength == 0) width = image->extent.width; - height = image->extent.height; - } else { + else width = region->bufferRowLength; + + if (region->bufferImageHeight == 0) + height = image->extent.height; + else height = region->bufferImageHeight; - } uint32_t buffer_stride = width * image->cpp; uint32_t buffer_offset =