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: d5849bc840
"anv: Skip HiZ and CCS ambiguates which preceed fast-clears"
Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6988>
This commit is contained in:
@@ -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,
|
||||
|
Reference in New Issue
Block a user