summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/radeonsi/si_descriptors.c
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2016-06-02 23:30:01 +0200
committerMarek Olšák <marek.olsak@amd.com>2016-06-07 11:12:26 +0200
commit9e5b5fbde0b445df1a3265b33e2ac890d6505409 (patch)
tree816f3c99493bdb404f60c40865cc237995cb2c26 /src/gallium/drivers/radeonsi/si_descriptors.c
parentc6b14bafa446d1556eb0dd344de34288617e1278 (diff)
downloadexternal_mesa3d-9e5b5fbde0b445df1a3265b33e2ac890d6505409.zip
external_mesa3d-9e5b5fbde0b445df1a3265b33e2ac890d6505409.tar.gz
external_mesa3d-9e5b5fbde0b445df1a3265b33e2ac890d6505409.tar.bz2
gallium/radeon: don't discard DCC if an external user can write to it
We don't import textures with DCC now, but soon we will. v2: if we can't disable DCC for image writes, at least decompress DCC at bind time Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Diffstat (limited to 'src/gallium/drivers/radeonsi/si_descriptors.c')
-rw-r--r--src/gallium/drivers/radeonsi/si_descriptors.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c
index f48ddb7..9ddb142 100644
--- a/src/gallium/drivers/radeonsi/si_descriptors.c
+++ b/src/gallium/drivers/radeonsi/si_descriptors.c
@@ -570,8 +570,14 @@ static void si_set_shader_image(struct si_context *ctx,
assert(tex->fmask.size == 0);
if (tex->dcc_offset &&
- view->access & PIPE_IMAGE_ACCESS_WRITE)
- r600_texture_disable_dcc(&screen->b, tex);
+ view->access & PIPE_IMAGE_ACCESS_WRITE) {
+ /* If DCC can't be disabled, at least decompress it.
+ * The decompression is relatively cheap if the surface
+ * has been decompressed already.
+ */
+ if (!r600_texture_disable_dcc(&screen->b, tex))
+ ctx->b.decompress_dcc(&ctx->b.b, tex);
+ }
if (is_compressed_colortex(tex)) {
images->compressed_colortex_mask |= 1 << slot;