レビュー
» 2014年03月04日 10時40分 UPDATE

期待の新API:「Mantle」の効果をRadeon R9 290X/280X/270Xで試してみた (1/3)

AMDの新API「Mantle」でどれだけ性能が上がるのか。実際に試してみた。

[石川ひさよし,ITmedia]

 GCN(Graphics Core Next)世代のGPUで利用できる新API「Mantle」。Radeon Rシリーズの登場時より期待されていた「ゲーム性能が向上するAPI」だが、2月頭にβ版ドライバと、その対応ゲーム第1弾となるBattlefield 4のパッチがリリースされ、ようやくこれを試せるようになった。

 AMDの公式見解では「場合によっては最大で40%もパフォーマンスが向上する」とされるこの新APIを、3枚のRadeon R9ビデオカードで検証してみた。

Mantle対応ドライバと対応ゲームが整った

og_amd_000_1.jpg

 現在、Mantleを試せる環境は、前提条件としてまずMantle対応タイトルであるBattlefield 4(場合によってはアップデートが必要)と、GCN世代のRadeon搭載グラフィックスカード、対応するドライバという3点が必須だ。

 2月当初は、「Catalyst 14.1 Beta V1.6」がリリースされており、2月25日、別のタイトルのリリースに合わせて「同14.2 Beta V1.3」がリリースされた。Catalyst 14.2 Beta V1.3のリリースノートでMantleに関する情報は、Battlefield 4におけるマルチGPUのサポートといったあたりで、そのほかMantleに関してFixがされたかどうかは不明。ただし、今回の検証中にアップデートされたことに合わせて、検証ではより最新のCatalyst 14.2 Beta V1.3を用いた。

 なお、Catalyst 14.1 Beta V1.6に先立ち、メディア向けに配布された14.1 Beta V1.5時、一部のRadeon GPU(Radeon R9 280XやR9 270Xが挙げられていた)は将来のドライババージョンで最適化される予定という一文があった。

 この点がCatalyst 14.1 Beta 1.6や同14.2 Beta V1.3で対応したのか、少なくとも現時点では文言が見つからない。一方、Battlefield 4側のMantleへの最適化にも注意があり、現時点で最適化されているのはRadeon R9 290XおよびR9 290、R7 260XそしてKaveri APUとされている。このように、まだいくつか条件があるようだ。

 ただ、条件外ではどういった挙動をするのか、という点にも興味がある。そこで、今回の検証機材には、Radeon R9 290X/280X/270Xの3枚を用意した。

FRAPSは使えない。数値で効果を測るにはコンソールコマンドを利用する

og_amd_000_2.jpg Mantleの使用条件がそろうと、ビデオオプションの最上段に「グラフィックスAPI」という項目が追加され、DirectX 11とMantleとを切り替え可能になる。なお、変更した際には、Battlefield 4を再起動する必要がある

 Mantleドライバと対応バージョンまでアップデートしたBattlefield 4を導入すると、Battlefield 4のビデオのオプションにAPIを選ぶ項目が表示されるようになる。逆に、これが表示されない場合は、どちらかが欠けているということになる。

 さて、Mantleが使用可能になったわけだが、フレームレートを計測してその効果を比較しようとなると、もう1つ問題が出てくる。それはFRAPSを利用できないことだ。

 FRAPSは、DirectXゲームにおいて、フレームレートを計算する機能を備えたユーティリティ。ただし、DirectX用であるため、APIをMantleに切り替えると、FRAPSの機能すべてが利用できなくなる。そのため、Battlefield 4側に備わったコンソールコマンドを用いて計測することになる。

 まずコンソールコマンドの呼び出し方だが、日本語キーボードの場合は「半角/全角」キー、英語キーボードの場合は「〜」キーを使う。ただし、日本語キーボードの場合は注意が必要だ。日本語入力モードのまま「半角/全角」キーを押すと、日本語入力に切り替わり、しかもコンソールを閉じられなくなるなどかなりやっかいなことになる。

 この問題に対する対処法は、Battlefield 4ユーザーにはお馴染みの回避方法だが、まずコントロールパネルの「地域」から「管理」→「システムロケールの変更」を開き、「現在のシステムロケール」で「英語」を選択し、OKボタンを押す。次に(これは必要な方だけでよいと思われるが)「言語」を開き、先の作業で追加された「English」キーボードの設定を「日本語」キーボードの上に移動させる。すると、タスクバーの入力モード欄が「ENG」、つまり英語用に切り替わる。これで「半角/全角」キーを押す度にコンソールがオン/オフと、正しく切り替わるようになる。

og_amd_001.jpgog_amd_002.jpg コントロールパネルからシステムロケールに「英語」を指定(画面=左)。言語の設定でも「English」を優先しておくと便利。こうすると、初期時は英語入力になり、Windowsキー+スペースキーで日本語と切り替えられる状態になる(画面=右)

 フレームレート計測時に用いるコンソールコマンドは「PerfOverlay.FrameFileLogEnable」だ。入力途中に「Tab」キーを押せば自動補完してくれるので、スペルミス防止に活用しよう。このコマンドの後ろに半角スペースを挟み「1」でログ取得開始、「0」でログ取得終了になる。

og_amd_003.jpg ログファイルは、カンマ区切りのCSVファイル。平均フレームレートは、1番左のFrame timeを用いて計算した

 適当なシーンで「PerfOverlay.FrameFileLogEnable 1」を、一定時間経過後に「PerfOverlay.FrameFileLogEnable 0」を押せば、マイドキュメントの「Battlefield 4」フォルダ内に、FrameTimeLog001.csv……FrameTimeLog002.csvといった具合でログファイルが生成される。

 ログファイルは、1フレームの描画に要した時間をミリ秒単位で記録している。これで平均フレームレートを算出するならば、1フレームの描画に要した時間で平均を出し、それを1000ミリ秒から割って求めればよい。ただし、開始も終了も手動なので、計測時間にも誤差が出る。誤差を最小に留めるならば、1分間(60000ミリ秒)までをカウントし、そこまでのデータで切り捨てしたうえで平均を出すのがよいだろう。ただ、非常に手間がかかるので、今回は計測回数を増やす方向で誤差を抑えることにした。

 なお、計測には、キャンペーンのシナリオ6「TASHGAR」の冒頭シーンを用いた。最初、空母のムービーが流れるが、この後、ジープで疾走する自動で進行するシーンが出てくる。画面の切り替わりと同時に計測を開始し、およそ1分10秒後に戦闘車両をやり過ごすために停車するシーンで計測終了とすることで、計測時間のバラつきを抑えた。また、Mantleだけでなく、条件を同一のものとするため、DirectX 11版もコンソールコマンドから計測している。

og_amd_004.jpgog_amd_005.jpg キャンペーンのシナリオ6「TASHGAR」を選び、空母のシーンを経て、画面が明転するタイミングでコマンドを実行し計測を開始

 目の前を戦闘車両がゲートを通り過ぎるタイミングで計測を終了した。ただし、結局は手動で開始・終了するので、どうしてもバラつきがでる。そこで、3回計測したうえで平均を出すことにした。

       1|2|3 次のページへ

Copyright© 2016 ITmedia, Inc. All Rights Reserved.