mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 02:20:11 +01:00
lavapipe: Fix vkWaitForFences for initially-signalled fences
Fences with VK_FENCE_CREATE_SIGNALED_BIT are created with signalled=true and timeline=0, waiting on them without submitting first returned VK_TIMEOUT instead of VK_SUCCESS. Signed-off-by: Pavel Asyutchenko <sventeam@yandex.ru> Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
96ea718b7e
commit
8a294b6f97
1 changed files with 3 additions and 1 deletions
|
|
@ -2089,7 +2089,7 @@ VKAPI_ATTR VkResult VKAPI_CALL lvp_WaitForFences(
|
|||
struct lvp_fence *f = lvp_fence_from_handle(pFences[i]);
|
||||
|
||||
/* this is an unsubmitted fence: immediately bail out */
|
||||
if (!f->timeline)
|
||||
if (!f->timeline && !f->signalled)
|
||||
return VK_TIMEOUT;
|
||||
if (!fence || f->timeline > fence->timeline)
|
||||
fence = f;
|
||||
|
|
@ -2098,6 +2098,8 @@ VKAPI_ATTR VkResult VKAPI_CALL lvp_WaitForFences(
|
|||
/* find lowest timeline id */
|
||||
for (unsigned i = 0; i < fenceCount; i++) {
|
||||
struct lvp_fence *f = lvp_fence_from_handle(pFences[i]);
|
||||
if (f->signalled)
|
||||
return VK_SUCCESS;
|
||||
if (f->timeline && (!fence || f->timeline < fence->timeline))
|
||||
fence = f;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue