Skip to content

AMD Mantle:深度测试的图形 API

    1650445204

    API、抽象和 Mantle:API 入门

    AMD 的 Mantle API 是 PC 游戏世界中一个两极分化的话题。有很多意见、大量信息、大量猜测和少数已知事实需要筛选。我们想讲述整个故事,我们想把它做好。不幸的是,如果不诉诸行业术语,几乎不可能讨论这个话题,所以让我们从头开始,列出一些定义,设置舞台,确定我们在哪里,以及我们是如何到达这里的。

    什么是 API?

    首字母缩略词 API 代表应用程序编程接口。这里的关键词是界面。API 旨在允许应用程序相互连接或通信。

    Windows 中的复制和粘贴功能就是一个很好的例子。当您将一段文本从浏览器复制到剪贴板,然后将该文本粘贴到文字处理器中时,您已经应用了 API 的强大功能。浏览器的开发人员支持 API 的复制请求(或调用),而文字处理器的程序员则支持 API 的粘贴调用。这两个程序通过 API 相互通信。

    API 的优点是软件开发人员不必为每个可能的应用程序编写特定的支持代码。如果没有 API,世界上所有的文档编辑软件都必须包含独特的代码,以便将复制和粘贴功能与世界上所有其他文档编辑软件接口。这种模式是不可能维持的。

    不足之处?API 不如针对软件之间直接通信的编码特定支持高效。便利的代价是提高硬件和处理资源的利用率。 

     好的,什么是图形 API?

    由于存在 API 以提供应用程序之间的通信接口,因此图形 API 在应用程序和图形卡驱动程序之间进行通信。

    这里的游戏名称是兼容性。游戏开发人员无需编写游戏引擎来支持与特定显卡驱动程序交互的多种路径,而是可以专注于与 API 的通信。API 然后调用图形驱动程序,该驱动程序将其指令执行到图形卡。这样,图形 API 可以被认为是操作系统和硬件之间的抽象层之一。

    如果图形 API 的目的是简单和方便,为什么会有不止一个 API?

    OpenGL 源于 1980 年代初发布的 SGI 专有的 Iris GL。出人意料的是,该公司将其作为一个名为 OpenGL(开放图形库)API 的开放标准交付使用。SGI 的竞争对手获得了访问权限,以换取分担维护和更新代码的负担。

    微软甚至在 OpenGL 架构审查委员会中占有一席之地,直到 2003 年该公司停止支持其专有的 DirectX API,该 API 现在更加丰富。目前,DirectX 用于 Windows 和 Xboxes,因此从想要充分利用可用资源的开发人员的角度来看,选择 Microsoft 的 API 很容易。

    话虽如此,John Carmack 是一位著名的坚持者,我们已经看到他证明 OpenGL 仍然可以用于运行高端 PC 游戏(如 Rage)。此外,OpenGL 很重要,因为它可以跨平台使用:Windows、Mac 和 Linux。Android、Windows Phone 和 iPhone 使用 OpenGL ES(用于嵌入式系统的 Open GL)。随着移动设备上的游戏越来越受欢迎,OpenGL 也越来越受欢迎。

    DirectX 11 和 OpenGL 有什么问题?为什么世界需要另一个图形 API?

    两个不一致的标准已经够糟糕的了。添加另一个似乎违反直觉。那么现有的 API 是如何达不到开发者期望的呢?

    DirectX 和 OpenGL 都是在上个千年创建的。在主流设备中使用多核 CPU 是一个时代。最近,一些开发人员表达了对他们臃肿、容易不稳定以及在线程良好的平台上扩展性差(或根本没有)的担忧。此外,没有任何 API 是完美的。您是否曾经必须更新图形驱动程序才能使游戏正常运行?每次发生这种情况时,图形 API 都无法发挥其抽象层的作用。

    除此之外,有传言称微软在 2013 年考虑停止 DirectX 的开发。在接受 c’t 采访时,AMD 的 Roy Taylor 表示:“新的 DirectX 一次又一次地刷新了行业,新的显卡需要更多处理器和更多内存。但是没有 DirectX 12 来。就是这样。据我们所知,没有 DirectX 12 的计划。此外,一封泄露的微软电子邮件称,跨平台 XNA Game Studio 开发平台并未在积极开发中,而且 DirectX 不再作为一项技术发展。微软后来收回了这一点,并声称这是一个错误的沟通,但由于没有公布 DirectX 12 的计划,开发者社区变得焦躁不安。

    微软 Xbox One

    索尼 Playstation 4

    AMD 声称已被推动创建一个新的 API,以解决那些对 DirectX 和 OpenGL 状态不抱幻想的开发人员的要求。此外,由于 AMD APU 和 GPU 驱动 Xbox One、PlayStation 4 和许多 PC,因此该公司处于独特的位置,可以提供可能跨多个平台使用的 API。

    与 OpenGL 和 DirectX 相比,Mantle 应该如何改进?

    Mantle 与短语“低级”和“更接近金属”相关联。但这实际上意味着什么?简单来说,答案是极简主义。它比 DirectX 11 和 OpenGL 更小、更简单,因此速度更快。据称,AMD 的新 API 对开发人员希望如何渲染给定场景做出了更少的假设。这将更多的资源控制权交给了开发人员,而不是 API,从而实现了更好的优化。

    有鉴于此,Mantle 有潜力提高效率。此外,Mantle 能够执行完全并行的绘制提交,以便将工作负载分配给多个 CPU 执行单元。如果 API 能够有效地利用更多处理资源,那么具有多个执行单元的较慢 CPU 可能不会成为瓶颈。

    简而言之,AMD 声称 Mantle 有可能提高多核主机处理器速度较慢的系统的性能。在 CPU 不是瓶颈的情况下,Mantle 甚至可以降低 GPU 功耗。  

    AMD 声称自己是开源的大力支持者。Mantle 是开源 API 吗?

    Mantle 不是开源的,AMD 也没有声称它将来会开源。该公司确实表示,一旦封闭测试程序完成,它将在 2014 年底之前向任何人提供 Mantle SDK,而无需支付许可费或限制。

    需要澄清的是,对 SDK 的访问与开源不同。但这确实意味着,理论上,Nvidia 和 Intel 可以编写与 Mantle 兼容的驱动程序。实际上,我认为这不太可能。但我会保留我对情况的分析,以便我们得出结论。关键是,AMD 希望保持对 Mantle 的控制,以针对 GCN 架构对其进行优化,并允许开发人员快速采用新的硬件功能,这对于 DirectX 和 OpenGL 等通用 API 是不实用的。

    好吧,我想我已经掌握了 Mantle 的基础知识。现在怎么办?

    好吧,我们想对 Mantle 进行测试,看看它到底能做什么。尽管 AMD 承诺许多开发人员正在为即将推出的游戏如《文明:超越地球》、《星际公民》和《龙腾世纪:宗教裁判所》提供 Mantle 支持,但在撰写本文时,目前市场上只有三款游戏支持 AMD 的 API :战地 4、小偷和植物大战僵尸:花园战。由于《植物大战僵尸:花园战争》没有 Mantle 基准测试功能,而且它使用与《战地 4》相同的 Frostbite 引擎,我们将专注于前两个支持 Mantle 的游戏。

    Tags:
    0 0 votes
    Rating post
    Subscribe
    Notify of
    guest
    0 comments
    Inline Feedbacks
    View all comments
    0
    Would love your thoughts, please comment.x
    ()
    x