Mantle (API)
From Wikipedia, the free encyclopedia
|
| |
| 開発元 | AMD、DICE[1] |
|---|---|
| 最新版 |
1.0
|
| 対応OS | Windows、Linux(予告)[2][3] |
| プラットフォーム | x86 and x64 |
| サポート状況 | Beta[要出典] |
| 種別 | レンダリングAPI |
| ライセンス | プロプライエタリソフトウェア、フリーウェア |
| 公式サイト | amd.com |
Mantleは、3Dゲームを対象としたローレベルレンダリングAPI[4]である。アドバンスト・マイクロ・デバイセズ(AMD)が、EA Digital Illusions CE(DICE)と共同で2013年より開発を開始した[1]。Direct3DおよびOpenGLを代替するものとして設計され、主としてパーソナルコンピュータ向けであるが、PlayStation 4とXbox Oneに搭載されているGPU (APU) もサポートする[1][5]。
AMDによると、DirectX 12 (Direct3D 12) もしくはクロノス・グループによるMantle派生[6]のVulkan APIによってMantle 1.0の置換が可能であることから、Mantle自体は2015年3月以降、別の領域にフォーカスをシフトするとされている[7][8]。2015年3月までの2年間は、デバイスドライバーによるサポートが行われていたものの、Mantle API仕様自体は一般公開されていなかった[9]。
CPUが制約要因になっているシナリオ
Mantleが開発された背景には、従来からPC向けのリアルタイム3次元コンピュータグラフィックスAPIとして利用されてきたDirect3DおよびOpenGLは、コンソール(ゲーム専用機)環境とは違って抽象化・共通化・標準化が重視されるためにAPIコールのオーバーヘッドが大きく、またレンダリングにマルチコアCPUを最大限活用することができないといった問題を抱えていたことが挙げられる[10]。これらの問題は特にAAAタイトルのゲームソフトウェアのように厳しい最適化が要求されるケースで大きな悪影響をもたらす。
Mantleにおけるドローコールの改良により、CPUがボトルネックとなっているケースが緩和される[11][12][13]。Mantleの設計目標は、ゲームおよびアプリケーションがCPUとGPUを効果的に利用すること、APIによるコマンドの評価・検証 (Validation) のオーバーヘッドを減らし、マルチコアCPUでのスケーラビリティを向上させることでCPUのボトルネックを取り除くこと、より高速な描画ルーチンを提供すること、そしてDirect3DやOpenGLが有するハードウェア抽象化の一部を取り除くことで、より詳細なグラフィックスパイプラインの制御を可能にすることである[14][15]。
なお、Mantleはハードウェア制御のいくつかをAPIからアプリケーション側に移すことで、アプリケーション開発者による詳細かつ直接的なハードウェア制御を可能にする反面、Direct3D/OpenGLのように高度に抽象化されたAPIを利用する場合と比較して開発工数が増加する可能性が存在することから、ゲームアプリケーション開発者用というよりはむしろゲームエンジン(ライブラリ)開発者用との指摘もなされている[13]。
Mantleの登場後、ローレベルを指向した新世代のグラフィックスAPIとして、AppleのMetal、マイクロソフトのDirectX 12、そしてKhronosのVulkanが次々に発表された。DirectX 12に関してはMantleに触発されて開発が始まったことが示唆されており[16]、またVulkanに関してもやはりMantleを要素技術として取り込んだことが発表されており[17][18]、Mantleは新世代のローレベルAPIの先駆者となる役割を果たした。
基本的な実装の背景として、MantleはCPUが制約要因となっているようなシナリオにおいてパフォーマンスを改善するために設計された。
- APIコマンドの評価 (Validation) および処理におけるオーバーヘッド軽減[19][20]
- コマンドバッファの明示的な制御[19]
- マルチコアCPUの稼働率向上によるパフォーマンスの上昇[15]
- 実行時のシェーダーコンパイルオーバーヘッドの低減[19]
- AMDの主張では、他のPC用APIと比較して9倍ものユニークドローコール[21]
- 8コアまでのCPUによる、マルチスレッド並列レンダリングのサポート[22]
GPUが制約要因になっているシナリオ
Mantleはまた、高解像度かつ「最高レベルの詳細」設定が使われるような状況を改善するために設計された。とはいえ、これらの設定はGPUの計算資源に負荷をかけるため、API層での改善は難しい。MantleはGPUバウンドなシナリオにおけるパフォーマンスを改善するために下記のような組み込み機能を提供するが、改善率はゲームエンジンがMantleの機能および最適化をどの程度利用しているかに大きく依存する。
- コマンドバッファへの送信の削減
- リソースの圧縮、展開、同期の制御
- 非同期DMAキューによる、グラフィックスエンジンから独立したデータの送信
- 非同期演算キューによる、演算とグラフィックスのオーバーラップ処理
- バッファ、画像への柔軟なアクセスを可能とするデータフォーマットの最適化
- MSAA/EQAA最適化のための先進的なアンチエイリアス機能[4][19]
- マルチGPUのネイティブサポート[4][23][24]
ベンチマーク
サポート
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"