And fallback to slow color clears.

v2: add a check for GFX8

Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
---
 src/amd/vulkan/radv_meta_clear.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/src/amd/vulkan/radv_meta_clear.c b/src/amd/vulkan/radv_meta_clear.c
index b8ca5c2c9b2..6263b6d6f58 100644
--- a/src/amd/vulkan/radv_meta_clear.c
+++ b/src/amd/vulkan/radv_meta_clear.c
@@ -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;
-- 
2.22.0

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to