API、抽象化、そしてマントル:API入門
AMDのMantle APIは、PCゲーミング界で賛否両論の分かれる話題です。様々な意見、膨大な情報、様々な憶測が飛び交い、既知の事実も精査が必要です。私たちは、この話題の全体像を、そして正しくお伝えしたいと考えています。残念ながら、業界用語を使わずにこの話題を議論することはほぼ不可能です。そこで、まずは最初から、いくつかの定義を示し、状況を把握し、これまでの経緯と、これまでの経緯を整理していきましょう。
APIとは何ですか?
APIは「アプリケーション・プログラミング・インターフェース」の略です。ここでのキーワードは「インターフェース」です。APIは、アプリケーション同士が相互に連携、つまり通信できるように設計されているものです。
その好例が、Windowsのコピー&ペースト機能です。ブラウザからテキストの段落をクリップボードにコピーし、そのテキストをワードプロセッサに貼り付ける際、APIの力を活用していることになります。ブラウザの開発者はAPIのコピーリクエスト(呼び出し)のサポートを組み込み、ワードプロセッサのプログラマはAPIの貼り付け呼び出しのサポートを組み込みました。これら2つのプログラムはAPIを介して相互に通信します。
APIの利点は、ソフトウェア開発者があらゆるアプリケーションに対応するために特別なコードを記述する必要がないことです。APIがなければ、世界中のあらゆるドキュメント編集ソフトウェアは、コピー&ペースト機能など、他のあらゆるドキュメント編集ソフトウェアと連携するために、それぞれ独自のコードを実装する必要がありました。そのようなモデルを維持することは不可能でしょう。
欠点は?APIは、ソフトウェア間の直接通信を個別にサポートするコーディングほど効率的ではないということです。利便性の代償として、ハードウェアと処理リソースの使用率が増加します。
さて、グラフィックス API とは何でしょうか?
API はアプリケーション間の通信インターフェイスを提供するために存在するため、グラフィックス API はアプリケーションとグラフィックス カード ドライバー間で通信を行います。
ここで重要なのは互換性です。ゲーム開発者は、特定のグラフィックカードドライバーとのインターフェースを複数のパスでサポートするゲームエンジンをコーディングする代わりに、APIとの通信に集中できます。APIはグラフィックドライバーを呼び出し、ドライバーはグラフィックカードへの指示を実行します。このように、グラフィックAPIはOSとハードウェア間の抽象化レイヤーの一つと考えることができます。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
グラフィックス API の目的がシンプルさと利便性であるなら、なぜ複数の API が存在するのでしょうか?
OpenGLのルーツは、1980年代初頭にリリースされたSGI独自のIris GLにあります。同社は驚くべきことに、これをOpenGL(Open Graphics Library)APIと呼ばれるオープンスタンダードとして公開しました。SGIの競合他社は、コードの保守と更新の負担を分担する代わりに、OpenGLへのアクセスを許可されました。
マイクロソフトは2003年までOpenGLアーキテクチャレビュー委員会に所属していましたが、その後、より普及している独自のDirectX APIを採用するためにサポートを中止しました。現在、DirectXはWindowsとXboxで使用されているため、利用可能なリソースを最大限に活用したい開発者の立場からすれば、マイクロソフトのAPIを選択することは容易に正当化できます。
とはいえ、ジョン・カーマックはOpenGLがハイエンドPCゲーム(Rageなど)の実行に依然として使用可能であることを証明した、有名なホールドアウト(抵抗勢力)です。さらに、OpenGLはWindows、Mac、Linuxといったプラットフォーム間で使用できるという点でも重要です。Android、Windows Phone、iPhoneはOpenGL ES(Open GL for Embedded Systems)を使用しています。モバイルデバイスでのゲームが普及するにつれ、OpenGLも普及しています。
DirectX 11 と OpenGL の何が問題なのでしょうか? なぜ世界には新たなグラフィック API が必要なのでしょうか?
二つの標準が矛盾しているだけでも十分問題なのに、さらに別の標準を追加するのは直感に反するように思えます。では、既存のAPIはどのようにして開発者の期待に応えられていないのでしょうか?
DirectXとOpenGLはどちらも前世紀に開発されました。当時は、主流のデバイスにマルチコアCPUが搭載される可能性は未だにありませんでした。最近、一部の開発者から、これらのAPIは肥大化しやすく、不安定になりやすく、スレッド化が進んだプラットフォームではスケーリングが不十分(あるいは全くスケーリングできない)という懸念が表明されています。さらに、完璧なAPIなど存在しません。ゲームを正常に動作させるためにグラフィックドライバーを更新しなければならなかった経験はありませんか?このような事態が発生するたびに、グラフィックAPIは抽象化レイヤーとしての役割を果たせていないのです。
これに加えて、Microsoftが2013年にDirectXの開発中止を検討していたという噂もありました。c'tとのインタビューで、AMDのRoy Taylor氏は「新しいDirectXは何度も業界を刷新し、新しいグラフィックカードにはより多くのプロセッサとRAMが必要です。しかし、DirectX 12は登場しません。それだけです。私たちが知る限り、DirectX 12の計画はありません」と発言しました。さらに、漏洩したMicrosoftの電子メールには、クロスプラットフォームのXNA Game Studio開発プラットフォームは活発に開発されておらず、DirectXはもはや技術として進化していないと書かれていました。Microsoftは後にこれを撤回し、誤解だったと主張しましたが、DirectX 12の計画が公開されていないため、開発者コミュニティは不安を募らせていました。
マイクロソフト Xbox One
ソニー プレイステーション 4
AMDは、DirectXとOpenGLの現状に不満を抱く開発者の要請を受け、これらの問題に対処する新しいAPIの開発に着手したと主張しています。さらに、AMDのAPUとGPUはXbox One、PlayStation 4、そして多くのPCで採用されているため、複数のプラットフォームで活用できる可能性のあるAPIを提供できる独自の立場にあります。
Mantle は OpenGL や DirectX と比べてどのように改善されるのでしょうか?
Mantleは「低レベル」や「よりハードウェアに近い」といった言葉と結び付けられます。しかし、これは実際には何を意味するのでしょうか?簡単に言えば、ミニマリズムです。DirectX 11やOpenGLよりも小さく、シンプルで、結果として高速です。AMDの新しいAPIは、開発者が特定のシーンをどのようにレンダリングしたいかについての前提を少なくしていると言われています。これにより、APIではなく開発者がリソースをより細かく制御できるようになり、より優れた最適化が可能になります。
この観点から見ると、Mantleはより効率的になる可能性があります。さらに、Mantleは完全に並列化された描画送信を実行することで、複数のCPU実行ユニットにワークロードを分割できます。APIがより多くの処理リソースを効果的に活用できれば、複数の実行ユニットを持つ低速CPUのボトルネックが軽減される可能性があります。
簡単に言えば、AMDはMantleが低速なマルチコアホストプロセッサを搭載したシステムのパフォーマンスを向上させる可能性があると主張しています。CPUがボトルネックになっていない場合、MantleはGPUの消費電力をさらに削減する可能性があります。
AMDはオープンソースを強く支持していると主張しています。MantleはオープンソースAPIですか?
Mantleはオープンソースではなく、AMDも将来的にオープンソースになると主張していません。ただし、AMDは、クローズドベータプログラムが完了した後、2014年末までにMantle SDKをライセンス料や制限なしで誰でも利用できるようにすることを発表しています。
念のため、SDKへのアクセスはオープンソースと同じではありません。しかし、理論上はNvidiaとIntelがMantle互換のドライバを開発できることを意味します。現実的には、これはあり得ないと考えています。しかし、状況分析は結論まで保留しておきます。重要なのは、AMDがMantleの管理権を維持したいのは、GCNアーキテクチャ向けに最適化し、開発者が新しいハードウェア機能を迅速に導入できるようにするためです。これは、DirectXやOpenGLのような汎用APIでは現実的ではありません。
よし、Mantleの基本は理解できたと思う。次は何をすればいい?
さて、Mantleを実際に試して、何ができるのかを確かめてみたいと思います。AMDは、Civilization: Beyond Earth、Star Citizen、Dragon Age: Inquisitionといった今後のタイトルで多くの開発者がMantle対応に取り組んでいると約束していますが、本稿執筆時点では、AMDのAPIに対応しているゲームはBattlefield 4、Thief、Plants vs. Zombies: Garden Warfareの3つしかありません。Plants vs. Zombies: Garden WarfareにはMantleベンチマーク機能がなく、Battlefield 4と同じFrostbiteエンジンを使用しているため、ここではMantle対応の最初の2つのタイトルに焦点を当てます。
現在のページ: API、抽象化、Mantle: API 入門
次のページ AMDのMantle APIのテスト方法
ドン・ウォリグロスキーは、Tom's Hardwareの元シニアハードウェアエディターです。CPU、GPU、システム構築、新興技術など、PCハードウェアに関する幅広いトピックをカバーしています。