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
