Since I encountered a lot of synchronization problems with vk::Semaphore (see below),
I decided to remove all vk::Semaphore and to wait depending jobs at CPU side with vk::Fence (59ce7c9).
This is inefficient, so that in future we should try reimplement vk::Semaphore.
VUID-vkDestroySemaphore-semaphore-01137(ERROR / SPEC): msgNum: -1588160456 - Validation Error: [ VUID-vkDestroySemaphore-semaphore-01137 ] Object 0: handle = 0x557e1e793930, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xa1569838 | Cannot call vkDestroySemaphore on VkSemaphore 0xab64de0000000020[] that is currently in use by a command buffer. The Vulkan spec states: All submitted batches that refer to semaphore must have completed execution (https://vulkan.lunarg.com/doc/view/1.3.236.0/linux/1.3-extensions/vkspec.html#VUID-vkDestroySemaphore-semaphore-01137)
Objects: 1
[0] 0x557e1e793930, type: 3, name: NULL
VUID-VkSubmitInfo-pWaitSemaphores-parameter(ERROR / SPEC): msgNum: -1328048864 - Validation Error: [ VUID-VkSubmitInfo-pWaitSemaphores-parameter ] Object 0: handle = 0x557e1dc1db70, type = VK_OBJECT_TYPE_INSTANCE; | MessageID = 0xb0d79520 | Invalid VkSemaphore Object 0xba7514000000002a. The Vulkan spec states: If waitSemaphoreCount is not 0, pWaitSemaphores must be a valid pointer to an array of waitSemaphoreCount valid VkSemaphore handles (https://vulkan.lunarg.com/doc/view/1.3.236.0/linux/1.3-extensions/vkspec.html#VUID-VkSubmitInfo-pWaitSemaphores-parameter)
Objects: 1
[0] 0x557e1dc1db70, type: 1, name: NULL
Segmentation fault
Since I encountered a lot of synchronization problems with
vk::Semaphore(see below),I decided to remove all
vk::Semaphoreand to wait depending jobs at CPU side withvk::Fence(59ce7c9).This is inefficient, so that in future we should try reimplement
vk::Semaphore.