微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VkDeviceQueueCreateInfo::pQueuePriorities 可以为空吗?

如何解决VkDeviceQueueCreateInfo::pQueuePriorities 可以为空吗?

来自官方 Vulkan 编程指南:

pQueuePriorities 字段是一个可选的指向数组的指针 表示工作相对优先级的浮点值 提交到每个队列。这些数字是归一化的数字 在 0.0 到 1.0 的范围内。具有更高优先级的队列可能是 分配更多的处理资源或更积极地安排 比具有较低优先级的队列。将 pQueuePriorities 设置为 nullptr 具有离开队列相同的效果认优先级

但是,当我启用 VK_LAYER_KHRONOS_validation 层时,我收到以下错误

VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter(ERROR / SPEC): msgNum:-690544442 - 验证错误:[ VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter ] 对象 0: VK_NULL_HANDLE,type = VK_OBJECT_TYPE_DEVICE; |消息 ID = 0xd6d720c6 | vkCreateDevice:必需参数 pCreateInfo->pQueueCreateInfos[0].pQueuePriorities 指定为 NULL。 Vulkan 规范指出: pQueuePriorities 必须是指向 queueCount 浮点值数组 (https://vulkan.lunarg.com/doc/view/1.2.176.1/linux/1.2-extensions/vkspec.html#VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter)

我应该将该错误视为警告吗?还是书错了?

解决方法

现代 Vulkan 验证层的好处在于它们直接引用了与之相关的验证规则。它们的引用是可搜索的,因为每个验证规则都有一个唯一名称。因此,如果您在 Vulkan 规范中搜索“VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter”,you'll find exactly one match

pQueuePriorities 必须是指向 queueCount 浮点值数组的有效指针

当然,下面的那个说:

queueCount 必须大于 0

所以这是书中的一个错误。我什至检查了旧的 Vulkan 1.0.10 规范(我拥有的最旧的规范)以确保是的,这个参数总是需要提供。也许在发布前它是可选的,但我不知道它是可选的发布版本。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。