Vulkan Synchronization
General mental model of Vulkan Synchronization:
- Queues run independently from each other
- Command buffers submitted to one queue run in a specific order
- Unless an order is enforced by barriers/renderpass/sync primitives, commands (in a command buffer) may be executed in parallel and out of order 1 As a result
- we need
VkSemaphore
to handle synchronization between queues - The rule 2 only specify the start time of each time. It does not specify which command will end first. Nor does it deal with dependencies
Primitives
- fences
- binary semaphores
- timeline semaphores
- pipeline barriers
- events