zink: assume fence has already completed if a batch state isn't found
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Mon, 29 Mar 2021 03:34:28 +0000 (23:34 -0400)
committerMarge Bot <eric+marge@anholt.net>
Tue, 30 Mar 2021 15:12:58 +0000 (15:12 +0000)
we're not going to be waiting on fences from the future, so if we can't
find a fence then it must have completed

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

src/gallium/drivers/zink/zink_context.c

index 01315d1..33b7c0f 100644 (file)
@@ -1940,18 +1940,9 @@ zink_wait_on_batch(struct zink_context *ctx, uint32_t batch_id)
    else {
       struct hash_entry *he = _mesa_hash_table_search_pre_hashed(&ctx->batch_states, batch_id, (void*)(uintptr_t)batch_id);
       if (!he) {
-        util_dynarray_foreach(&ctx->free_batch_states, struct zink_batch_state*, bs) {
-           if ((*bs)->fence.batch_id == batch_id) {
-              simple_mtx_unlock(&ctx->batch_mtx);
-              return;
-           }
-        }
-        if (ctx->last_fence && ctx->last_fence->batch_id > batch_id) {
-           /* already completed */
-           simple_mtx_unlock(&ctx->batch_mtx);
-           return;
-        }
-        unreachable("should've found batch state");
+        /* batch has already completed */
+        simple_mtx_unlock(&ctx->batch_mtx);
+        return;
       }
       fence = he->data;
    }