radeonsi/gfx10: no need to invalidate L2 for framebuffer -> texture coherency
authorMarek Olšák <marek.olsak@amd.com>
Sat, 29 Jun 2019 00:31:41 +0000 (20:31 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Tue, 9 Jul 2019 21:24:16 +0000 (17:24 -0400)
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Acked-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/radeonsi/si_pipe.h

index 01a0ede4126c2cc04d48734b88e5a4df27271ba9..c63837e89fa1a16fc7101b43ff6191aa2c8d1bf8 100644 (file)
@@ -1681,7 +1681,10 @@ si_make_CB_shader_coherent(struct si_context *sctx, unsigned num_samples,
        sctx->flags |= SI_CONTEXT_FLUSH_AND_INV_CB |
                       SI_CONTEXT_INV_VCACHE;
 
-       if (sctx->chip_class >= GFX9) {
+       if (sctx->chip_class >= GFX10) {
+               if (shaders_read_metadata)
+                       sctx->flags |= SI_CONTEXT_INV_L2_METADATA;
+       } else if (sctx->chip_class == GFX9) {
                /* Single-sample color is coherent with shaders on GFX9, but
                 * L2 metadata must be flushed if shaders read metadata.
                 * (DCC, CMASK).
@@ -1704,7 +1707,10 @@ si_make_DB_shader_coherent(struct si_context *sctx, unsigned num_samples,
        sctx->flags |= SI_CONTEXT_FLUSH_AND_INV_DB |
                       SI_CONTEXT_INV_VCACHE;
 
-       if (sctx->chip_class >= GFX9) {
+       if (sctx->chip_class >= GFX10) {
+               if (shaders_read_metadata)
+                       sctx->flags |= SI_CONTEXT_INV_L2_METADATA;
+       } else if (sctx->chip_class == GFX9) {
                /* Single-sample depth (not stencil) is coherent with shaders
                 * on GFX9, but L2 metadata must be flushed if shaders read
                 * metadata.