summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/freedreno
diff options
context:
space:
mode:
authorRob Clark <[email protected]>2018-10-27 14:07:09 -0400
committerRob Clark <[email protected]>2018-10-28 14:03:38 -0400
commit05e868925c200853e9d6bffee691e72c1a353ae8 (patch)
tree1f47e2f5f4f4295d3035b1ddfa8c88ff5c8e7a51 /src/gallium/drivers/freedreno
parent1bd4f8fefc2728963fc37900fe75210ee24e09d1 (diff)
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 <[email protected]>
Diffstat (limited to 'src/gallium/drivers/freedreno')
-rw-r--r--src/gallium/drivers/freedreno/freedreno_batch.c1
-rw-r--r--src/gallium/drivers/freedreno/freedreno_draw.c2
2 files changed, 3 insertions, 0 deletions
diff --git a/src/gallium/drivers/freedreno/freedreno_batch.c b/src/gallium/drivers/freedreno/freedreno_batch.c
index 91d7ce73535..2c5673f3440 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 02ea41e2c4e..2b5119e6f93 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);
}