From: Bas Nieuwenhuizen Date: Tue, 28 Jul 2020 02:14:23 +0000 (+0200) Subject: radv: Fix host->host signalling with legacy timeline semaphores. X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=commitdiff_plain;h=05b278327066304d8822eb6414a89120c816e14a;ds=sidebyside 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: --- 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);