From bb16203a8d8ee8934a53bc00801e8a85babef59c Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 10 Sep 2024 19:49:57 -0400 Subject: [PATCH] zink: fix sparse bo deallocation this loop was not correctly iterating the dynarray cc: mesa-stable Part-of: --- src/gallium/drivers/zink/zink_batch.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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) {