mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 13:38:06 +02:00
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> (cherry picked from commit001722b3a3)
This commit is contained in:
parent
c2a6bbc712
commit
daa0d8668b
2 changed files with 18 additions and 1 deletions
|
|
@ -256,7 +256,7 @@
|
|||
"description": "anv: Skip CCS ambiguate which preceed fast-clears",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "d5849bc840e5167b5b735d9e3f1ec1e8e1197c98"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue