diff --git a/src/gallium/drivers/zink/zink_batch.c b/src/gallium/drivers/zink/zink_batch.c index 7940d6c42a5..851270a08a9 100644 --- a/src/gallium/drivers/zink/zink_batch.c +++ b/src/gallium/drivers/zink/zink_batch.c @@ -131,10 +131,10 @@ zink_reset_batch_state(struct zink_context *ctx, struct zink_batch_state *bs) zink_batch_descriptor_reset(screen, bs); - util_dynarray_foreach(&bs->freed_sparse_backing_bos, struct zink_bo, bo) { + while (util_dynarray_contains(&bs->freed_sparse_backing_bos, struct zink_bo*)) { + struct zink_bo *bo = util_dynarray_pop(&bs->freed_sparse_backing_bos, struct zink_bo*); zink_bo_unref(screen, bo); } - util_dynarray_clear(&bs->freed_sparse_backing_bos); /* programs are refcounted and batch-tracked */ set_foreach_remove(&bs->programs, entry) {