Mantle (API)

Mantleは、3Dゲームを対象としたローレベルレンダリングAPIである。アドバンスト・マイクロ・デバイセズ（AMD）が、EA Digital Illusions CE（DICE）と共同で2013年より開発を開始した。Direct3DおよびOpenGLを代替するものとして設計され、主としてパーソナルコンピュータ向けであるが、PlayStation 4とXbox Oneに搭載されているGPU (APU) もサポートする。

AMDによると、DirectX 12 (Direct3D 12) もしくはクロノス・グループによるMantle派生のVulkan APIによってMantle 1.0の置換が可能であることから、Mantle自体は2015年3月以降、別の領域にフォーカスをシフトするとされている［GDC 2015］AMD独自API「Mantle“1.0”」が事実上の終了。AMDはDirectX 12と次世代OpenGLの利用を呼びかけ - 4Gamer.net。2015年3月までの2年間は、デバイスドライバーによるサポートが行われていたものの、Mantle API仕様自体は一般公開されていなかった。

 概要 
Mantleが開発された背景には、従来からPC向けのリアルタイム3次元コンピュータグラフィックスAPIとして利用されてきたDirect3DおよびOpenGLは、コンソール（ゲーム専用機）環境とは違って抽象化・共通化・標準化が重視されるためにAPIコールのオーバーヘッドが大きく、またレンダリングにマルチコアCPUを最大限活用することができないといった問題を抱えていたことが挙げられるAMDがグラフィックスAPI「Mantle」を発表。次世代機を制したAMDによる「ゲーム開発者囲い込み＆NVIDIA排除システム」の正体に迫る - 4Gamer.net。これらの問題は特にAAAタイトルのゲームソフトウェアのように厳しい最適化が要求されるケースで大きな悪影響をもたらす。

Mantleにおけるドローコールの改良により、CPUがボトルネックとなっているケースが緩和されるAMD’s Revolutionary Mantle。Mantleの設計目標は、ゲームおよびアプリケーションがCPUとGPUを効果的に利用すること、APIによるコマンドの評価・検証 (Validation) のオーバーヘッドを減らし、マルチコアCPUでのスケーラビリティを向上させることでCPUのボトルネックを取り除くこと、より高速な描画ルーチンを提供すること、そしてDirect3DやOpenGLが有するハードウェア抽象化の一部を取り除くことで、より詳細なグラフィックスパイプラインの制御を可能にすることである。

なお、Mantleはハードウェア制御のいくつかをAPIからアプリケーション側に移すことで、アプリケーション開発者による詳細かつ直接的なハードウェア制御を可能にする反面、Direct3D/OpenGLのように高度に抽象化されたAPIを利用する場合と比較して開発工数が増加する可能性が存在することから、ゲームアプリケーション開発者用というよりはむしろゲームエンジン(ライブラリ)開発者用との指摘もなされている。

Mantleの登場後、ローレベルを指向した新世代のグラフィックスAPIとして、AppleのMetal、マイクロソフトのDirectX 12、そしてKhronosのVulkanが次々に発表された。DirectX 12に関してはMantleに触発されて開発が始まったことが示唆されており【後藤弘茂のWeekly海外ニュース】GPUの進化に対応したMicrosoftの次世代API「DirectX 12」の背景 - PC Watch、またVulkanに関してもやはりMantleを要素技術として取り込んだことが発表されており［GDC 2015］Khronos，新世代グラフィックスAPI「Vulkan」でAMDの「Mantle」を採用 - 4Gamer.net【後藤弘茂のWeekly海外ニュース】Khronosの次期グラフィックスAPI「Vulkan」 - PC Watch、Mantleは新世代のローレベルAPIの先駆者となる役割を果たした。

 CPUが制約要因になっているシナリオ 
基本的な実装の背景として、MantleはCPUが制約要因となっているようなシナリオにおいてパフォーマンスを改善するために設計された。
 APIコマンドの評価 (Validation) および処理におけるオーバーヘッド軽減
 コマンドバッファの明示的な制御
 マルチコアCPUの稼働率向上によるパフォーマンスの上昇
 実行時のシェーダーコンパイルオーバーヘッドの低減
 AMDの主張では、他のPC用APIと比較して9倍ものユニークドローコール
 8コアまでのCPUによる、マルチスレッド並列レンダリングのサポート

 GPUが制約要因になっているシナリオ 
Mantleはまた、高解像度かつ「最高レベルの詳細」設定が使われるような状況を改善するために設計された。とはいえ、これらの設定はGPUの計算資源に負荷をかけるため、API層での改善は難しい。MantleはGPUバウンドなシナリオにおけるパフォーマンスを改善するために下記のような組み込み機能を提供するが、改善率はゲームエンジンがMantleの機能および最適化をどの程度利用しているかに大きく依存する。
 コマンドバッファへの送信の削減
 リソースの圧縮、展開、同期の制御
 非同期DMAキューによる、グラフィックスエンジンから独立したデータの送信
 非同期演算キューによる、演算とグラフィックスのオーバーラップ処理
 バッファ、画像への柔軟なアクセスを可能とするデータフォーマットの最適化
 MSAA/EQAA最適化のための先進的なアンチエイリアス機能
 マルチGPUのネイティブサポート

 ベンチマーク 
 Direct3D 11よりも高い効率を発揮した。
 バトルフィールド4では、性能の向上が見られたMantle版Battlefield 4を試す。APU＋GPU構成時に衝撃的な性能向上を確認 - 4Gamer.net。デモである「Star Swarm」では、AMD A10-7700KとAMD Radeon R9 290Xを使用した場合に、1080pで319%向上した結果が残されている。

 サポート 
Microsoft Windows用のドライバー「AMD Catalyst」でのみサポートされる。対象となるハードウェアは、GCN（Graphics Core Next）アーキテクチャを採用したAPUおよびグラフィックスカードに限定される。下記に一例を示す。
 グラフィックスカード
 Radeon HD 7000シリーズの一部
 Radeon HD 8000シリーズの一部
 Radeon R7 200シリーズの一部
 Radeon R9 200シリーズの一部
 Radeon R7 300シリーズ
 Radeon R9 300シリーズ
 APU
 Steamrollerベースの"Kaveri"
 Jaguarベースの"Kabini"および"Temash"
 Pumaベースの"Beema"および"Mullins"

 関連項目 
 Vulkan – Mantleを要素技術として取り込んだ、クロノス・グループによるローレベルグラフィックスAPI
 バトルフィールド4

 外部リンク 
 Mantle Programming Guide and API Reference

 出典 

Category:アドバンスト・マイクロ・デバイセズ
Category:ライブラリ (プログラミング)
Category:API