Module: Mesa Branch: master Commit: 40e8328ce5fe7445749e461dbd070a7e9d72322c URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=40e8328ce5fe7445749e461dbd070a7e9d72322c
Author: Mike Blumenkrantz <[email protected]> Date: Tue Jan 12 12:28:22 2021 -0500 zink: remove atomic usage from batch tracking comparisons race conditions here have no impact because it cannot change the evaluation of this condition also no need to check zs stuff if there's no update happening Reviewed-by: Dave Airlie <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9961> --- src/gallium/drivers/zink/zink_batch.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/gallium/drivers/zink/zink_batch.c b/src/gallium/drivers/zink/zink_batch.c index 2f7dd462cb7..842cc9ed9a0 100644 --- a/src/gallium/drivers/zink/zink_batch.c +++ b/src/gallium/drivers/zink/zink_batch.c @@ -431,8 +431,8 @@ zink_batch_reference_resource_rw(struct zink_batch *batch, struct zink_resource zink_get_depth_stencil_resources((struct pipe_resource*)res, NULL, &stencil); /* if the resource already has usage of any sort set for this batch, we can skip hashing */ - if (!zink_batch_usage_matches(&res->obj->reads, batch->state->fence.batch_id) && - !zink_batch_usage_matches(&res->obj->writes, batch->state->fence.batch_id)) { + if (res->obj->reads.usage != batch->state->fence.batch_id && + res->obj->writes.usage != batch->state->fence.batch_id) { bool found = false; _mesa_set_search_and_add(batch->state->fence.resources, res->obj, &found); if (!found) { @@ -450,13 +450,17 @@ zink_batch_reference_resource_rw(struct zink_batch *batch, struct zink_resource } } if (write) { - if (stencil) - zink_batch_usage_set(&stencil->obj->writes, batch->state->fence.batch_id); - zink_batch_usage_set(&res->obj->writes, batch->state->fence.batch_id); + if (res->obj->writes.usage != batch->state->fence.batch_id) { + if (stencil) + zink_batch_usage_set(&stencil->obj->writes, batch->state->fence.batch_id); + zink_batch_usage_set(&res->obj->writes, batch->state->fence.batch_id); + } } else { - if (stencil) - zink_batch_usage_set(&stencil->obj->reads, batch->state->fence.batch_id); - zink_batch_usage_set(&res->obj->reads, batch->state->fence.batch_id); + if (res->obj->reads.usage != batch->state->fence.batch_id) { + if (stencil) + zink_batch_usage_set(&stencil->obj->reads, batch->state->fence.batch_id); + zink_batch_usage_set(&res->obj->reads, batch->state->fence.batch_id); + } } /* multiple array entries are fine */ if (res->obj->persistent_maps) @@ -469,7 +473,7 @@ static bool ptr_add_usage(struct zink_batch *batch, struct set *s, void *ptr, struct zink_batch_usage *u) { bool found = false; - if (zink_batch_usage_matches(u, batch->state->fence.batch_id)) + if (u->usage == batch->state->fence.batch_id) return false; _mesa_set_search_and_add(s, ptr, &found); assert(!found); _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
