diff options
author | Samuel Pitoiset <samuel.pitoiset@gmail.com> | 2021-01-05 15:10:14 +0100 |
---|---|---|
committer | Samuel Pitoiset <samuel.pitoiset@gmail.com> | 2021-01-13 12:24:30 +0100 |
commit | 697c93abc1c41af8ec379f5334c44005cb344152 (patch) | |
tree | 5aa2445d7e6414446310607e9e6b85e991bcad72 /src | |
parent | 051e2bfe80aca1bf26905f72d437a2d3fd228b0c (diff) |
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@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8332>
Diffstat (limited to 'src')
-rw-r--r-- | src/amd/vulkan/radv_meta_clear.c | 12 |
1 files 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); } |