Mesa (master): radv: do not fast clears if one level can't be fast cleared

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jun 20 09:02:21 UTC 2019


Module: Mesa
Branch: master
Commit: 17f94e19841c9f31d571269cd622fd12de58e30d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=17f94e19841c9f31d571269cd622fd12de58e30d

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Thu Jun 20 09:17:36 2019 +0200

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 at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

---

 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;




More information about the mesa-commit mailing list