Vulkan:序列化物理设备

lod*_*odo 2 vulkan

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

我可以使用哪个字段来唯一标识跨不同执行的物理设备?

  • vendorID+ deviceID是不够的:我可以连接2个相同的GPU
  • deviceName 由于同样的原因是不够的
  • deviceLUID不保证在场,可能会遇到与deviceUUID以下相同的问题
  • deviceUUID 看起来是正确的选择,但规范说:

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

那么......我该怎么用?

Nic*_*las 5

deviceUUID 是你最好的.

这样想吧.如果deviceUUID匹配缓存副本,那么您确定它是相同的设备.如果缓存的ID与任何现有设备都不匹配,则删除该硬件或发生激进事件.无论哪种方式,您都需要再次弹出该对话框以让用户决定该怎么做.