From 05b278327066304d8822eb6414a89120c816e14a Mon Sep 17 00:00:00 2001 From: Bas Nieuwenhuizen Date: Tue, 28 Jul 2020 04:14:23 +0200 Subject: [PATCH] radv: Fix host->host signalling with legacy timeline semaphores. Fixes: 88d41367b8a "radv: Add timelines with a VK_KHR_timeline_semaphore impl." Reviewed-by: Dave Airlie Tested-by: Andres Rodriguez Part-of: --- src/amd/vulkan/radv_device.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 4dac1be0495..2e9cf32aa4b 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -6143,7 +6143,16 @@ radv_SignalSemaphore(VkDevice _device, radv_timeline_trigger_waiters_locked(&part->timeline, &processing_list); pthread_mutex_unlock(&part->timeline.mutex); - return radv_process_submissions(&processing_list); + VkResult result = radv_process_submissions(&processing_list); + + /* This needs to happen after radv_process_submissions, so + * that any submitted submissions that are now unblocked get + * processed before we wake the application. This way we + * ensure that any binary semaphores that are now unblocked + * are usable by the application. */ + pthread_cond_broadcast(&device->timeline_cond); + + return result; } case RADV_SEMAPHORE_TIMELINE_SYNCOBJ: { part->timeline_syncobj.max_point = MAX2(part->timeline_syncobj.max_point, pSignalInfo->value); -- 2.30.2