【问题标题】:Vulkan: serializing physical devicesVulkan:序列化物理设备
【发布时间】:2017-09-12 13:54:05
【问题描述】:

假设我有更多支持 Vulkan 的物理设备(专用 + 集成 GPU,或 2 个专用,或其他可能性)。用户可以在选项屏幕中选择要使用的设备。我需要能够将他的选择保存在磁盘上。

我可以使用什么字段在不同的执行过程中唯一标识物理设备?

  • vendorID + deviceID 还不够:我可以连接 2 个相同的 GPU
  • 出于同样的原因,deviceName 还不够
  • deviceLUID 不保证存在,可能和deviceUUID 有同样的问题(下)
  • deviceUUID 看起来是正确的选择,但规范说:

    虽然VkPhysicalDeviceIDPropertiesKHR::deviceUUID 被指定为在驱动程序版本和系统重新启动之间保持一致,但它并不能用作设备的可序列化持久标识符。当系统断电时,在系统中将设备物理添加、移除或移动到其他连接器时,它可能会发生变化。

那么...我应该使用什么?

【问题讨论】:

    标签: vulkan


    【解决方案1】:

    deviceUUID 是您将得到的最好的。

    这样想。如果deviceUUID 匹配缓存副本,那么您确定它是同一设备。如果缓存的 ID 与 任何 现有设备不匹配,那么要么该硬件已被移除,要么发生了一些根本性的事情。无论哪种方式,您都需要再次弹出该对话框以让用户决定要做什么。

    【讨论】:

    • 所以您是说设备没有明确绑定到 uuid(正如我从规范中引用的那样),而是 uuid 明确绑定到设备。也就是说,如果我更改配置,一些gpus可能会得到一个新的uuid,但其中一个的旧uuid不会被另一个占用。在这种情况下,deviceUUID 就足够了。
    • 既然叫“万能独一无二”,那它就应该是“万能独一无二”。
    猜你喜欢
    • 2017-09-16
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多