From 91f99f82ab4b054c136b9fba46a2414522a46560 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 22 Feb 2024 15:02:18 -0500 Subject: [PATCH] zink: null out bo usage when allocating from slab avoids weird cases with stale usage cc: mesa-stable Part-of: --- src/gallium/drivers/zink/zink_bo.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/zink/zink_bo.c b/src/gallium/drivers/zink/zink_bo.c index ddfb566ee51..be23cc6343e 100644 --- a/src/gallium/drivers/zink/zink_bo.c +++ b/src/gallium/drivers/zink/zink_bo.c @@ -637,6 +637,8 @@ zink_bo_create(struct zink_screen *screen, uint64_t size, unsigned alignment, en assert(bo->base.base.placement == mem_type_idx); pipe_reference_init(&bo->base.base.reference, 1); bo->base.base.size = size; + memset(&bo->reads, 0, sizeof(bo->reads)); + memset(&bo->writes, 0, sizeof(bo->writes)); bo->unique_id = p_atomic_inc_return(&screen->pb.next_bo_unique_id); assert(alignment <= 1 << bo->base.base.alignment_log2); @@ -666,8 +668,11 @@ no_slab: bo = (struct zink_bo*) pb_cache_reclaim_buffer(&screen->pb.bo_cache, size, alignment, 0, mem_type_idx); assert(!bo || bo->base.base.placement == mem_type_idx); - if (bo) + if (bo) { + memset(&bo->reads, 0, sizeof(bo->reads)); + memset(&bo->writes, 0, sizeof(bo->writes)); return &bo->base; + } } /* Create a new one. */