summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>2018-08-16 18:56:22 +0200
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>2018-08-20 11:54:37 +0200
commit0aacb5eab6120aa1410966d23101e16eea3fbcd7 (patch)
tree056997d5b1cefab60df8819a812979f8118d35d0
parent799b3d16d4bb0caa16dc35de66e11eca8517cd02 (diff)
radv: do not use CP predication for DCC decompressions
This fixes a regression with some Unity demos. Not sure what the root cause of the problem is, especially because the driver doesn't perform any fast color clears. So, it shouldn't be needed to decompress DCC. RadeonSI says that the decompression is relatively cheap if the surface has been decompressed already. One possible improvement is to two use predicates, one for DCC and one for FCE that could be cleared when DCC, FMASK or CMASK are performed by the driver. That might skip some unnecessary decompression passes (not DCC though). Fixes: ff7daadca1 ("radv: enable/disable predication for the DCC decompression pass") CC: 18.2 <mesa-stable@lists.freedesktop.org> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107563 Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
-rw-r--r--src/amd/vulkan/radv_meta_fast_clear.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/amd/vulkan/radv_meta_fast_clear.c b/src/amd/vulkan/radv_meta_fast_clear.c
index f469a9ee8f8..b4cc900028e 100644
--- a/src/amd/vulkan/radv_meta_fast_clear.c
+++ b/src/amd/vulkan/radv_meta_fast_clear.c
@@ -628,7 +628,7 @@ radv_emit_color_decompress(struct radv_cmd_buffer *cmd_buffer,
pipeline = cmd_buffer->device->meta_state.fast_clear_flush.cmask_eliminate_pipeline;
}
- if (radv_image_has_dcc(image)) {
+ if (!decompress_dcc && radv_image_has_dcc(image)) {
old_predicating = cmd_buffer->state.predicating;
radv_emit_set_predication_state_from_image(cmd_buffer, image, true);
@@ -696,7 +696,7 @@ radv_emit_color_decompress(struct radv_cmd_buffer *cmd_buffer,
&cmd_buffer->pool->alloc);
}
- if (radv_image_has_dcc(image)) {
+ if (!decompress_dcc && radv_image_has_dcc(image)) {
cmd_buffer->state.predicating = old_predicating;
radv_emit_set_predication_state_from_image(cmd_buffer, image, false);