summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/radeonsi/si_blit.c
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2016-02-24 22:04:47 +0100
committerMarek Olšák <[email protected]>2016-03-09 15:02:27 +0100
commitf18fc70d6f62719e4fae2f93f2d563894bc1437f (patch)
treeb2224cd381a6292da5d823d3fb5a32cb69f5b3e3 /src/gallium/drivers/radeonsi/si_blit.c
parent1e48ec7571cb36b4ee5660f8066c7905a3432969 (diff)
radeonsi: disable DCC on handle export if expecting write access
This should be okay except that sampler views and images are not re-set. Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi/si_blit.c')
-rw-r--r--src/gallium/drivers/radeonsi/si_blit.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeonsi/si_blit.c b/src/gallium/drivers/radeonsi/si_blit.c
index 198f57d542f..d9c4f8fca1d 100644
--- a/src/gallium/drivers/radeonsi/si_blit.c
+++ b/src/gallium/drivers/radeonsi/si_blit.c
@@ -777,6 +777,17 @@ static void si_flush_resource(struct pipe_context *ctx,
}
}
+static void si_decompress_dcc(struct pipe_context *ctx,
+ struct r600_texture *rtex)
+{
+ if (!rtex->dcc_offset)
+ return;
+
+ si_blit_decompress_color(ctx, rtex, 0, rtex->resource.b.b.last_level,
+ 0, util_max_layer(&rtex->resource.b.b, 0),
+ true);
+}
+
static void si_pipe_clear_buffer(struct pipe_context *ctx,
struct pipe_resource *dst,
unsigned offset, unsigned size,
@@ -846,4 +857,5 @@ void si_init_blit_functions(struct si_context *sctx)
sctx->b.b.blit = si_blit;
sctx->b.b.flush_resource = si_flush_resource;
sctx->b.blit_decompress_depth = si_blit_decompress_depth;
+ sctx->b.decompress_dcc = si_decompress_dcc;
}