NVIDIA コントロールパネルにある「Vulkan/OpenGLの既存の方法」とかいう設定 (結論を言うとVulkan/OpenGLアプリで遅延が減る)

GeForce ビデオカードのドライバ設定を行うNVIDIA コントロールパネルにある「Vulkan/OpenGLの既存の方法」という項目。

2022年10月頃のドライババージョンから追加されたようだけどどういった効果があるかわからず、ビデオドライバ設定を解説しているサイト/blogでもこの設定は「自動」を推奨しているところが大半のようだが、書かれている説明文と実際に試した結果から何が変わるかわかった。

どうやらこの設定はVulkan/OpenGLアプリにおいて「DXGI スワップチェーン」という機能を使ってフレーム待機時間、つまりは表示遅延を短くすることができるようだ。

Microsoft公式サイト - Windowsアプリ開発 DXGI スワップ チェーンによる遅延の減少 

ただし、遅延が減ると言っても前述のとおりVulkan/OpenGLアプリのみでDirectXを使用したゲームには何の影響もない。競技性のあるゲームで具体例としてはSourceエンジン系の「Dota 2」「Counter-Strike: Global Offensive」「Counter-Strike 2」、それ以外では「Rainbow Six: Siege」(描画APIをVulkanに設定したとき)くらいだ。「Fortnite」「Apex Legends」「VALORANT」、ほぼ全部の格ゲー等はDirectXを使用して描画しているのでこの設定を変更しても何の影響も与えない

自分はCS:GOもR6Sもやっていないものの、FM TOWNSエミュレータ津軽」を使っておりこれがOpenGLによる描画を行っていて、エミュレータ側とホストPC側でマウスカーソルがウィンドウ位置を同期して動くようになっているので遅延が発生しているのがわかりやすかった。設定前はホストPC側のマウスカーソルに3~4フレーム遅れて動いているような感覚だったが、設定後はかなりぴったりくっついて1フレーム程度に抑えられた。エミュレータは特性上完全に遅延は無くなるわけではないが、ゲームならもっと効果が発揮しやすい可能性がある。

 

設定方法の例として、NVIDIA コントロールパネルから「3D設定の管理」を開いて「プログラム設定」タブを選び(不具合を避けるため全ゲームで同じ設定を設定せず個別に行う)お目当てのゲームを選択(ない場合は一度そのアプリを起動して終了、「追加」ボタンを押してアプリを選ぶ)、

  • 「Vulkan/OpenGLの既存の方法」は「DXGI Swapchainのレイヤーを優先する」
  • 「スレッドした最適化」は「オン」
  • 「低遅延モード」は「オン」または「ウルトラ」(ゲームや使っているモニターによって最適設定が変わるので「オフ」も含めて試すこと)
  • 「垂直同期」は「オフ」または「高速」(ゲームや使っているモニターによって最適設定が変わるので「オン」も含めて試すこと)
  • 「電源管理モード」は「パフォーマンス最大化を優先」

に切り替えよう。これで遅延は最小限に抑えられるはずだ。