Module: Mesa
Branch: master
Commit: 78068d039be77ad0de13e9b18b41e5af24af98ed
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=78068d039be77ad0de13e9b18b41e5af24af98ed

Author: Mike Blumenkrantz <[email protected]>
Date:   Tue Oct 27 20:25:06 2020 -0400

zink: add extra batch tracking for sampler views

we're going to start invalidating and rebinding resources, which means
we need to be extra sure that we have our lifetimes in order here

Reviewed-by: Dave Airlie <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9543>

---

 src/gallium/drivers/zink/zink_batch.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/gallium/drivers/zink/zink_batch.c 
b/src/gallium/drivers/zink/zink_batch.c
index a952dd3f037..4de6c919218 100644
--- a/src/gallium/drivers/zink/zink_batch.c
+++ b/src/gallium/drivers/zink/zink_batch.c
@@ -38,6 +38,13 @@ zink_reset_batch(struct zink_context *ctx, struct zink_batch 
*batch)
       struct pipe_sampler_view *pres = (struct pipe_sampler_view *)entry->key;
       struct zink_sampler_view *sampler_view = zink_sampler_view(pres);
       sampler_view->batch_uses &= ~BITFIELD_BIT(batch->batch_id);
+      if (sampler_view->base.target == PIPE_BUFFER) {
+         struct zink_buffer_view *buffer_view = sampler_view->buffer_view;
+         zink_buffer_view_reference(ctx, &buffer_view, NULL);
+      } else {
+         struct zink_surface *surface = sampler_view->image_view;
+         pipe_surface_reference((struct pipe_surface**)&surface, NULL);
+      }
       pipe_sampler_view_reference(&pres, NULL);
       _mesa_set_remove(batch->sampler_views, entry);
    }
@@ -236,6 +243,10 @@ zink_batch_reference_sampler_view(struct zink_batch *batch,
    assert(!found);
    sv->batch_uses |= bit;
    pipe_reference(NULL, &sv->base.reference);
+   if (sv->base.target == PIPE_BUFFER)
+      pipe_reference(NULL, &sv->buffer_view->reference);
+   else
+      pipe_reference(NULL, &sv->image_view->base.reference);
    batch->has_work = true;
 }
 

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to