LinuxでReflex/Anti-Lag 2が全GPU対応に

NVIDIAだけの特権だったReflex、AMDだけのAnti-Lag 2。Linuxの個人開発者が、その壁をオープンソースで壊しにかかっている。

LinuxでReflex/Anti-Lag 2が全GPU対応に

NVIDIAだけの特権だったReflex、AMDだけのAnti-Lag 2。Linuxの個人開発者が、その壁をオープンソースで壊しにかかっている。


GPUメーカーの壁を越えるVulkanレイヤー

low_latency_layerという新しいオープンソースプロジェクトが公開された。C++23で書かれたVulkanレイヤーで、アプリケーション側の対応なしに自動で割り込み、NVIDIA ReflexとAMD Anti-Lag 2をハードウェアに依存せず動作させる

つまり、AMDやIntelのGPUでもReflexが使え、NVIDIAのGPUでもAnti-Lag 2が使える。公式ドライバの支援は不要だ。

仕組みはこうだ。VulkanのデバイスエクステンションであるVK_NV_low_latency2とVK_AMD_anti_lagを、レイヤーが横取りして自前で処理する。DXVK-NVAPIと組み合わせれば、Proton経由のWindowsゲームでも機能する。

開発者のニコラス・ジェイムズ(Nicolas James)は、このプロジェクトを始めた動機をこう語っている。

LinuxでのAnti-Lag 2の現状に不満を感じたのがきっかけだ。MesaのAL2実装は安定性に問題があり、デフォルトで無効化されていた。しかもWindows版ほどのレイテンシ改善効果がなかった。FPSゲームが好きで、AMDマシンを使っていて、Linuxも好きだ。だが、それらは両立しないように見えた。

「両立しない」を「両立させる」に変えたのが、このプロジェクトだ。

Reflexが使えるゲームの多さが、AMDユーザーの不利になっていた

ここには構造的な不均衡がある。

PC向けの低遅延技術で、NVIDIA Reflexに対応しているゲームはかなり多い。一方、AMD Anti-Lag 2に対応しているタイトルは少ない。Windowsでは、AMDユーザーはReflex対応ゲームの恩恵を受けられず、Anti-Lag 1という旧世代の技術で我慢するしかなかった。

low_latency_layerはこの不均衡を解消する。Reflex対応ゲームの低遅延技術を、AMD・Intel GPUでも利用できるようにした。Linux上では、Windowsよりも有利な状況が生まれている。

540Hzモニターで実測、6タイトルのベンチマーク

low_latency_layer ベンチマーク結果サマリー
タイトル 使用技術 vs Windows純正 Mesa AL
THE
FINALS
Reflex /
Anti-Lag 2
同等以上 効果なし
Counter-
Strike 2
Reflex /
Anti-Lag 2
明確に上回る 効果なし
Cyberpunk
2077
Reflexのみ 上回る AL2動作せず
Resident Evil
Requiem
Reflexのみ 上回る
Marvel
Rivals
Reflex /
Anti-Lag 2
同等以上
Overwatch 2 Reflexのみ 上回る
※ テスト環境:RX 7900 XTX / Ryzen 7 9800X3D / 64GB。540Hz NVIDIA Reflex Analyzer(ASUS PG248QP)で手動計測。「—」はMesa Anti-Lagの比較対象外(Anti-Lag 2非対応タイトルのため)

開発者はASUS TUF Radeon RX 7900 XTX、Ryzen 7 9800X3D、64GBメモリという構成で、NVIDIA Reflex Analyzer内蔵の 540Hzモニターを使って手動計測を行った。テストしたタイトルは6本。THE FINALS、Counter-Strike 2、Cyberpunk 2077、Resident Evil Requiem、Marvel Rivals、Overwatch 2だ。

THE FINALS / Counter-Strike 2

THE FINALSではReflex・Anti-Lag 2ともに、WindowsのAMD純正DX12実装と同等以上の結果を出した。Counter-Strike 2ではさらに差が開き、Linux上のlow_latency_layerがWindowsの数値を明確に上回った

どちらのタイトルでも、MesaのAnti-Lag Vulkanレイヤーは効果なし。データ上、むしろレイテンシが増加する傾向すら見られた。

Mesaの現行実装が「効果なし」と計測で出たのは、開発者がこのプロジェクトを始めた理由そのものだ。公式の低遅延レイヤーが機能していないなら、自分で作るしかない。

Cyberpunk 2077

Cyberpunk 2077では特殊な事情がある。LinuxでAnti-Lag 2が正常に動作しない。原因はアプリケーション側のバグと見られ、AntiLagUpdate()の呼び出しが確認できなかった。設定UIにもAnti-Lag 2のトグルがない。

ただし、Reflexパスは正常に動作し、Windowsネイティブのレイテンシを上回る結果を出した。

Resident Evil Requiem / Overwatch 2

Resident Evil RequiemとOverwatch 2はAnti-Lag 2非対応だが、Reflexには対応している。どちらもlow_latency_layerのReflex実装が最低レイテンシを記録した。Windows上のAnti-Lag 1はLinuxのベースラインとほぼ同じ数値にとどまり、世代の差がはっきり出た。

Marvel Rivals

Marvel Rivalsは開発中に最も手こずったタイトルだと開発者は語る。シミュレーションとレンダリングのキューが分離されており、Windowsの挙動に合わせるために統計処理と追加遅延の調整が必要だった。

開発者はこの設計について、Reflex/Anti-Lagを使いながらシミュレーションとレンダーキューを分離するのは「アプリケーション側のバグと見なすべき」だと指摘している。パイプラインを密結合にすれば、低遅延技術の効果はもっと大きくなるという。

使い方はSteamの起動オプション1行

導入はシンプルだ。GitHubからソースをクローンし、CMakeでビルド・インストールする。

デフォルトではAnti-Lag(VK_AMD_anti_lag)が有効になる。Counter-Strike 2のようなLinuxネイティブアプリでは、そのままメニューからAnti-Lagを切り替えられる。

Proton経由のゲームでは、Steamの起動オプションに以下を追加するだけでReflexが使える。

PROTON_FORCE_NVAPI=1 LOW_LATENCY_EXPOSE_REFLEX=1 LOW_LATENCY_SPOOF_NVIDIA=1 %command%

LOW_LATENCY_SPOOF_NVIDIA=1はGPUをNVIDIA製と偽って報告する設定だ。多くのゲームがNVIDIA GPUでないとReflexを表示しないため、この設定が必要になる。

ドライバの壁を、Vulkanレイヤーで迂回した

low_latency_layerがやったことは、技術的には「横取り」だ。NVIDIAとAMDがそれぞれ自社GPU向けに提供している低遅延技術を、Vulkanレイヤーという中間層で再実装した。公式ドライバの支援なしに、同等以上の性能を出している。

MITライセンスで公開されており、誰でも利用・改変できる。


Linuxのゲーミング環境で、「GPUメーカーごとに使える技術が違う」という制約は長らく続いてきた。Windowsでも同じだが、Linuxではドライバの成熟度の差もあり、状況はもっと深刻だった。

個人開発者が540Hzモニターとスプレッドシートで地道に計測し、公式実装より速い低遅延レイヤーを作り上げた。コミュニティが公式を追い越す瞬間は、Linuxでは珍しくない。だが、ベンチマークでここまで明確に示されるケースは多くない。


参照元

関連記事

この記事を共有する