v3dv: honor render area in subpass resolve fallback

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 <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20331>
This commit is contained in:
Iago Toral Quiroga
2022-12-15 08:04:08 +01:00
committed by Marge Bot
parent 9ac053e0a2
commit ce94d3e48d

View File

@@ -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;