From: Marek Olšák <marek.ol...@amd.com>

---
 src/gallium/drivers/radeonsi/si_cp_dma.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_cp_dma.c 
b/src/gallium/drivers/radeonsi/si_cp_dma.c
index 9505d62..e737519 100644
--- a/src/gallium/drivers/radeonsi/si_cp_dma.c
+++ b/src/gallium/drivers/radeonsi/si_cp_dma.c
@@ -135,22 +135,25 @@ static unsigned get_flush_flags(struct si_context *sctx, 
enum r600_coherency coh
                return SI_CONTEXT_INV_SMEM_L1 |
                       SI_CONTEXT_INV_VMEM_L1 |
                       (sctx->b.chip_class == SI ? SI_CONTEXT_INV_GLOBAL_L2 : 
0);
        case R600_COHERENCY_CB_META:
                return SI_CONTEXT_FLUSH_AND_INV_CB;
        }
 }
 
 static unsigned get_tc_l2_flag(struct si_context *sctx, enum r600_coherency 
coher)
 {
-       return coher == R600_COHERENCY_SHADER &&
-              sctx->b.chip_class >= CIK ? CP_DMA_USE_L2 : 0;
+       if ((sctx->b.chip_class >= GFX9 && coher == R600_COHERENCY_CB_META) ||
+           (sctx->b.chip_class >= CIK && coher == R600_COHERENCY_SHADER))
+               return CP_DMA_USE_L2;
+
+       return 0;
 }
 
 static void si_cp_dma_prepare(struct si_context *sctx, struct pipe_resource 
*dst,
                              struct pipe_resource *src, unsigned byte_count,
                              uint64_t remaining_size, unsigned user_flags,
                              bool *is_first, unsigned *packet_flags)
 {
        /* Fast exit for a CPDMA prefetch. */
        if ((user_flags & SI_CPDMA_SKIP_ALL) == SI_CPDMA_SKIP_ALL) {
                *is_first = false;
-- 
2.7.4

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to