Wine 11、Linuxゲーミングの歴史を塗り替える大型アップデート
LinuxでWindowsゲームを動かすための互換レイヤー「Wine」のバージョン11がリリースされた。単なる年次アップデートではなく、ゲーミングのパフォーマンスに直結するカーネルレベルの根本的な再設計を伴う、近年最大級の変更となっている。
なぜWine 11は「別格」なのか
Valveが2018年にProtonを投入して以来、LinuxゲーミングはWine 9、Wine 10と着実に改善を重ねてきた。しかしWine 11は、これまでとは異なるアプローチで問題の核心に切り込んでいる。
最大のポイントはNTSYNCサポートの搭載だ。これは何年もの開発期間を経て実現した機能で、Wineがスレッド同期を処理する方法を根本から書き直すものだ。
「esync/fsync」では不十分だった理由
Windowsゲーム、特に現代の3Dゲームは高度なマルチスレッドで動作する。レンダリング、物理演算、アセットのストリーミング、音声処理、AI演算など、数十のスレッドが並列で動き、互いに同期しながら処理を進める。
Windowsはこの同期処理を「NTシンクロナイゼーション・プリミティブ」——ミューテックス(mutex)、セマフォ(semaphore)、イベントなど——によってカーネル内で効率的に処理している。ゲームはこれらの仕組みに深く依存している。
しかしLinuxにはWindowsと完全に同等のカーネル機能が存在しない。従来のWineはこれを回避するため、スレッド同期が必要になるたびに「wineserver」と呼ばれる専用プロセスへRPC(リモートプロシージャコール)を発行する方式を採っていた。
ゲームが1秒間に何千回もの同期処理を行う場合、このオーバーヘッドは無視できない。その結果として現れていたのが、フレームの微妙なスタッター(引っかかり)や不安定なフレームペーシングだった。
これを改善するために登場したのがesyncやfsyncだ。Lutrisの設定やProtonのオプションで見かけたことがある人も多いだろう。これらはwineserverへの往復コストを削減する工夫だったが、あくまでも「ワークアラウンド(回避策)」に過ぎなかった。
NTSYNCが実現する「本物の解決策」
NTSYNCは、Linuxカーネル自体に新しい同期プリミティブを追加するアプローチだ。これにより、WineはWindowsのNT同期プリミティブをカーネルレベルで直接エミュレートできるようになる。wineserverへの不要なRPCが大幅に削減され、スレッド同期のオーバーヘッドが劇的に減少する。
対応ゲームでは、フレームレートの安定化やスタッターの解消において顕著な改善が報告されている。
WoW64アーキテクチャの刷新とWaylandドライバの成熟
Wine 11のもう一つの柱はWoW64(Windows-on-Windows 64)アーキテクチャの刷新完了だ。これにより、32ビットのWindowsアプリを64ビット環境で動かすための仕組みが大幅に改善された。
またWaylandドライバも大きく進化した。Waylandは近年のLinuxデスクトップ環境(GNOME、KDE Plasma等)で標準となりつつある新世代のディスプレイサーバープロトコルで、ゲーム向けの対応強化は多くのユーザーに直接メリットをもたらす。
Proton経由でSteam Deck・Linux全体に恩恵
Wineの改善はProtonに引き継がれ、Steam DeckやLinuxデスクトップ全体に波及する。すべてのゲームで劇的な改善が見られるわけではないが、NTSYNC・WoW64・Wayland改善の恩恵を受けるタイトルではかなりの差が出ると期待される。
Linuxゲーミングはもはや「マニア向けの茨の道」ではない。Wine 11はその進化における、一つの大きなマイルストーンといえるだろう。
元記事: Wine 11 rewrites how Linux runs Windows games at kernel with massive speed gains