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