From 001722b3a301312d2ec16c939376098dc11fab98 Mon Sep 17 00:00:00 2001 From: Sagar Ghuge Date: Mon, 25 Jan 2021 13:23:32 -0800 Subject: [PATCH] anv: Skip CCS ambiguate which preceed fast-clears We can skip CCS ambiguate if followed by a fast clear within render pass. v2: (Jason) - Check array layer as well since we only fast clear first layer and first LOD. - Don't drop fast clear check while doing resolve operation. Fixes: d5849bc840e "anv: Skip HiZ and CCS ambiguates which preceed fast-clears" Signed-off-by: Sagar Ghuge Reviewed-by: Jason Ekstrand Part-of: --- src/intel/vulkan/genX_cmd_buffer.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index cd29db27edc..0a96c54f699 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -1233,6 +1233,17 @@ transition_color_buffer(struct anv_cmd_buffer *cmd_buffer, uint32_t level_layer_count = MIN2(layer_count, aux_layers - base_layer); + /* If will_full_fast_clear is set, the caller promises to + * fast-clear the largest portion of the specified range as it can. + * For color images, that means only the first LOD and array slice. + */ + if (level == 0 && base_layer == 0 && will_full_fast_clear) { + base_layer++; + level_layer_count--; + if (level_layer_count == 0) + continue; + } + anv_image_ccs_op(cmd_buffer, image, image->planes[plane].surface.isl.format, ISL_SWIZZLE_IDENTITY, @@ -1252,6 +1263,12 @@ transition_color_buffer(struct anv_cmd_buffer *cmd_buffer, "define an MCS buffer."); } + /* If will_full_fast_clear is set, the caller promises to fast-clear + * the largest portion of the specified range as it can. + */ + if (will_full_fast_clear) + return; + assert(base_level == 0 && level_count == 1); anv_image_mcs_op(cmd_buffer, image, image->planes[plane].surface.isl.format,