Mesa (master): radv: do not predicate FMASK decompression when DCC+MSAA is used
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Jan 11 09:42:16 UTC 2021
Module: Mesa
Branch: master
Commit: 6e7008e94baf242a8e0db3b4209a4d2acbf9376d
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6e7008e94baf242a8e0db3b4209a4d2acbf9376d
Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date: Tue Jan 5 14:28:53 2021 +0100
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 <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8331>
---
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 b71ea2f855f..9aa81739bb4 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;
More information about the mesa-commit
mailing list