2

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

我目前在做什么:

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

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

现在我一直设置queueCount为 1 并且到目前为止我没有遇到任何问题,但我可能应该设置为queueCountto VkQueueFamilyProperties.queueCount

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

4

2 回答 2

2

这是您要使用该系列的多少个队列。队列族是一组可以做同样事情的队列。

queueCount不允许设置为 0:

[VkDeviceQueueCreateInfo 的有效用法]

  • queueCount 必须大于 0

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

[vkGetDeviceQueue] 的有效用法

  • queueIndex 必须小于创建设备时为指定队列族索引创建的队列数,通过 VkDeviceQueueCreateInfo 结构的 queueCount 成员
于 2016-06-01T15:12:35.757 回答
1

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

因此,如果您想创建 4 个计算队列,您可以通过选择支持计算的(队列)族索引并将 queueCount 设置为 4 来一次调用 vkGetDeviceQueue 一次创建它们。提供多个队列族的设备示例可以在这里找到

于 2016-06-01T15:10:55.903 回答