radv: do not fast clears if one level can't be fast cleared
And fallback to slow color clears. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
parent
450bce522a
commit
17f94e1984
|
@ -1522,6 +1522,21 @@ radv_can_fast_clear_color(struct radv_cmd_buffer *cmd_buffer,
|
|||
if (!can_avoid_fast_clear_elim)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (iview->image->info.levels > 1 &&
|
||||
cmd_buffer->device->physical_device->rad_info.chip_class == GFX8) {
|
||||
for (uint32_t l = 0; l < iview->level_count; l++) {
|
||||
uint32_t level = iview->base_mip + l;
|
||||
struct legacy_surf_level *surf_level =
|
||||
&iview->image->planes[0].surface.u.legacy.level[level];
|
||||
|
||||
/* Do not fast clears if one level can't be
|
||||
* fast cleared.
|
||||
*/
|
||||
if (!surf_level->dcc_fast_clear_size)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
Loading…
Reference in New Issue