radeonsi: don't flush when si_eliminate_fast_color_clear is no-op
authorMarek Olšák <marek.olsak@amd.com>
Tue, 30 Jan 2018 01:51:47 +0000 (02:51 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 21 Feb 2018 19:03:11 +0000 (20:03 +0100)
src/gallium/drivers/radeon/r600_texture.c

index a0e91292c3d5d7ecd1615338bb8a6b1b5622be6b..125e7ef4089105233293f6542a58607e8d5fdd19 100644 (file)
@@ -389,8 +389,12 @@ void si_eliminate_fast_color_clear(struct r600_common_context *rctx,
        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);