From fbe5d75f114b7510f6b486c76e19c789275b3294 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Tue, 6 Nov 2018 21:34:58 -0800 Subject: [PATCH] iris: cross batch flushing --- src/gallium/drivers/iris/iris_batch.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/gallium/drivers/iris/iris_batch.c b/src/gallium/drivers/iris/iris_batch.c index 8f53dacb9dd..7196691f73c 100644 --- a/src/gallium/drivers/iris/iris_batch.c +++ b/src/gallium/drivers/iris/iris_batch.c @@ -205,6 +205,16 @@ add_exec_bo(struct iris_batch *batch, struct iris_bo *bo) return index; } + /* This is the first time our batch has seen this BO. Before we use it, + * we need to see if other batches reference it - if so, we should flush + * those first. + */ + for (int b = 0; b < ARRAY_SIZE(batch->other_batches); b++) { + if (iris_batch_references(batch->other_batches[b], bo)) + iris_batch_flush(batch->other_batches[b]); + } + + /* Now, take a reference and add it to the validation list. */ iris_bo_reference(bo); if (batch->exec_count == batch->exec_array_size) { -- 2.30.2