Synchronisation in PVRVk (and Vulkan in general)

Vulkan provides three different types of objects for synchronisation

The Vulkan API, and therefore PVRVk, has a detailed synchronisation scheme.

There are three important synchronisation objects: the semaphore, the fence and the event.

  • The semaphore is responsible for coarse-grained syncing of GPU operations, usually between queue submissions and/or presentation.
  • The fence is required to wait on GPU events on the CPU such as submissions, presentation image acquisitions, and some other cases.
  • The event is used for fine-grained control of the GPU from either the CPU or the GPU. It can also be used as part of layout transitions and dependencies.