From 6e7008e94baf242a8e0db3b4209a4d2acbf9376d Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Tue, 5 Jan 2021 14:28:53 +0100 Subject: [PATCH] radv: do not predicate FMASK decompression when DCC+MSAA is used Even if the FCE predicate is FALSE, we might still need to decompress FMASK if compressed rendering was used. FMASK decompressions should never been predicated. This fixes a ton of CTS failures and a rendering issue with Control when DCC+MSAA is force-enabled. Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen Part-of: --- src/amd/vulkan/radv_meta_fast_clear.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/amd/vulkan/radv_meta_fast_clear.c b/src/amd/vulkan/radv_meta_fast_clear.c index b71ea2f..9aa8173 100644 --- a/src/amd/vulkan/radv_meta_fast_clear.c +++ b/src/amd/vulkan/radv_meta_fast_clear.c @@ -744,7 +744,8 @@ radv_emit_color_decompress(struct radv_cmd_buffer *cmd_buffer, assert(cmd_buffer->queue_family_index == RADV_QUEUE_GENERAL); - if (radv_dcc_enabled(image, subresourceRange->baseMipLevel)) { + if ((decompress_dcc && radv_dcc_enabled(image, subresourceRange->baseMipLevel)) || + (!(radv_image_has_fmask(image) && !image->tc_compatible_cmask))) { uint64_t pred_offset = decompress_dcc ? image->dcc_pred_offset : image->fce_pred_offset; pred_offset += 8 * subresourceRange->baseMipLevel; @@ -758,7 +759,8 @@ radv_emit_color_decompress(struct radv_cmd_buffer *cmd_buffer, radv_process_color_image(cmd_buffer, image, subresourceRange, decompress_dcc); - if (radv_dcc_enabled(image, subresourceRange->baseMipLevel)) { + if ((decompress_dcc && radv_dcc_enabled(image, subresourceRange->baseMipLevel)) || + (!(radv_image_has_fmask(image) && !image->tc_compatible_cmask))) { uint64_t pred_offset = decompress_dcc ? image->dcc_pred_offset : image->fce_pred_offset; pred_offset += 8 * subresourceRange->baseMipLevel; -- 2.7.4