线程
Vulkan 和 OpenGL 的一大区别是 Vulkan 不局限于单线程状态机系统。在应用程序中实现多线程之前,请务必了解 Vulkan 多线程的工作原理。
Vulkan Spec线程行为章节详细介绍了应用如何管理 Vulkan 所有的外部同步元素,Vulkan 中的多线程仅支持主机端,与设备端的交互的仍然需要正确同步。
Vulkan驱动不引入任何多线程,由应用负责管理多线程。
命令池
命令池是一个允许多线程录制命令缓冲区的系统。单个命令池必须与外部同步;它不允许多个线程同时访问。通过在每个线程中使用单独的命令池,应用程序可以并行创建多个命令缓冲区,而无需任何锁操作。
命令缓冲区可以记录在多个线程上,同时让一个相对轻量级的线程处理提交:
Khronos 的示例和教程详细展示了如何并行录制命令缓冲区。
描述符池
描述符池用于分配、释放、重置和更新描述符集。通过创建多个描述符池,应用的每个线程能同时管理各自描述符池中的描述符集。