iris: Hang on to the last batch's sync-point, so we can wait on it
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 20 Nov 2018 04:41:26 +0000 (20:41 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 21 Feb 2019 18:26:10 +0000 (10:26 -0800)
src/gallium/drivers/iris/iris_batch.c
src/gallium/drivers/iris/iris_batch.h

index 04d71c0bff0a01761a40f4142b36d08f2fc39f91..85051186980acb3f4ee1cdc8c71296ea207a6930 100644 (file)
@@ -384,6 +384,8 @@ iris_batch_free(struct iris_batch *batch)
       iris_syncpt_reference(screen, s, NULL);
    ralloc_free(batch->syncpts.mem_ctx);
 
+   iris_syncpt_reference(screen, &batch->last_syncpt, NULL);
+
    iris_bo_unreference(batch->bo);
    batch->bo = NULL;
    batch->map = NULL;
@@ -580,6 +582,10 @@ _iris_batch_flush(struct iris_batch *batch, const char *file, int line)
    batch->exec_count = 0;
    batch->aperture_space = 0;
 
+   struct iris_syncpt *syncpt =
+      ((struct iris_syncpt **) util_dynarray_begin(&batch->syncpts))[0];
+   iris_syncpt_reference(screen, &batch->last_syncpt, syncpt);
+
    util_dynarray_foreach(&batch->syncpts, struct iris_syncpt *, s)
       iris_syncpt_reference(screen, s, NULL);
    util_dynarray_clear(&batch->syncpts);
index daa57fce6b5376a9f6e33c0443128c050fada5ea..cf119dd326a7a96bf0d2bcccf4fb0d557b8b0698 100644 (file)
@@ -91,6 +91,9 @@ struct iris_batch {
    /** The amount of aperture space (in bytes) used by all exec_bos */
    int aperture_space;
 
+   /** A sync-point for the last batch that was submitted. */
+   struct iris_syncpt *last_syncpt;
+
    /** List of other batches which we might need to flush to use a BO */
    struct iris_batch *other_batches[IRIS_BATCH_COUNT - 1];