MicrosoftがDirectX 12の情報を発表

はじめに

Microsoftが、AMD、Intel、NVIDIA、Qualcomm※1とともに、DirectX 12※2のアーキテクチャと技術情報を発表しました:

まだ開発中の仕様の現時点での技術情報とアーキテクチャ(設計思想)の公表となっていますが、実働デモもあり、順調な開発状況がうかがわれます。

DirectX 12の特徴

簡単にまとめると、現在のDirectX 11と比較して、圧倒的に低レベル(ローレベル)※3のAPIセットを新たに追加する、ということです。現状のDirectX 11までのAPIセットを使ったアプリケーションは、これまで通りのDirectX APIを使用し、DirectX 12を使用するアプリケーションは新たなDirect X APIを呼び出すというようになるわけです。※4

この新たなDirectX 12 APIでは、従来の枠組みに縛られない薄いレイヤーになると発表されています。とはいえ、Windows上に実装する以上、Windowsの都合というものを織り込む必要があるため、ゲーム機ほどの薄いレイヤーにはならないでしょう。

また、従来は1フレームごとにすべてセットアップしなおしていたのを改め、一度GPU用に変換したオブジェクトを次のフレームでも再利用できたり、マルチタスクに最適化可能になったりなど、薄いレイヤーとなることによるパフォーマンスアップだけではない工夫も盛り込まれています。

DirectX 12はMicrosoftとNVIDIA主導で設計された

ちょっと検索をしてみると、AMDがこの実装を行ったのではないか、あるいはAMDのMantleがベースとなっているのではないか、というブログ記事などを見かけることがありますが、このDirectX 12はMicrosoftとNVIDIAが主導して仕様の大枠を固めたものです。MicrosoftによるDirectX 12の発表のほかに、NVIDIAも発表を行っているのですが、そのスライドの中に「Designed in Close Collaboration Between Microsoft and NVIDIA(MicrosoftとNVIDIAによる共同作業によって設計された)」と明記されています。※5

これを裏付けるように、今回の発表で使用されたDirectX 12の実働デモはNVIDIAのGeForceによるものとなっています。現時点ではDirectX 12に関してはNVIDIAが半歩リードしている状況でしょう。もっとも、実際にDirectX 12をリリースする時点ではAMD、Intel、NVIDIA、Qualcommの足並みはそろうはずです。

AMDのMantleは、このMicrosoftとNVIDIAによる新たなDirectXを設計するという動きを推進させるための触媒になったと思われます。しかし、このようにプラットフォーム標準のAPIが用意されてしまうと、AMDのMantleの立ち位置は微妙なものとなり、結果としてしばらくすると事実上消えてしまうのではないかと思われます。※6

MicrosoftとNVIDIAの共同作業によって設計された仕様に、AMD、Intel、Qualcommそれぞれが盛り込みたい仕様をこれから入れていくことになるので、AMD Mantleに入っている要素も取り込まれていくでしょう。しかし、設計者が異なる関係上、完全にAMD Mantleとは同じような設計とならないことは確定事項といえるでしょう。

MicrosoftとNVIDIAはいつから設計していたのか?

前述の後藤弘茂さんの記事にはこんな記述があります:

一方、NVIDIAは、Mantleが発表された直後、「スタンダードAPIでも、MantleでAMDが主張しているのと同じことができる。NVIDIAはスタンダードAPIでなければ意味がないと考えている」と説明していた。NVIDIAがこう説明していたのは、その時点で、すでにDirectX 12の動きがあったからだろう。

このことから、米国時間2013年9月25日にAMDが一般向けにMantleを発表した時点で、すでにMicrosoftとNVIDIAによるDirectX 12の設計は始まっていたのだろうと考えられます。仮に少し前の9月1日からDirectX 12の策定作業が始まっていたとすると、約半年で今回の発表に至ったことになります。※7

サポート対象のOS

DirectX 11.2はWindows 8.1以降専用となっていましたが、このDirectX 12はWindows 7、Windows 8、Windows 8.1、Windows Phone(NTカーネルのもの)、Xbox Oneなど、幅広く対象とするとのことです。※8

まとめ

AMDによるMantle発表時の考察で、

MicrosoftはXbox OneでAMD独自のMantleを採用したいと思うでしょうか? Xboxの始まりはDirectX Boxです。それをAMDの独自APIに変えたいと思うか、となると、それはないんじゃないか、という気がしてなりません。

および

例えばDirect3Dの仕様をMicrosoftが更新して高速化対応をすることも理論的には可能なはずです。

と書きましたが、その通りにMicrosoftは動いたように思います。

AMDはおそらくMicrosoft(と、おそらくはSony Computer Entertainmentにも:以下同)にMantleを持ち込んで、標準とするように提案したのではないかと思われます。しかし、当然MicrosoftもベンダーロックインされたAPIを必要とはしなかったでしょう。結果としてMicrosoftはAMDではなく、代わりにNVIDIAをパートナーとしてDirectX 12の策定を急いだわけです。急ぐ理由は何かと言えば、AMDのMantleが事実上の標準となることを阻止するためでしょう。その意味で、MicrosoftとNVIDIAの利害は一致していたのではないかと思います。

DirectX 12がリリースされると思われる、2015年10月~12月までにはまだまだ時間があります。この間にAMDのMantleがどのようになっていくのか、DirectX 12が出るということで求心力が失われるのか、それでもサポートをするというベンダーが増えてくるのかといった点に大いに興味があります。個人的な予想では、MantleはAMDの一部のGPUのみをサポートする一方、DirectX 12は広範囲にサポートされるという数の原理によって失速するのではないかと考えていますが、どうなるでしょうか?


  • アルファベット順に表記しました。
  • その中のDirect3D 12のことですが、一般にDirectX≒Direct3D的な記述が非常に多いことから、本稿でもDirectX 12と記述します
  • アプリケーションプログラムやユーザーに近いほうを高レベル(ハイレベル)といい、ハードウェアに近いほうのよりプリミティブなものを低レベル(ローレベル)と表現します。
  • DirectXのAPIはCOM(Component Object Model)なので、DirectXのバージョンが変更されても従来と同じCOMオブジェクトを取得して処理を行うことができました。これがDirectX 12では異なるCOMオブジェクトを取得して処理を行うことになるようです。
  • AMDのドライバーでのサポートはある程度の期間、残り続けるかもしれません。
  • 実際にはMicrosoftにAMDがMantleを持ちかけたり、業界内で噂になった時点で両社が情報交換を兼ねて接触を持ったのが始まりだったのではないでしょうか? そう考えると、もう数か月は前かもしれません。
  • DirectX 12はDirectX 11とは別のAPIとなるため、DirectX 11.2がWindows 7にもたらされることはないでしょう。