mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 05:18:08 +02:00
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 <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9543>
This commit is contained in:
parent
dc80529e1f
commit
78068d039b
1 changed files with 11 additions and 0 deletions
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue