zink: move other batch-tracking implementations to unified codepath

prep for monotonic batch ids

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9626>
This commit is contained in:
Mike Blumenkrantz
2021-03-16 13:56:46 -04:00
parent 57021b1d4a
commit 89dce254d8
+4 -17
View File
@@ -339,36 +339,23 @@ zink_batch_reference_program(struct zink_batch *batch,
bool
zink_batch_add_desc_set(struct zink_batch *batch, struct zink_descriptor_set *zds)
{
bool found = false;
uint32_t bit = BITFIELD_BIT(batch->batch_id);
if (zds->batch_uses & bit)
if (!ptr_add_usage(batch, batch->desc_sets, zds, &zds->batch_uses))
return false;
_mesa_set_search_and_add(batch->desc_sets, zds, &found);
assert(!found);
zds->batch_uses |= bit;
pipe_reference(NULL, &zds->reference);
return !found;
return true;
}
void
zink_batch_reference_image_view(struct zink_batch *batch,
struct zink_image_view *image_view)
{
bool found = false;
uint32_t bit = BITFIELD64_BIT(batch->batch_id);
if (image_view->base.resource->target == PIPE_BUFFER) {
if (image_view->buffer_view->batch_uses & bit)
if (!ptr_add_usage(batch, batch->bufferviews, image_view->buffer_view, &image_view->buffer_view->batch_uses))
return;
_mesa_set_search_and_add(batch->bufferviews, image_view->buffer_view, &found);
assert(!found);
image_view->buffer_view->batch_uses |= bit;
pipe_reference(NULL, &image_view->buffer_view->reference);
} else {
if (image_view->surface->batch_uses & bit)
if (!ptr_add_usage(batch, batch->surfaces, image_view->surface, &image_view->surface->batch_uses))
return;
_mesa_set_search_and_add(batch->surfaces, image_view->surface, &found);
assert(!found);
image_view->surface->batch_uses |= bit;
pipe_reference(NULL, &image_view->surface->base.reference);
}
batch->has_work = true;