VkDeviceQueueCreateInfo 中的 queueCount 的用途是什么?

What is the purpose of queueCount inside VkDeviceQueueCreateInfo?

https://www.khronos.org/registry/vulkan/specs/1.0/man/html/VkDeviceQueueCreateInfo.html

我目前在做什么:

查找具有支持图形和表面的队列的设备。

然后我找到 graphicsQueuesurfaceQueue 的索引。就我而言,它们是相同的,但我认为它们也可以不同。

现在我一直将 queueCount 设置为 1,到目前为止我没有 运行 遇到任何问题,但我可能应该将 queueCount 设置为 [=14] =].

但现在我想知道它到底做了什么? queueCount 越高表示性能越好吗?

不,这与性能无关。 QueueCount(用于队列创建)是您要使用所选队列系列索引调用创建的队列数。

所以如果你想要创建 4 个计算队列,您可以通过一次调用 vkGetDeviceQueue 来同时创建它们,方法是选择一个支持计算的(队列)系列索引并将 queueCount 设置为 4。提供多个队列系列的设备示例 can be found here.

这是您要使用的那个系列的队列数。队列系列是一组可以做同样事情的队列。

不允许将 queueCount 设置为 0:

Valid usage [of VkDeviceQueueCreateInfo]

  • queueCount must be greater than 0

之后您从该系列的 vkGetDeviceQueue 获得了一个正常运行的队列是未定义行为的结果。它也可能使您的程序崩溃。

Valid usage [of vkGetDeviceQueue]

  • queueIndex must be less than the number of queues created for the specified queue family index when device was created, via the queueCount member of the VkDeviceQueueCreateInfo structure