Module: Mesa Branch: main Commit: e28df76c3a254eee5e27b0b51ddff4f79a1f8a5b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e28df76c3a254eee5e27b0b51ddff4f79a1f8a5b
Author: Mike Blumenkrantz <[email protected]> Date: Tue Aug 31 09:51:52 2021 -0400 zink: add a resource reference for bufferviews Reviewed-by: Dave Airlie <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12843> --- src/gallium/drivers/zink/zink_context.c | 2 ++ src/gallium/drivers/zink/zink_context.h | 1 + 2 files changed, 3 insertions(+) diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index 86886c5f52d..75556adffdd 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -636,6 +636,7 @@ get_buffer_view(struct zink_context *ctx, struct zink_resource *res, enum pipe_f goto out; } pipe_reference_init(&buffer_view->reference, 1); + pipe_resource_reference(&buffer_view->pres, &res->base.b); util_dynarray_init(&buffer_view->desc_set_refs.refs, NULL); buffer_view->bvci = bvci; buffer_view->buffer_view = view; @@ -751,6 +752,7 @@ zink_destroy_buffer_view(struct zink_screen *screen, struct zink_buffer_view *bu assert(he); _mesa_hash_table_remove(&screen->bufferview_cache, he); simple_mtx_unlock(&screen->bufferview_mtx); + pipe_resource_reference(&buffer_view->pres, NULL); VKSCR(DestroyBufferView)(screen->dev, buffer_view->buffer_view, NULL); zink_descriptor_set_refs_clear(&buffer_view->desc_set_refs, buffer_view); FREE(buffer_view); diff --git a/src/gallium/drivers/zink/zink_context.h b/src/gallium/drivers/zink/zink_context.h index 6f613812dc9..38cd9e8890f 100644 --- a/src/gallium/drivers/zink/zink_context.h +++ b/src/gallium/drivers/zink/zink_context.h @@ -80,6 +80,7 @@ struct zink_sampler_state { struct zink_buffer_view { struct pipe_reference reference; + struct pipe_resource *pres; VkBufferViewCreateInfo bvci; VkBufferView buffer_view; uint32_t hash;
