Module: Mesa Branch: master Commit: 093b3f6e1f0b919be247c30bb7cac9c1a25941c3 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=093b3f6e1f0b919be247c30bb7cac9c1a25941c3
Author: Samuel Pitoiset <samuel.pitoi...@gmail.com> Date: Mon Jan 18 15:46:06 2021 +0100 radv: only decompress the depth/stencil aspect that needs to be resolved For depth/stencil images, the driver was decompressing both aspects while it should be enough to only decompress the one that's going to be resolved. Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8561> --- src/amd/vulkan/radv_meta_resolve_cs.c | 20 +++++++++++++------- src/amd/vulkan/radv_meta_resolve_fs.c | 19 +++++++++++++------ 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/amd/vulkan/radv_meta_resolve_cs.c b/src/amd/vulkan/radv_meta_resolve_cs.c index 9a30a94ec6f..ef12f644e28 100644 --- a/src/amd/vulkan/radv_meta_resolve_cs.c +++ b/src/amd/vulkan/radv_meta_resolve_cs.c @@ -968,21 +968,27 @@ radv_depth_stencil_resolve_subpass_cs(struct radv_cmd_buffer *cmd_buffer, radv_dst_access_flush(cmd_buffer, VK_ACCESS_SHADER_READ_BIT, NULL) | radv_dst_access_flush(cmd_buffer, VK_ACCESS_SHADER_WRITE_BIT, NULL); - radv_decompress_resolve_subpass_src(cmd_buffer); + struct radv_subpass_attachment src_att = *subpass->depth_stencil_attachment; + struct radv_image_view *src_iview = + cmd_buffer->state.attachments[src_att.attachment].iview; + struct radv_image *src_image = src_iview->image; + + VkImageResolve2KHR region = {0}; + region.sType = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR; + region.srcSubresource.aspectMask = aspects; + region.srcSubresource.mipLevel = 0; + region.srcSubresource.baseArrayLayer = src_iview->base_layer; + region.srcSubresource.layerCount = layer_count; + + radv_decompress_resolve_src(cmd_buffer, src_image, src_att.layout, ®ion); radv_meta_save(&saved_state, cmd_buffer, RADV_META_SAVE_COMPUTE_PIPELINE | RADV_META_SAVE_DESCRIPTORS); - struct radv_subpass_attachment src_att = *subpass->depth_stencil_attachment; struct radv_subpass_attachment dest_att = *subpass->ds_resolve_attachment; - - struct radv_image_view *src_iview = - cmd_buffer->state.attachments[src_att.attachment].iview; struct radv_image_view *dst_iview = cmd_buffer->state.attachments[dest_att.attachment].iview; - - struct radv_image *src_image = src_iview->image; struct radv_image *dst_image = dst_iview->image; struct radv_image_view tsrc_iview; diff --git a/src/amd/vulkan/radv_meta_resolve_fs.c b/src/amd/vulkan/radv_meta_resolve_fs.c index 6f34e6dde1a..fb9751cd877 100644 --- a/src/amd/vulkan/radv_meta_resolve_fs.c +++ b/src/amd/vulkan/radv_meta_resolve_fs.c @@ -1198,18 +1198,25 @@ radv_depth_stencil_resolve_subpass_fs(struct radv_cmd_buffer *cmd_buffer, barrier.dst_access_mask = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT; radv_subpass_barrier(cmd_buffer, &barrier); - radv_decompress_resolve_subpass_src(cmd_buffer); + struct radv_subpass_attachment src_att = *subpass->depth_stencil_attachment; + struct radv_image_view *src_iview = + cmd_buffer->state.attachments[src_att.attachment].iview; + struct radv_image *src_image = src_iview->image; + + VkImageResolve2KHR region = {0}; + region.sType = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR; + region.srcSubresource.aspectMask = aspects; + region.srcSubresource.mipLevel = 0; + region.srcSubresource.baseArrayLayer = 0; + region.srcSubresource.layerCount = 1; + + radv_decompress_resolve_src(cmd_buffer, src_image, src_att.layout, ®ion); radv_meta_save(&saved_state, cmd_buffer, RADV_META_SAVE_GRAPHICS_PIPELINE | RADV_META_SAVE_DESCRIPTORS); - struct radv_subpass_attachment src_att = *subpass->depth_stencil_attachment; struct radv_subpass_attachment dst_att = *subpass->ds_resolve_attachment; - - struct radv_image_view *src_iview = - cmd_buffer->state.attachments[src_att.attachment].iview; - struct radv_image *src_image = src_iview->image; struct radv_image_view *dst_iview = cmd_buffer->state.attachments[dst_att.attachment].iview; _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit