Mesa (master): radv: always initialize levels without DCC as fully expanded

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jun 25 14:34:05 UTC 2019


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

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Mon Jun 24 17:03:28 2019 +0200

radv: always initialize levels without DCC as fully expanded

This fixes a rendering issue with RoTR/DXVK.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

---

 src/amd/vulkan/radv_cmd_buffer.c | 32 +++++++++++++++-----------------
 1 file changed, 15 insertions(+), 17 deletions(-)

diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
index 215ccced144..db855dfc76c 100644
--- a/src/amd/vulkan/radv_cmd_buffer.c
+++ b/src/amd/vulkan/radv_cmd_buffer.c
@@ -4960,26 +4960,24 @@ void radv_initialize_dcc(struct radv_cmd_buffer *cmd_buffer,
 		 * support fast clears and we have to initialize them as "fully
 		 * expanded".
 		 */
-		if (image->planes[0].surface.num_dcc_levels > 1) {
-			/* Compute the size of all fast clearable DCC levels. */
-			for (unsigned i = 0; i < image->planes[0].surface.num_dcc_levels; i++) {
-				struct legacy_surf_level *surf_level =
-					&image->planes[0].surface.u.legacy.level[i];
+		/* Compute the size of all fast clearable DCC levels. */
+		for (unsigned i = 0; i < image->planes[0].surface.num_dcc_levels; i++) {
+			struct legacy_surf_level *surf_level =
+				&image->planes[0].surface.u.legacy.level[i];
 
-				if (!surf_level->dcc_fast_clear_size)
-					break;
+			if (!surf_level->dcc_fast_clear_size)
+				break;
 
-				size = surf_level->dcc_offset + surf_level->dcc_fast_clear_size;
-			}
+			size = surf_level->dcc_offset + surf_level->dcc_fast_clear_size;
+		}
 
-			/* Initialize the mipmap levels without DCC. */
-			if (size != image->planes[0].surface.dcc_size) {
-				state->flush_bits |=
-					radv_fill_buffer(cmd_buffer, image->bo,
-							 image->offset + image->dcc_offset + size,
-							 image->planes[0].surface.dcc_size - size,
-							 0xffffffff);
-			}
+		/* Initialize the mipmap levels without DCC. */
+		if (size != image->planes[0].surface.dcc_size) {
+			state->flush_bits |=
+				radv_fill_buffer(cmd_buffer, image->bo,
+						 image->offset + image->dcc_offset + size,
+						 image->planes[0].surface.dcc_size - size,
+						 0xffffffff);
 		}
 	}
 




More information about the mesa-commit mailing list