为何vkGetPhysicalDeviceQueueFamilyProperties无返回值?同类Vulkan接口差异解析
为什么vkGetPhysicalDeviceQueueFamilyProperties不返回VkResult?
Vulkan里多数查询数组的函数都会返回VkResult,毕竟这类操作可能碰到各种问题——比如输入的对象无效、内存分配出问题,或是枚举过程中出异常。但vkGetPhysicalDeviceQueueFamilyProperties是个特例,核心原因有两个:
- 输入的合法性有前置保障:这个函数要求传入的
physicalDevice必须是通过合法流程(比如vkEnumeratePhysicalDevices枚举)拿到的有效物理设备句柄。只要你按规范走,这个句柄就不可能无效,自然不会出现输入错误导致的失败。 - 查询的是设备固有属性:队列族属性是物理设备自带的硬件固定信息,调用这个函数只是读取这些现成的数据,不会涉及任何可能失败的操作(比如内存分配、设备状态变更)。只要设备有效,不管什么时候调用,都能顺利拿到结果,不存在运行时失败的场景。
既然这个函数根本没有可能失败的路径,Vulkan设计时就没必要让它返回VkResult,直接通过输出参数返回查询结果就行。
内容的提问来源于stack exchange,提问作者James Nguyen
相关产品推荐
相关产品推荐

