オススメ機能
Twitter
お気に入り
記事履歴
ランキング
パッケージ
GeForce Driver公式サイトへ
  • NVIDIA
  • 発表日:2003/10/23
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
「GeForce 372.54 Driver」にこっそり実装されていたディスプレイ同期技術「Fast Sync」を試してみる
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2016/08/23 00:00

テストレポート

「GeForce 372.54 Driver」にこっそり実装されていたディスプレイ同期技術「Fast Sync」を試してみる

 北米時間2016年8月15日,NVIDIAから,「GeForce 372.54 Driver」が公開となった。

GeForce Driver
 Release 370世代初の公式最新版となるWHQL(Windows Hardware Quality Labs,ウィクル)通過リリースの詳細は17日掲載の記事でお伝えしているとおりなのだが,今回のドライバには1つ,GeForce.comにも,英文リリースノートにも記載のない新機能が実装されている。それは,「GeForce GTX 1080」(以下,GTX 1080)と同時に発表となった「Fast Sync」(ファーストシンク)だ(関連記事)。

 Fast Sync自体はGTX 1080のみとか,Pascal世代のみとかいった制約なしに,従来製品でも利用できるとされている。4Gamerで確認した限りでは,第2世代MaxwellベースのGPUだと選択でき,Kepler世代のGPUでは選択できなかったので,現時点ではGeForce GTX 900シリーズ以降でサポートされている可能性が高そうだが,そもそもFast Syncとは一体何であって,何を期待できるのか。試した結果ともどもまとめてみよう。

対応GPUを搭載する環境で372.54ドライバを導入のうえ,NVIDIAコントロールパネルから「3D設定の管理」→「垂直同期」と進んでプルダウンメニューを選択したところ。ここに「高速」というのが新たに加わっているが,これがFast Syncである
GeForce Driver


そもそもFast Syncとは何か


 さて,そもそもFast Syncとは何かだが,乱暴にまとめてしまえば,「ディスプレイ側のリフレッシュレートとは無関係にGPUのレンダリング自体を実行し,新規に追加した一次バッファへ結果を書き込んでおいて,バッファから実際に表示を行うフロントバッファへの転送はリフレッシュレートに同期させる」という,ディスプレイ垂直同期の新手法だ。
 一次バッファのことをNVIDIAは「Last Rendered Buffer」(ラストレンダードバッファ)と呼んでいる。

これはゲームがフレームをディスプレイへ映像として表示するまでの流れを示したもの。「Game Engine」(ゲームエンジン)が「DX/Driver」(DirectXとドライバ)を通じて「GPU」のレンダリングパイプにデータを渡してフレームを描画するわけだが,このとき,ディスプレイ表示に用いるフレームバッファに直接描くわけではない。灰色の部分がバッファで,通常は「Back Buffer」(バックバッファ)にフレームを描いたうえで,その内容を,ディスプレイ表示用の「Front Buffer」に転送(「Flip」)することで描画を行う。Fast Syncの場合は,ここにLast Renderd Bufferを追加して,そちらを常に最新のフレームで更新しておき,リフレッシュに合わせてBack Bufferへ転送することで,常に最新のフレームが描かれるようにするのだ
GeForce Driver

 ディスプレイ垂直同期技術について少し復習しておくと,ディスプレイデバイス側で1枚の映像(=1フレーム)を描き終えるタイミング――正確にはちょっと異なるので,詳細を知りたい場合は2014年12月6日の記事を参照してほしい――を「Vsync」という。

 そして,GPUの描画処理をVsyncに同調させることを「Vsync有効」と呼ぶのだが,ゲーム側(もしくはドライバソフトウェア側)でVsyncを有効化した場合,画面の更新がディスプレイ側のリフレッシュレートと同期することになるので,スムーズな表示が行える。しかし,GPUの描画をリフレッシュレート(=Vsync)に合わせてしまうため,構造上,操作から表示までの遅延が大きくなりやすい。
 たとえばリフレッシュレート60HzのディスプレイでVsyncを有効化した場合,画面に表示されるのは16.666……ms(60分の1秒,以下便宜的に16.67msとする)前の内容だ。ユーザーがマウスをクリックしたとき,そのクリックに応答した画面が得られるのは16.67ms後なのである。しかも,GPUが「ディスプレイ側の,次の描画タイミング」までに描画を終えられないと,表示遅延はさらにあと16.67ms後にやってくる次のタイミングまで待たねばならない。

