iris: Fix accidental busy-looping in query waits
When switching from bo_wait to sync-points, I missed that we turned an if (not landed) bo_wait into a while (not landed) check_syncpt(), which has a timeout of 0. This meant, rather than sleeping until the batch is complete, we'd busy-loop, continually asking the kernel "is the batch done yet???". This is not what we want at all - if we wanted a busy loop, we'd just loop on !snapshots_landed. We want to sleep. Add an effectively infinite timeout so that we sleep.
This commit is contained in:
@@ -876,7 +876,7 @@ iris_get_query_result(struct pipe_context *ctx,
|
||||
|
||||
while (!q->map->snapshots_landed) {
|
||||
if (wait)
|
||||
iris_wait_syncpt(ctx->screen, q->syncpt, 0);
|
||||
iris_wait_syncpt(ctx->screen, q->syncpt, INT64_MAX);
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user