From 3e781056b9ca22e478cfd25a044570d20925cac0 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Tue, 5 Jan 2021 09:26:36 +0100 Subject: [PATCH] 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 Reviewed-by: Bas Nieuwenhuizen Part-of: --- 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); + } } /**