From 1225326046a5ba3213e3cfc6fd437e1d56c00777 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 11 Aug 2021 14:06:09 +0200 Subject: [PATCH] radv: fix fast clearing depth images with mips on GFX10+ Found by inspection. Cc: 21.2 mesa-stable Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen Part-of: (cherry picked from commit b16f3261a71c6fa22e300ba2b65d7e4128d8d05a) --- .pick_status.json | 2 +- src/amd/vulkan/radv_meta_clear.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 56b0aac1842..aee5fecadc1 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -139,7 +139,7 @@ "description": "radv: fix fast clearing depth images with mips on GFX10+", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/amd/vulkan/radv_meta_clear.c b/src/amd/vulkan/radv_meta_clear.c index 65543c0fdf9..ba2f76e3f03 100644 --- a/src/amd/vulkan/radv_meta_clear.c +++ b/src/amd/vulkan/radv_meta_clear.c @@ -986,6 +986,14 @@ radv_can_fast_clear_depth(struct radv_cmd_buffer *cmd_buffer, const struct radv_ !radv_is_fast_clear_stencil_allowed(clear_value)))) return false; + if (iview->image->info.levels > 1) { + uint32_t last_level = iview->base_mip + iview->level_count - 1; + if (last_level >= iview->image->planes[0].surface.num_meta_levels) { + /* Do not fast clears if one level can't be fast cleared. */ + return false; + } + } + return true; }