我可以同时从多个线程使用 VkDevice 吗?

lve*_*lla 3 vulkan

特别是,我可以同时创建管道、分配设备内存并从同一 VkDevice 创建图像和缓冲区吗?

规格中的哪里指定了这一点?

Ekz*_*uzy 8

在规范中我们可以读到:

Vulkan 旨在在多个主机线程上使用时提供可扩展的性能。所有命令都支持从多个线程并发调用,但某些参数或参数的组成部分被定义为外部同步。这意味着调用者必须保证在给定时间没有超过一个线程使用此类参数。

然后是不同 Vulkan 函数的参数列表,其中它们必须进行外部同步(这意味着它们不能同时从多个线程访问)。对于 aVkDevice对象,我们只能找到vkDestroyDevice(). 因此VkDevice对象的所有其他使用都可以发生在多个线程上。

该列表中实际上没有任何vkCreate...()函数(只有 3 个与交换链相关的函数)。这意味着您可以同时从多个线程创建对象。