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

---
 src/gallium/drivers/radeon/r600_texture.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/radeon/r600_texture.c 
b/src/gallium/drivers/radeon/r600_texture.c
index a0e9129..125e7ef 100644
--- a/src/gallium/drivers/radeon/r600_texture.c
+++ b/src/gallium/drivers/radeon/r600_texture.c
@@ -382,22 +382,26 @@ static void r600_surface_import_metadata(struct si_screen 
*sscreen,
 
 void si_eliminate_fast_color_clear(struct r600_common_context *rctx,
                                   struct r600_texture *rtex)
 {
        struct si_screen *sscreen = rctx->screen;
        struct pipe_context *ctx = &rctx->b;
 
        if (ctx == sscreen->aux_context)
                mtx_lock(&sscreen->aux_context_lock);
 
+       unsigned n = rctx->num_decompress_calls;
        ctx->flush_resource(ctx, &rtex->resource.b.b);
-       ctx->flush(ctx, NULL, 0);
+
+       /* Flush only if any fast clear elimination took place. */
+       if (n != rctx->num_decompress_calls)
+               ctx->flush(ctx, NULL, 0);
 
        if (ctx == sscreen->aux_context)
                mtx_unlock(&sscreen->aux_context_lock);
 }
 
 void si_texture_discard_cmask(struct si_screen *sscreen,
                              struct r600_texture *rtex)
 {
        if (!rtex->cmask.size)
                return;
-- 
2.7.4

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

Reply via email to