从同一个VkPhysicalDevice创建两个VkDevices是否有效?

And*_*son 0 c++ vulkan

我正在为Vulkan API编写C++包装器,所以我想确保我的文档与实际的API所说的不矛盾.

Device device1 = physical_device.Connect(device_settings);
Device device2 = physical_device.Connect(device_settings);
Run Code Online (Sandbox Code Playgroud)

即使在启用LunarG标准验证层的情况下运行,此方案仍然有效.但是,尽管不正确,但目前通过验证层还有很多东西.所以我的问题是,这样做有效吗?

Nic*_*las 5

从规范下vkCreateDevice:

可以从同一物理设备创建多个逻辑设备.

并非需要说明,因为文档的"有效用法"部分没有明确禁止它.当然,下一句话是:

由于缺少特定于设备的资源(除了其他错误),逻辑设备创建可能会失败.

所以你不能VkDevice从同一个创建无限的对象VkPhysicalDevice.如果实现不希望支持多个,则不必.