Mesa (master): freedreno: mark all state dirty after switching batch

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sun Oct 28 18:04:41 UTC 2018


Module: Mesa
Branch: master
Commit: 05e868925c200853e9d6bffee691e72c1a353ae8
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=05e868925c200853e9d6bffee691e72c1a353ae8

Author: Rob Clark <robdclark at gmail.com>
Date:   Sat Oct 27 14:07:09 2018 -0400

freedreno: mark all state dirty after switching batch

The problem isn't directly with ec717fc629 but rather that commit
exposes the problem.  When we switch batch we cannot assume previous
state is clean so we should mark all state dirty.

Fixes: ec717fc629 freedreno: reduce resource dependency tracking overhead
Signed-off-by: Rob Clark <robdclark at gmail.com>

---

 src/gallium/drivers/freedreno/freedreno_batch.c | 1 +
 src/gallium/drivers/freedreno/freedreno_draw.c  | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/src/gallium/drivers/freedreno/freedreno_batch.c b/src/gallium/drivers/freedreno/freedreno_batch.c
index 91d7ce7353..2c5673f344 100644
--- a/src/gallium/drivers/freedreno/freedreno_batch.c
+++ b/src/gallium/drivers/freedreno/freedreno_batch.c
@@ -369,6 +369,7 @@ fd_batch_flush(struct fd_batch *batch, bool sync, bool force)
 
 		fd_batch_reference(&batch, NULL);
 		ctx->batch = new_batch;
+		fd_context_all_dirty(ctx);
 	}
 
 	if (sync)
diff --git a/src/gallium/drivers/freedreno/freedreno_draw.c b/src/gallium/drivers/freedreno/freedreno_draw.c
index 02ea41e2c4..2b5119e6f9 100644
--- a/src/gallium/drivers/freedreno/freedreno_draw.c
+++ b/src/gallium/drivers/freedreno/freedreno_draw.c
@@ -490,6 +490,7 @@ fd_launch_grid(struct pipe_context *pctx, const struct pipe_grid_info *info)
 	batch = fd_bc_alloc_batch(&ctx->screen->batch_cache, ctx, true);
 	fd_batch_reference(&save_batch, ctx->batch);
 	fd_batch_reference(&ctx->batch, batch);
+	fd_context_all_dirty(ctx);
 
 	mtx_lock(&ctx->screen->lock);
 
@@ -533,6 +534,7 @@ fd_launch_grid(struct pipe_context *pctx, const struct pipe_grid_info *info)
 	fd_batch_flush(batch, false, false);
 
 	fd_batch_reference(&ctx->batch, save_batch);
+	fd_context_all_dirty(ctx);
 	fd_batch_reference(&save_batch, NULL);
 	fd_batch_reference(&batch, NULL);
 }




More information about the mesa-commit mailing list