From: Mike Blumenkrantz Date: Tue, 16 Mar 2021 17:56:46 +0000 (-0400) Subject: zink: move other batch-tracking implementations to unified codepath X-Git-Tag: upstream/21.2.3~6271 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=89dce254d80797fa295faa696a4f465d8a08683e;p=platform%2Fupstream%2Fmesa.git zink: move other batch-tracking implementations to unified codepath prep for monotonic batch ids Reviewed-by: Dave Airlie Part-of: --- diff --git a/src/gallium/drivers/zink/zink_batch.c b/src/gallium/drivers/zink/zink_batch.c index fcd5d64..2d4b94d 100644 --- a/src/gallium/drivers/zink/zink_batch.c +++ b/src/gallium/drivers/zink/zink_batch.c @@ -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;