summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2016-06-06 01:42:46 +0200
committerMarek Olšák <[email protected]>2016-06-08 00:22:45 +0200
commit4be46c7d9dbeaff9dede941ee6518f68ad0c5f75 (patch)
tree3bf409a894a65236bc045cb583206ac82ccd47c3 /src/gallium/drivers
parentc06246501ed9c095a3fa9f8fe2a5dadd1df55271 (diff)
radeonsi: don't allocate DCC for the temporary MSAA resolve surface
Allocating it has no effect, but it adds overhead (useless DCC clear). Reviewed-by: Nicolai Hähnle <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r--src/gallium/drivers/radeon/r600_pipe_common.h1
-rw-r--r--src/gallium/drivers/radeon/r600_texture.c3
-rw-r--r--src/gallium/drivers/radeonsi/si_blit.c3
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 a9175492bfa..bb090d65d16 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 9daad65a04c..b0f375e4b1f 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 2059d9d018c..dee3c2f32d3 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)