From 0a592db57360a7847ca9c57e47f6200a2992f2e9 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 5 Oct 2021 12:11:26 +1000 Subject: [PATCH] crocus/query: don't loop on ready status after gpu hang. When a GPU hang occurs, the syncobj will eventually timeout, if this is a wait, just set ready, so things will continue. This matches 965 behaviour better. Fixes: c282a082bef0 ("crocus/query: poll the syncobj in the no wait situation") Part-of: --- src/gallium/drivers/crocus/crocus_query.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/crocus/crocus_query.c b/src/gallium/drivers/crocus/crocus_query.c index e31f2ef..152fd4f 100644 --- a/src/gallium/drivers/crocus/crocus_query.c +++ b/src/gallium/drivers/crocus/crocus_query.c @@ -678,8 +678,12 @@ crocus_get_query_result(struct pipe_context *ctx, } assert(READ_ONCE(q->map->snapshots_landed)); #else - if (crocus_wait_syncobj(ctx->screen, q->syncobj, wait ? INT64_MAX : 0)) + if (crocus_wait_syncobj(ctx->screen, q->syncobj, wait ? INT64_MAX : 0)) { + /* if we've waited and timedout, just set the query to ready to avoid infinite loop */ + if (wait) + q->ready = true; return false; + } #endif calculate_result_on_cpu(devinfo, q); } -- 2.7.4