vulkan - 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,类型 = 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-参数)
我应该将该错误视为警告吗?还是这本书错了?
解决方案
现代 Vulkan 验证层的好处在于它们直接引用了与之相关的验证规则。并且它们的引用是可搜索的,因为每个验证规则都有一个唯一的名称。因此,如果您在 Vulkan 规范中搜索“VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter”,您将找到一个匹配项:
pQueuePriorities
必须queueCount
是指向浮点值数组的有效指针
当然,下面的那个说:
queueCount
必须大于 0
所以这是书中的错误。我什至检查了旧的 Vulkan 1.0.10 规范(我拥有的最古老的规范),以确保是的,始终需要提供此参数。也许在发布前它是可选的,但我不知道它是可选的发布版本。
推荐阅读
- angular - 旧 Angular 2 项目 - 成功的生产构建有 javascript 运行时错误
- javascript - 如何将文件限制为仅在 Angular 文件上传中编码的 UTF-8?
- css - 桌子内的时间选择器
- ios - 将表格视图单元格中的集合视图单元格滚动到特定的索引位置
- vue.js - 如果直接获取/设置值,为什么我应该使用 getter 和 mutation?
- sql - 非互斥案例陈述
- c# - 由于双括号而无法转换代码
- javascript - 无限滚动获取更多
- c - 通过函数创建管道
- javascript - Node.js/GitHub API - 使用 github-api 在存储库中提交图像文件