队列 Queue
指令运行的场所。
同一队列的指令按顺序执行。不同队列的指令不保证顺序,除非使用同步原语 (如 Semaphore
)
一个队列可以运行一种或多种指令:
队列类型 | 命令类型 | 开始命令 |
---|---|---|
Graphics | Graphics Pipeline Commands | vkCmdDraw* |
Compute | Compute Pipeline Commands | vkCmdDispath |
Transfer | Transfer/Copy Commands | vkCmdCopy |
Sparse Binding | change the binding of sparse resources to memory | vkQueueBindSparse |
一般最老的支持 Vulkan API 的设备也会有至少一个同时有以上四种能力的队列。
一个队列一次只能有一个线程提交。但是每个队列的提交可以同时进行。
队列簇 Queue Family
一个队列簇包含具有同样指令能力的多个队列。(类似于队列是实例,队列簇是类)