iris: Hang on to the last batch's sync-point, so we can wait on it

This commit is contained in:
Kenneth Graunke 2018-11-19 20:41:26 -08:00
parent fae74234d9
commit d69bc4ac12
2 changed files with 9 additions and 0 deletions

View 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);

View 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];