radv: Add winsys functions for timeline syncobj.
[mesa.git] / src / amd / vulkan / radv_wsi.c
index 1fe58714a1ed474b40a79717890e33764b41333c..0c9c8593783069556c57ded512e1c59b60d1bf5e 100644 (file)
@@ -259,12 +259,21 @@ VkResult radv_AcquireNextImage2KHR(
 
        if (result == VK_SUCCESS || result == VK_SUBOPTIMAL_KHR) {
                if (fence) {
-                       if (fence->fence)
-                               device->ws->signal_fence(fence->fence);
-                       if (fence->temp_syncobj) {
-                               device->ws->signal_syncobj(device->ws, fence->temp_syncobj);
-                       } else if (fence->syncobj) {
-                               device->ws->signal_syncobj(device->ws, fence->syncobj);
+                       struct radv_fence_part *part =
+                               fence->temporary.kind != RADV_FENCE_NONE ?
+                               &fence->temporary : &fence->permanent;
+
+                       switch (part->kind) {
+                       case RADV_FENCE_NONE:
+                               break;
+                       case RADV_FENCE_WINSYS:
+                               device->ws->signal_fence(part->fence);
+                               break;
+                       case RADV_FENCE_SYNCOBJ:
+                               device->ws->signal_syncobj(device->ws, part->syncobj, 0);
+                               break;
+                       default:
+                               unreachable("Invalid WSI fence type");
                        }
                }
                if (semaphore) {
@@ -280,7 +289,7 @@ VkResult radv_AcquireNextImage2KHR(
                        case RADV_SEMAPHORE_TIMELINE:
                                unreachable("WSI only allows binary semaphores.");
                        case RADV_SEMAPHORE_SYNCOBJ:
-                               device->ws->signal_syncobj(device->ws, part->syncobj);
+                               device->ws->signal_syncobj(device->ws, part->syncobj, 0);
                                break;
                        }
                }