zink: unset barrier info if resource object no longer has usage after reset
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Wed, 8 Sep 2021 19:25:42 +0000 (15:25 -0400)
committerMarge Bot <eric+marge@anholt.net>
Tue, 14 Sep 2021 04:19:13 +0000 (04:19 +0000)
this avoids spurious barriers

Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12845>

src/gallium/drivers/zink/zink_batch.c

index 10a165b..f60590c 100644 (file)
@@ -36,7 +36,11 @@ zink_reset_batch_state(struct zink_context *ctx, struct zink_batch_state *bs)
    /* unref all used resources */
    set_foreach_remove(bs->resources, entry) {
       struct zink_resource_object *obj = (struct zink_resource_object *)entry->key;
-      zink_resource_object_usage_unset(obj, bs);
+      if (!zink_resource_object_usage_unset(obj, bs)) {
+         obj->unordered_barrier = false;
+         obj->access = 0;
+         obj->access_stage = 0;
+      }
       util_dynarray_append(&bs->unref_resources, struct zink_resource_object*, obj);
    }