summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2016-06-05 15:45:30 +0200
committerMarek Olšák <[email protected]>2016-06-08 00:22:45 +0200
commitc65361763cca709a28534aa354b6dffe1cbadf99 (patch)
treed00546bdb623bc0d84a9e58140e48e16ab02845b /src/gallium/drivers
parent2fd74a05bb1a53f2edbc2df3f7e77f84c630ac5f (diff)
gallium/radeon: don't disable DCC because of SDMA
We want to keep DCC enabled to save bandwidth. It was a bad idea to disable it here. 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_texture.c23
1 files changed, 3 insertions, 20 deletions
diff --git a/src/gallium/drivers/radeon/r600_texture.c b/src/gallium/drivers/radeon/r600_texture.c
index b27641722d6..27b464fa509 100644
--- a/src/gallium/drivers/radeon/r600_texture.c
+++ b/src/gallium/drivers/radeon/r600_texture.c
@@ -32,8 +32,6 @@
#include <errno.h>
#include <inttypes.h>
-static bool r600_texture_discard_dcc(struct r600_common_screen *rscreen,
- struct r600_texture *rtex);
static void r600_texture_discard_cmask(struct r600_common_screen *rscreen,
struct r600_texture *rtex);
static unsigned r600_choose_tiling(struct r600_common_screen *rscreen,
@@ -69,27 +67,12 @@ bool r600_prepare_for_dma_blit(struct r600_common_context *rctx,
/* DCC as:
* src: Use the 3D path. DCC decompression is expensive.
- * dst: If overwriting the whole texture, discard DCC and use SDMA.
- * Otherwise, use the 3D path.
+ * dst: Use the 3D path to compress the pixels with DCC.
*/
- if (rsrc->dcc_offset && rsrc->surface.level[src_level].dcc_enabled)
+ if ((rsrc->dcc_offset && rsrc->surface.level[src_level].dcc_enabled) ||
+ (rdst->dcc_offset && rdst->surface.level[dst_level].dcc_enabled))
return false;
- if (rdst->dcc_offset && rdst->surface.level[dst_level].dcc_enabled) {
- /* We can't discard DCC if the texture has been exported.
- * We can only discard DCC for the entire texture.
- */
- if (rdst->resource.is_shared ||
- rdst->resource.b.b.last_level > 0 ||
- !util_texrange_covers_whole_level(&rdst->resource.b.b, dst_level,
- dstx, dsty, dstz, src_box->width,
- src_box->height, src_box->depth))
- return false;
-
- if (!r600_texture_discard_dcc(rctx->screen, rdst))
- return false;
- }
-
/* CMASK as:
* src: Both texture and SDMA paths need decompression. Use SDMA.
* dst: If overwriting the whole texture, discard CMASK and use