Mesa (master): radv: update the FCE predicate for fast clears using CMASK

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jan 13 12:32:03 UTC 2021


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

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Tue Jan  5 15:10:14 2021 +0100

radv: update the FCE predicate for fast clears using CMASK

Fast clearing with CMASK should always be eliminated.

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/8332>

---

 src/amd/vulkan/radv_meta_clear.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/amd/vulkan/radv_meta_clear.c b/src/amd/vulkan/radv_meta_clear.c
index decc5d4e18d..021232708ec 100644
--- a/src/amd/vulkan/radv_meta_clear.c
+++ b/src/amd/vulkan/radv_meta_clear.c
@@ -1678,10 +1678,10 @@ radv_fast_clear_color(struct radv_cmd_buffer *cmd_buffer,
 	cmask_clear_value = radv_get_cmask_fast_clear_value(iview->image);
 
 	/* clear cmask buffer */
+	bool need_decompress_pass = false;
 	if (radv_dcc_enabled(iview->image, iview->base_mip)) {
 		uint32_t reset_value;
 		bool can_avoid_fast_clear_elim;
-		bool need_decompress_pass = false;
 
 		vi_get_fast_clear_parameters(cmd_buffer->device,
 					     iview->image->vk_format,
@@ -1701,18 +1701,22 @@ radv_fast_clear_color(struct radv_cmd_buffer *cmd_buffer,
 
 		flush_bits |= radv_clear_dcc(cmd_buffer, iview->image, &range,
 					     reset_value);
-
-		radv_update_fce_metadata(cmd_buffer, iview->image, &range,
-					 need_decompress_pass);
 	} else {
 		flush_bits = radv_clear_cmask(cmd_buffer, iview->image,
 					      &range, cmask_clear_value);
+
+		/* Fast clearing with CMASK should always be eliminated. */
+		need_decompress_pass = true;
 	}
 
 	if (post_flush) {
 		*post_flush |= flush_bits;
 	}
 
+	/* Update the FCE predicate to perform a fast-clear eliminate. */
+	radv_update_fce_metadata(cmd_buffer, iview->image, &range,
+				 need_decompress_pass);
+
 	radv_update_color_clear_metadata(cmd_buffer, iview, subpass_att,
 					 clear_color);
 }



More information about the mesa-commit mailing list