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;

Reply via email to