Vsync有効時におけるディスプレイ表示の挙動(※2014年12月6日の記事より再掲)。画面に表示されるフレームはそもそも1フレーム前の過去の映像だが,描画が次のリフレッシュに間に合わないと,その次のリフレッシュを待って描画されることになるため,結果,2フレーム過去の映像になることがある

 その点,GPUの描画処理をVsyncに同調させない「Vsync無効」であれば,ディスプレイ側のリフレッシュレートを無視して,GPUがどんどん画面を更新してくれる。GPUが十分に高速で,100fpsくらいでレンダリングできているのなら,画面の表示遅延は10msに抑えられる理屈だ。
 ただし,リフレッシュレートを無視して画面を更新しまくるため,前のフレーム表示中に次のフレームの表示が始まることになる。結果,画面が上下でズレたようなテアリング(tearing,日本では字義からすると誤読である「ティアリング」表記が一般的)現象が生じてしまって,見た目のスムーズさを大きく損なうという難点を抱えている。

Vsync無効時におけるテアリング発生の原理(※2014年12月6日の記事より再掲)。原理上,遅延は生じないが,フレームの表示途中にGPUが次のフレームを描き始めると,テアリングが発生する

 ではFast Syncはどうかというと,「Vsync無効化時と同程度の低遅延と,テアリングのない描画を両立できる」技術である。
 Fast Syncでは,前述した一次バッファの内容が,GPUの描画速度に合わせて,常に更新され続けることになる。しかし,Vsync無効時のようにそれをそのまま表示するのではなく,リフレッシュのタイミングで表示するのは,一次バッファにある最新のフレームなのだ。
 つまり,GPU側が100fps前後でレンダリングできているとして,仮にリフレッシュレートが60Hzの設定だとしても,ユーザーがマウスをクリックしたとき,そのクリックに応答した画面が得られるのは,Fast Syncならベストケースで10ms後になるわけである。

Fast Syncによって,遅延を抑えつつもテアリングフリーの映像が得られるとNVIDIAはアピールしている
GeForce Driver

 なお,ここまでの説明からも想像できるとおり,Fast SyncはあくまでもVsync有効時とVsync無効時の持つメリットのいいとこ取りを狙ったもので,NVIDIA独自のディスプレイ同期技術「G-SYNC」とは異なる。

 G-SYNCはリフレッシュレートをGPUの描画タイミングに合わせる技術だ。そのためディスプレイ側の対応が必要になってしまうが,原理的に遅延とテアリングの両方がほとんどゼロになる利点を持つ。
 それに対し,今回のFast Syncは,フレームの表示をディスプレイ側のリフレッシュレートに合わせるので,ディスプレイ側の対応は必要ないものの,原理的に遅延は起こり得る。そこがG-SYNCとの違いだ。


