【问题标题】:Multiple MTLDevice instances in MetalMetal中的多个MTLDevice实例
【发布时间】:2015-01-28 17:45:20
【问题描述】:

我们可以在 Metal 应用中声明多个设备吗?我声明了两个设备,device 和 defaultDevice。 当我使用 defaultDevice 而不是 device 时,我在“展开时发现 nil ..”行出现异常。 此外,是否有声明设备的约定。

谢谢。

【问题讨论】:

    标签: ios objective-c swift core-graphics metal


    【解决方案1】:

    按照我的理解,每个 GPU 只能有一个设备。由于您通常只有一个 GPU,因此您只能创建一个设备(请参阅 Apple Documentation)。因此,第二个设备将为空(nil)

    但我认为单个设备上可以有多个命令队列。因此没有必要创建多个设备。

    【讨论】:

      【解决方案2】:

      来自metalbyexample.com的好报价

      设备是围绕 GPU 的抽象。它提供了创建命令队列、渲染状态和库等对象的方法。稍后我们将依次逐一介绍。

      还有苹果文档中关于MTLDevice的引用:

      MTLDevice 协议定义了单个图形的接口 处理器(GPU)。您使用符合此协议的对象 查询处理器的能力并分配使用的对象 访问这些功能。

      所以我认为不可能拥有多个设备(即使在具有离散和内部图形设备的 Mac 上),因为只有一个设备会在您的屏幕上生成图像。

      【讨论】:

      • 这不是真的。您可以在具有多个 GPU 的机器上拥有多个设备,例如 Mac Pro 或 Retina Macbook Pro,因为即使是不绘图的设备也可以用于计算。 Tower Mac Pros 还可以拥有多个主动绘图 GPU。金属不仅用于绘画。在 iOS 上,目前这是一个很好的假设,但不一定是安全的假设。使用默认设备是最佳做法,但请记住在 Mac 上您经常会拥有多个设备。而且第一个不保证是正确的。
      • Colin,你对 mac 的看法是对的,但关于 iOS 标签,我认为它是关于 iOS 设备 GPU 的。据我所知,目前还没有配备多个 GPU 的 iOS 设备。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多