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 <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9961>
This commit is contained in:
committed by
Marge Bot
parent
15f2c1f661
commit
40e8328ce5
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user