GTX 1080でFast Syncの挙動をチェック


 概要を押さえたところで,GeForce 372.54 DriverとGTX 1080を使ってFast Syncの挙動を確認してみよう。
 今回は,4Gamerのベンチマークレギュレーション18.0で採用している「Project CARS」のリプレイデータを使って,Vsync無効時と有効時,そしてFast Sync有効時の挙動を見てみたいと思う。

 Project CARSを選択した理由は大きく2つある。1つは,ドライブシムで画面の動きが大きいため,テアリングが分かりやすいということ。もう1つは,Project CARSが,アンチエイリアシングの設定によってフレームレートを調節しやすい特性があり,「ディスプレイのリフレッシュレートを超えたり超えなかったり」といったフレームレート推移の負荷を得やすいことだ。

 試用したディスプレイはディスプレイレビューのリファレンス機として使っているBenQ製の「XL2430T」。垂直リフレッシュレート144Hz対応モデルだが,144Hz設定だとやや高すぎて効果が分かりにくかったため,今回は垂直リフレッシュレート120Hzに切り換えて利用することにした。
 今回はこの条件でリプレイを再生し,ソニー製のコンパクトデジタルカメラ「DSC-RX100M4」から解像度1920×1080ドット,960fpsでハイスピード撮影し,それらを24p再生して比較することになる。

 というわけで,まず下に示したのはVsync無効時のムービーだ。「Fraps」を常駐させているため,左上でフレームレートを確認できるが,ざっくり130fps前後が得られており,ディスプレイ側の垂直リフレッシュレートである120Hzを超えているため,かなり盛大にテアリングが出ていることを確認できると思う。


 続いてVsync有効時。こちらこちらは当然ながらフレームレートが120fpsで抑えられる代わりにテアリングフリーの描画が得られている。


 最後がFast Syncだ。Frapsの表示では125fps前後と,レンダリングはリフレッシュレートをやや超える速度で行われているが,テアリングがまったく出ていないことが分かると思う。
 動画ではややカクついて見える部分もあるが,これは,Fast SyncでディスプレイのリフレッシュレートよりGPUの描画が速いとき,フレーム落ちが生じるためだ。常に最新のフレームを表示しようとするFast Syncの性質上,飛ばされてしまうフレームが生じるのは仕方がないところでもある。

 なお,Frapsの数字を見ればすぐ分かるのだが,Fast Syncを有効化すると,Vsync無効化時と比べてフレームレートは若干低くなった。筆者が試した限りでは,おおむね5%程度は低い数字が出るようだ。バッファが増え,オーバーヘッドが大きくなったためと考えられるが,今回のドライバで正式にFast Sync対応が謳われなかったのは,ひょっとすると,フレームレート面でチューニングの余地がまだあるからなのかもしれない。



Fast Syncは低リフレッシュレートのディスプレイでこそ効果的か


 取り急ぎ,ディスプレイ表示周りに絞って,Fast Syncの挙動を確認してみた。NVIDIAがどういう理由でFast Sync実装に関する情報を明らかにしていないのかは分からないが,少なくともディスプレイ表示で見る限り,Fast Syncは正常に機能している。

 では,そんなFast Syncがどういう用途で役立つかというと,十分に高速なGPUを,垂直リフレッシュレート60Hzの,標準的なディスプレイと組み合わせるときだろう。
 対応リフレッシュレートが相対的に低い(G-SYNC非対応の)ディスプレイでGPUの高速処理を活かそうとすると,これまではVsyncを無効化するしかなく,テアリングの発生を受け入れるしかなかった。実際,FPSプレイヤーの中には好んでVsync無効を選択するような人も一定割合存在していたわけだが,Fast Syncであれば,性能を若干犠牲にすることで,テアリングフリーで低遅延の描画が得られるからだ。

 120Hz以上の垂直リフレッシュレートに対応できるディスプレイを使っていてもFast Syncの恩恵は得られるが,実のところ,120HzのリフレッシュレートならVsync有効時であっても表示遅延は8.333…msに収まる。なので,GPUのレンダリングが120fps前後を確保できているのなら,Fast Sync有効時とVsync有効時との間で,表示遅延にそれほど大きな違いは生じないだろう。
 今回はテストのために120Hzを使ったが,高速なディスプレイを使っているなら,Vsync有効で使ったほうが,フレームレートと表示の美しさを両立させやすいのではないかと思う。

 いずれにしても,GeForce 372.54 Driverでこっそり実装されたFast Syncは,高速な液晶ディスプレイを持っているわけではない,多くのゲーマーにとって,意味のある技術だと言えるだろう。
 もちろん,NVIDIAが正式にアナウンスしていない以上,現時点では予期せぬ問題を抱えているという可能性はあるのだが,ひとまず,対応GPUのユーザーは試してみてみてはどうだろうか。

 4Gamerでも,正式にアナウンスされた暁には,入力遅延など,追加のテストを行ってみたいと考えている。

関連記事:ノートPC向けGTX 10対応の「GeForce 372.54 Driver」登場。複数のゲームタイトルに向けた最適化と,小さくない規模のバグ修正もトピック

NVIDIAのGeForce Driver検索ページ

  • 関連タイトル:

    GeForce Driver

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
トピックス
スペシャルコンテンツ
注目記事ランキング
集計:05月21日〜05月22日