Mesa (master): radv: fixup DCC after color resolves using the compute path

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jan 12 16:12:52 UTC 2021


Module: Mesa
Branch: master
Commit: 3e781056b9ca22e478cfd25a044570d20925cac0
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3e781056b9ca22e478cfd25a044570d20925cac0

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Tue Jan  5 09:26:36 2021 +0100

radv: fixup DCC after color resolves using the compute path

If the dest image has DCC it should be re-initialized to the
uncompressed state.

Note that the driver always selects the graphics path if the dest
image has DCC, so this has no effect for now.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8326>

---

 src/amd/vulkan/radv_meta_resolve_cs.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/src/amd/vulkan/radv_meta_resolve_cs.c b/src/amd/vulkan/radv_meta_resolve_cs.c
index fa2d48a12af..d4278e94e24 100644
--- a/src/amd/vulkan/radv_meta_resolve_cs.c
+++ b/src/amd/vulkan/radv_meta_resolve_cs.c
@@ -860,6 +860,23 @@ void radv_meta_resolve_compute_image(struct radv_cmd_buffer *cmd_buffer,
 	}
 
 	radv_meta_restore(&saved_state, cmd_buffer);
+
+	if (radv_layout_dcc_compressed(cmd_buffer->device, dest_image,
+				       dest_image_layout, false, queue_mask)) {
+
+		cmd_buffer->state.flush_bits |= RADV_CMD_FLAG_CS_PARTIAL_FLUSH |
+			                        RADV_CMD_FLAG_INV_VCACHE;
+
+		VkImageSubresourceRange range = {
+			.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
+			.baseMipLevel = region->dstSubresource.mipLevel,
+			.levelCount = 1,
+			.baseArrayLayer = dest_base_layer,
+			.layerCount = region->dstSubresource.layerCount,
+		};
+
+		radv_initialize_dcc(cmd_buffer, dest_image, &range, 0xffffffff);
+	}
 }
 
 /**



More information about the mesa-commit mailing list