Understanding Vulkan Synchronization (and VK_KHR_synchronization2)

Started by JeGX, April 07, 2021, 08:07:17 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.


Graphics developers with a history of using DirectX and OpenGL may feel familiar with many aspects of low-level GPU APIs such as Vulkan. But as we explore how to get the highest performance from Vulkan, it becomes apparent how many aspects of driving the GPU that DirectX and OpenGL drivers have been handling behind the scenes that we now get to control explicitly.

For example, Vulkan enables developers to take more explicit control over the coordination of graphics tasks and memory management in their applications. These are development tasks any C/C++ developer should be able to handle, though it may have a bit of a learning curve — or may just require dusting off some skills that haven't been used in a while.

The goal of this article is to help developers easily understand and not be intimidated or confused by one of the toughest aspects of Vulkan: Synchronization. We'll go through individual concepts important to synchronization and demonstrate how to use them correctly and effectively.

Synchronization is a critical but often misunderstood part of the Vulkan API. The new VK_KHR_synchronization2 extension includes several improvements to make Vulkan Synchronization easier to use, without major changes to the fundamental concepts described below.

We'll highlight key differences introduced with Synchronization2 throughout the blog.

- https://www.khronos.org/blog/understanding-vulkan-synchronization