From c1e09c7309c69313ea72175d4e039ad3e2736610 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 29 Jan 2025 08:44:09 -0500 Subject: [PATCH] zink: add zink_resource_reference() util function same as pipe version but using different types Part-of: --- src/gallium/drivers/zink/zink_query.c | 2 +- src/gallium/drivers/zink/zink_resource.h | 9 +++++++++ src/gallium/drivers/zink/zink_surface.c | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/zink_query.c b/src/gallium/drivers/zink/zink_query.c index 767b75e93c4..5ee1ff24c9c 100644 --- a/src/gallium/drivers/zink/zink_query.c +++ b/src/gallium/drivers/zink/zink_query.c @@ -429,7 +429,7 @@ destroy_query(struct zink_context *ctx, struct zink_query *query) pipe_resource_reference(&qbo->buffers[i], NULL); FREE(qbo); } - pipe_resource_reference((struct pipe_resource**)&query->predicate, NULL); + zink_resource_reference(&query->predicate, NULL); FREE(query); } diff --git a/src/gallium/drivers/zink/zink_resource.h b/src/gallium/drivers/zink/zink_resource.h index fda6b5ae553..209be325a20 100644 --- a/src/gallium/drivers/zink/zink_resource.h +++ b/src/gallium/drivers/zink/zink_resource.h @@ -193,6 +193,15 @@ zink_batch_resource_usage_set(struct zink_batch_state *bs, struct zink_resource void zink_debug_mem_print_stats(struct zink_screen *screen); +static inline void +zink_resource_reference(struct zink_resource **d, struct zink_resource *s) +{ + struct pipe_resource *dst = &(*d)->base.b; + struct pipe_resource *src = &s->base.b; + pipe_resource_reference(&dst, src); + *d = zink_resource(dst); +} + #ifdef __cplusplus } #endif diff --git a/src/gallium/drivers/zink/zink_surface.c b/src/gallium/drivers/zink/zink_surface.c index d5fb0286266..b326ce49187 100644 --- a/src/gallium/drivers/zink/zink_surface.c +++ b/src/gallium/drivers/zink/zink_surface.c @@ -396,7 +396,7 @@ zink_create_surface(struct pipe_context *pctx, ivci.image = transient->obj->image; struct zink_surface *tsurf = create_surface(pctx, &transient->base.b, templ, &ivci, true); - pipe_resource_reference((struct pipe_resource**)&transient, NULL); + zink_resource_reference(&transient, NULL); if (unlikely(!tsurf)) { mesa_loge("ZINK: failed to create transient surface!"); goto fail;