vulkan同步机制之——Fence & Barriers

vulkan提供了四个基本的同步机制:

• Fences


• Semaphores


• Events


• Barriers


Fence的作用是对两个有依赖关系的的command 的执行进行控制,比如一个计算: (1)B = D + C; (2) res = A * B, 在计算 res时,必须要先保证B合法的求解完毕,fence的作用正是保证在(1)求解完之前(2)不会求解


Barriers 的名称很好的描述了barries的作用,barriers是控制一系列的执行和读写命令的同步的,比如(1)B = C + D + E + F + ……+ X,其中每一个加数都要计算出来,这时候就使用barriers保证每一个加数都计算出来之后(1)过程才开始执行


fence 的使用:

VkResult vkQueueSubmit(
VkQueue queue,
uint32_t submitCount,
const VkSubmitInfo* pSubmits,
VkFence fence);
如果fence不是VK_NULL_HANDLE,在VkSubmitInfo::pCommandBuffers 中record的所有command执行完之后,fence就会成为:signaled。 当submitted的command为0时,在submitted的前期工作做完后,fence仍会变成singled



你可能感兴趣的:(vulkan,同步机制,synchronization,vulkan,fence,barriers)