zink: if AcquireNextImageKHR fails with VK_NOT_READY or VK_TIMEOUT retry

Gradually increase timeout until we reach a limit on which we abort.
This fixes a crash with

    spec@ext_framebuffer_blit@fbo-blit-check-limits

on llvmpipe.

Fixes: d1cac5ed05
    zink: acquire - maybe clear timeout after waiting for presentation fence

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28558>
This commit is contained in:
Gert Wollny
2024-04-09 21:38:15 +02:00
committed by Marge Bot
parent a5a2bd2969
commit 66066650c9

View File

@@ -574,6 +574,12 @@ kopper_acquire(struct zink_screen *screen, struct zink_resource *res, uint64_t t
res->obj->new_dt = true;
continue;
}
if (ret == VK_NOT_READY || ret == VK_TIMEOUT) {
if (timeout > 1000000)
unreachable("kopper_acquire: updated timeout after failure has become unreasonable large");
timeout += 4000;
continue;
}
VKSCR(DestroySemaphore)(screen->dev, acquire, NULL);
return ret;
}