From ce94d3e48d4b4bf9a7d3d15fbf4a400fd0749522 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Thu, 15 Dec 2022 08:04:08 +0100 Subject: [PATCH] v3dv: honor render area in subpass resolve fallback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When falling back to handling subpass resolves via separate image resolves we were resolving the entire attachment instead of limiting the resolve to the render area defined for the render pass. Reviewed-by: Alejandro PiƱeiro Part-of: --- src/broadcom/vulkan/v3dv_cmd_buffer.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/broadcom/vulkan/v3dv_cmd_buffer.c b/src/broadcom/vulkan/v3dv_cmd_buffer.c index b83db104725..54dff45626a 100644 --- a/src/broadcom/vulkan/v3dv_cmd_buffer.c +++ b/src/broadcom/vulkan/v3dv_cmd_buffer.c @@ -876,6 +876,8 @@ cmd_buffer_emit_resolve(struct v3dv_cmd_buffer *cmd_buffer, struct v3dv_image_view *dst_iview = cmd_buffer->state.attachments[dst_attachment_idx].image_view; + const VkRect2D *ra = &cmd_buffer->state.render_area; + VkImageResolve2 region = { .sType = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2, .srcSubresource = { @@ -884,15 +886,15 @@ cmd_buffer_emit_resolve(struct v3dv_cmd_buffer *cmd_buffer, src_iview->vk.base_array_layer, src_iview->vk.layer_count, }, - .srcOffset = { 0, 0, 0 }, + .srcOffset = { ra->offset.x, ra->offset.y, 0 }, .dstSubresource = { aspect, dst_iview->vk.base_mip_level, dst_iview->vk.base_array_layer, dst_iview->vk.layer_count, }, - .dstOffset = { 0, 0, 0 }, - .extent = src_iview->vk.image->extent, + .dstOffset = { ra->offset.x, ra->offset.y, 0 }, + .extent = { ra->extent.width, ra->extent.height, 1 }, }; struct v3dv_image *src_image = (struct v3dv_image *) src_iview->vk.image;