From 122d01e73a0f6cc3985fd17f98829363eb7400e5 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 12 Jan 2021 17:05:42 -0500 Subject: [PATCH] zink: add batch tracking id for program struct this reduces overhead of batch tracking Reviewed-by: Erik Faye-Lund Part-of: --- src/gallium/drivers/zink/zink_batch.c | 7 +++---- src/gallium/drivers/zink/zink_program.h | 1 + 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/zink/zink_batch.c b/src/gallium/drivers/zink/zink_batch.c index 22d79871ede..9a399e1888f 100644 --- a/src/gallium/drivers/zink/zink_batch.c +++ b/src/gallium/drivers/zink/zink_batch.c @@ -465,10 +465,9 @@ void zink_batch_reference_program(struct zink_batch *batch, struct zink_program *pg) { - bool found = false; - _mesa_set_search_and_add(batch->state->programs, pg, &found); - if (!found) - pipe_reference(NULL, &pg->reference); + if (!ptr_add_usage(batch, batch->state->programs, pg, &pg->batch_uses)) + return; + pipe_reference(NULL, &pg->reference); batch->has_work = true; } diff --git a/src/gallium/drivers/zink/zink_program.h b/src/gallium/drivers/zink/zink_program.h index c0cad91f2ea..8fcabaa7d52 100644 --- a/src/gallium/drivers/zink/zink_program.h +++ b/src/gallium/drivers/zink/zink_program.h @@ -69,6 +69,7 @@ struct zink_shader_cache { struct zink_program { struct pipe_reference reference; + struct zink_batch_usage batch_uses; bool is_compute; struct zink_descriptor_pool *pool[ZINK_DESCRIPTOR_TYPES];