render/vulkan: switch to timeline semaphores

Closed Simon Ser requested to merge emersion/wlroots:vk-timeline-semaphore into master

Up until now we were using a VkFence for GPU-to-CPU synchronization. This has some limitations that become a blocker when trying to have multiple command buffers in flight at once (e.g. for multi-output). It's desirable to implement a command buffer pool 1, but VkFence cannot be used to track command buffer completion for individual subpasses.

Let's just switch to timeline semaphores 2, which fix this issue, make synchronization a lot more ergonomic and are a core Vulkan 1.2 feature.

Merge request reports