An important part of working with Vulkan and other modern explicit rendering APIs is the synchronization of GPU/GPU and CPU/GPU workloads. In this article we will learn about what Vulkan needs us to synchronize and how to achieve it. We will talk about two high-level parts of the synchronization domain that we, as application and library developers, are responsible for:

  • GPU↔GPU synchronization to ensure that certain GPU operations do not occur out of order,
  • CPU↔GPU synchronization to ensure that we maintain a certain level of latency and resource usage in our applications.