Vulkan is intended to provide scalable performance when used on multiple host threads.
Vulkan的目的是当使用多线程时可以提供可观的性能。
All commands support being called concurrently from multiple threads, but certain parameters, or components of parameters are defined to be externally synchronized.
This means that the caller must guarantee that no more than one thread is using such a parameter at a given time. More precisely, Vulkan commands use simple stores to update the state of Vulkan objects. A parameter declared as externally synchronized may have its contents updated at any time during the host execution of the command. If two commands operate on the same object and at least one of the commands declares the object to be externally synchronized, then the caller must guarantee not only that the commands do not execute simultaneously, but also that the two commands are separated by an appropriate memory barrier (if needed).