テストレポート
「3DMark」の新テスト「API Overhead feature test」を動かし,DX12への期待を高めてみた
というわけで,取り急ぎ動かしてみた結果をレポートしてみたい。
今回はGeForceだとDX12モードのテストは行えず
RadeonならMantle,DX12いずれも実行可能
付け加えると,DirectX 12でテストを行いたい場合,2015年3月下旬時点では,「Windows 10 Technical Preview」と,同プレビューに対応したグラフィックスドライバも必要になる。
Windows 10 Technical Preview用のDirectX 12対応グラフィックスドライバは,GeForce用の「GeForce Driver」,Radeon用の「Catalyst」とも,Windows Updateで提供される。そして,NVIDIAが公開している情報によれば,「GeForce 349.72 Driver」というドライバがDirectX 12をサポートしているとのことだったのだが,今回,筆者が用意したシステムでは,「GeForce GTX 980」リファレンスカードを差した状態だと,何度Windows Updateを繰り返してもエラーで同ドライバが適用されなかった。
ちなみに,テストに用いたWindows 10 Technical Previewのビルドは10041で,これを導入したとき最初に導入される「GeForce 347.25 Driver」では,DirectX 11のテストしか行えなかった。
一方,「Radeon R9 290X」(以下,R9 290X)のリファレンスカードを差した場合,Windows UpdateでDirectX 12対応ドライバ「15.20.1012-150227n-180971E-ATI」が何の問題もなく適用され,API Overhead feature testをDirectX 12 APIで実行することができた。なので今回はR9 290Xのみでテストを行うことになる。
なお,テストに用いたシステムは表のとおりだ。
API Overhead feature testを実際に動かしてみる
端的に言うと,API Overhead feature testは,DrawCall(ドローコール)のオーバーヘッドを見るテストである。
DrawCallというのは,グラフィックスの描画にあたり,APIに対して発行されるリクエストのこと。Mantleでは,このDrawCallをハードウェアレベルに近い層で処理することを実現し,DirectX 12もその流れを汲んでいるので,DirectX 11と比較することで,DrawCallのオーバーヘッドがいかに削減されたかをチェックできるというわけだ。
技術資料によると,API Overhead feature testでは,112〜127個のポリゴンから成るユニークなオブジェクトを,プロシージャル(procedual,アルゴリズムによって自動的に創り出すこと)に生成し,それを,ポストプロセス処理を伴わない,シンプルなシェーダプログラムで描画している。地下都市のような地表のオブジェクトと,そのミラーイメージを,平行光源を用いたシャドウマップを使って描画しながら,DrawCall数を増やしていくテストになっているという理解でいい。
テストシーンは,バックバッファへ展開される前に,レンダーターゲットへ展開される。このとき,API DrawCallのオーバーヘッドがレンダリングアプリケーション側のそれよりも常に大きくなるよう,視錐台および遮蔽カリング(frustum or occlusion culling)を行わないようになっているという。
そういう状況を迎えた場合,テストはフレームあたりのDrawCall数を固定し,その状態で3秒以上,平均フレームレートを計測する。そのうえで,平均フレームレートとフレームあたりのDrawCall数をかけ,スコアである1秒あたりのDrawCall数を求めるのだ。
MantleとDirectX 12のテストはそれぞれ1つずつ。DirectX 11には「Single-thread」と「Multi-thread」の2つがあるが,前者ではその名のとおり,すべての処理を1つのCPUスレッドで処理することになる。後者では,シャドウマップとライティングパスを均等に複数のスレッドに割り振り,処理を行う。
要するに,Single-threadは,デュアルコアCPUなどにおいて,APIのオーバーヘッドの低減が性能の向上をもたらすかどうかを知るための指標となる。一方のMulti-threadは,主に4コア以上のCPUにおけるAPIのオーバーヘッドの低減が性能にどう影響を来すのかを見るための指標となるわけだ。
テストは論理コア数と同数のスレッドで処理されるが,スレッドの1つはグラフィックスドライバに充てられるため,デュアルコアCPUを使った場合は,Single-threadと同じスコアになるという。
それを踏まえて,デフォルト解像度となる1280×720ドットで実行したテスト結果を見てみよう。
スコアはグラフにまとめたとおり。DirectX 11だと100万前後なのが,Mantleではその17倍以上,DirectX 12ではそこからさらに上積みありというのが見て取れる。MantleとDirectX 12が同じ方向を向いていることや,DirectX 12がMantleの先を行っていること,DirectXではシャドウマップとライティングパスを割り振った程度だとDrawCall数の向上につながらないことが分かる,ともいえそうだ。
なお,Futuremarkは,本テストは単一のGPUでAPIの違いを見るためのもので,GPU同士の比較には適さないことと,ゲームではあまり利用されない,ユニークなテストであることを断っている。
そのため,今回の大きなスコア差がそのままDirectX 12とDirectX 11でのゲーム性能差に直結すると期待すべきではない。また,今後GeForceで動作することが確認できたとしても,Radeonと比較すべきでもない。この点は注意が必要だが,ただ,DirectX 12が持つメリットの一端が垣間見えたとは言ってもよさそうだ。DirectX 12の正式リリースと対応タイトルの登場に期待が膨らむところである。
関連記事:「3DMark」の新バージョン「1.5.884」公開。DX12とDX11,Mantleのオーバーヘッドを相対的に比較可能なテストが追加される
- 関連タイトル:
3DMark
- 関連タイトル:
Radeon R9 200
- 関連タイトル:
DirectX
- この記事のURL: