[Mesa-dev] [PATCH 09/12] radeonsi: don't allocate DCC for the temporary MSAA resolve surface

Marek Olšák maraeo at gmail.com
Tue Jun 7 10:04:33 UTC 2016


From: Marek Olšák <marek.olsak at amd.com>

Allocating it has no effect, but it adds overhead (useless DCC clear).
---
 src/gallium/drivers/radeon/r600_pipe_common.h | 1 +
 src/gallium/drivers/radeon/r600_texture.c     | 3 ++-
 src/gallium/drivers/radeonsi/si_blit.c        | 3 ++-
 3 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h b/src/gallium/drivers/radeon/r600_pipe_common.h
index a917549..bb090d6 100644
--- a/src/gallium/drivers/radeon/r600_pipe_common.h
+++ b/src/gallium/drivers/radeon/r600_pipe_common.h
@@ -48,6 +48,7 @@
 #define R600_RESOURCE_FLAG_TRANSFER		(PIPE_RESOURCE_FLAG_DRV_PRIV << 0)
 #define R600_RESOURCE_FLAG_FLUSHED_DEPTH	(PIPE_RESOURCE_FLAG_DRV_PRIV << 1)
 #define R600_RESOURCE_FLAG_FORCE_TILING		(PIPE_RESOURCE_FLAG_DRV_PRIV << 2)
+#define R600_RESOURCE_FLAG_DISABLE_DCC		(PIPE_RESOURCE_FLAG_DRV_PRIV << 3)
 
 #define R600_CONTEXT_STREAMOUT_FLUSH		(1u << 0)
 /* Pipeline & streamout query controls. */
diff --git a/src/gallium/drivers/radeon/r600_texture.c b/src/gallium/drivers/radeon/r600_texture.c
index 9daad65..b0f375e 100644
--- a/src/gallium/drivers/radeon/r600_texture.c
+++ b/src/gallium/drivers/radeon/r600_texture.c
@@ -263,7 +263,8 @@ static int r600_init_surface(struct r600_common_screen *rscreen,
 	}
 
 	if (rscreen->chip_class >= VI &&
-	    ptex->format == PIPE_FORMAT_R9G9B9E5_FLOAT)
+	    (ptex->flags & R600_RESOURCE_FLAG_DISABLE_DCC ||
+	     ptex->format == PIPE_FORMAT_R9G9B9E5_FLOAT))
 		surface->flags |= RADEON_SURF_DISABLE_DCC;
 
 	if (ptex->bind & PIPE_BIND_SCANOUT) {
diff --git a/src/gallium/drivers/radeonsi/si_blit.c b/src/gallium/drivers/radeonsi/si_blit.c
index c9e1d8b..c25a1b5 100644
--- a/src/gallium/drivers/radeonsi/si_blit.c
+++ b/src/gallium/drivers/radeonsi/si_blit.c
@@ -928,7 +928,8 @@ static bool do_hardware_msaa_resolve(struct pipe_context *ctx,
 	templ.depth0 = 1;
 	templ.array_size = 1;
 	templ.usage = PIPE_USAGE_DEFAULT;
-	templ.flags = R600_RESOURCE_FLAG_FORCE_TILING;
+	templ.flags = R600_RESOURCE_FLAG_FORCE_TILING |
+		      R600_RESOURCE_FLAG_DISABLE_DCC;
 
 	tmp = ctx->screen->resource_create(ctx->screen, &templ);
 	if (!tmp)
-- 
2.7.4



More information about the mesa-dev mailing list