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:

committed by
Marge Bot

parent
9ac053e0a2
commit
ce94d3e48d
@@ -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;
|
||||
|
Reference in New Issue
Block a user