Valve 悄悄将 Proton 移植至 Wine 11,Linux 游戏终于迎来 Windows 级帧时序

对许多 Linux 玩家来说,「好用」从来都不是一个简单的词。 Valve 在 2018 年推出 Proton,让 Steam 平台上的 Windows 游戏得以在 Linux 环境下运行,这被视为一个里程碑。 然而即便如此,在真实游戏体验中,Linux 与 Windows 之间的差距始终未能完全解决:如帧率数字或许相近,但那种若有似无的卡顿感、细微的画面撕裂、不稳定的帧时序(frame pacing),却成为资深玩家心中挥之不去的阴影。 Valve 与 CodeWeavers 近日悄然释出 Proton 11.0 Beta 1:一个改写 Linux 游戏底层架构的重大更新。 这次升级的核心,是将整个 Proton 堆叠重新建立在 Wine 11 基础之上,并带入了多年来社群引颈期盼的 NTSync 技术,让 Linux 的游戏体验首次真正逼近 Windows 的水平。

什么是 Proton? 为什么这次升级如此重要?

Proton 是 Valve 为 Steam Deck 与 Linux 平台打造的 Windows 游戏兼容层,核心建构在开源的 Wine 项目之上。 Wine(Wine Is Not an Emulator)并不是模拟器,而是一个翻译层,将 Windows 的 API 呼叫转换为 Linux 能够理解的语言,让原生 Windows 游戏无需修改即可在 Linux 环境执行。

Proton 在 Wine 基础上进一步加入 DXVK(DirectX 转 Vulkan 的翻译层)、VKD3D-Proton(DirectX 12 转 Vulkan)等组件,并针对游戏兼容性做大量定制优化。 每一代 Wine 的进步,几乎都会直接惠及 Proton 与 SteamOS 的所有用户。 而 Wine 11,是近年来最具份量的一次升级。

Valve 悄悄将 Proton 移植至 Wine 11,Linux 游戏终于迎来 Windows 级帧时序

NTSync:解决多执行绪卡顿的根本问题

要理解这次升级的意义,必须先理解一个长年困扰 Linux 游戏的问题:Windows NT 同步原语(NT synchronization primitives)。

现代游戏几乎全面依赖多线程架构——渲染、物理运算、音效处理、AI逻辑分别跑在不同的 CPU 线程上,这些线程之间需要频繁的同步协调,例如等待贴图加载完成后才能渲染下一帧。 Windows 通过内置于核心的 NT 同步机制(mutex、semaphore、event 等)来处理这些协调任务。

Wine 在 Linux 上历来只能通过「模拟」方式处理这些机制:每次需要同步时,都要向一个名为 wineserver 的专属进程发送 RPC 呼叫,再等待响应。 在一个每秒可能发出数千次这类呼叫的现代游戏中,这个额外开销相当可观,直接造成帧时序不稳定、微小卡顿,以及即便FPS数字看起来不差、实际体感却总是差那么一点的问题。

此前,社群曾开发出 esync 与 fsync 等变通方案,通过 Linux 的 eventfd 与 futex 机制来降低 wineserver 的呼叫频率,改善了部分情况。 然而这些方案都是在用户空间打补丁,本质上仍是绕路,并非根治。

NTSync(NT Synchronization)则是真正的解法。 它是一个 Linux 核心模块,直接在核心层面模拟 Windows NT 的同步行为,完全绕过 wineserver 的往返延迟。 Wine 11 正式加入对 NTSync 的支持,要求 Linux 6.14 或更新版本的核心,且用户需手动加载 ntsync 模块(执行 )。sudo modprobe ntsync

Wine 11 的其他重大改进

除了 NTSync,Wine 11 在多个面向带来了架构性的升级:

WoW64 模式全面成熟:Wine 11 的 WoW64 模式(可让 32 位 Windows 应用程序在 64 位系统上执行,而无需额外安装 32 位函式库)已达到完整功能,甚至能支持 16 位应用程序。 有趣的是,这意味着Wine在16位应用支持上,难度已与Windows本身相当,因为现代Windows也无法原生执行16位程序。 这对保存旧游戏而言是一大福音。

Wayland 驱动大幅完善:Wine 11 的 Wayland 驱动新增了双向剪贴板支持、从 Wayland 应用程序拖放至 Wine 应用程序的功能,以及模拟屏幕分辨率切换(通过合成器缩放实现),让许多尝试切换至较低分辨率的旧游戏能正确运作。

GPU 渲染改进:EGL 后端成为 X11 上的默认 OpenGL 渲染方式,取代旧有的 GLX 后端; 新增 Vulkan 1.4 API 支持; 通过 Vulkan Video 硬体解码 H.264 的功能也已上线,让游戏过场动画与串流应用得以使用 GPU 解码而非占用 CPU。

执行绪优先权调整:Wine 11 对 Linux 与 macOS 上的执行绪优先权机制做了调整,有助于让多线程游戏更流畅地运行(这与 NTSync 是独立的改进,但彼此相辅相成)。

Proton 11.0 Beta 1:元件全面升级

Proton 11.0 Beta 1 在 Wine 11 基础上,进一步整合了多个核心器件的最新版本。 根据 Phoronix 的报导,本次更新包含:

  • DXVK 2.7.1-git(DirectX 9/10/11 → Vulkan 翻译层)
  • VKD3D-Proton 最新版(DirectX 12 → Vulkan 翻译层)
  • VKD3D 1.19-git
  • DXVK-NVAPI 0.9.1
  • Wine Mono 11.0
  • FEX 2604(用于 ARM64EC 架构,预示 Steam Frame 掌机的技术准备)

其中值得注意的是 ARM64 版 Proton 的释出,搭配 FEX 转译层,意味着 Valve 正积极为其爆料中的 ARM 架构 Steam Frame 掌机进行底层铺垫。

兼容性大跃进:更多游戏直接可玩

Proton 11.0 Beta 1 带来了一长串的游戏兼容性改进。 根据官方 GitHub 发布说明,以下游戏从「仅能在 Proton Experimental 运行」晋升为「主线支持」:

Universe Generator: The Golden Sword、DCS World Steam Edition、Resident Evil(1996)、Resident Evil 2(1998)、Dino Crisis、Dino Crisis 2、From Dust、METAL GEAR SURVIVE、Warhammer: Vermintide 2、SHOGUN: Total War(以及其他数款)

此外,以下游戏首次在 Proton / Steam Play 环境下变得可玩:Unknown Faces、Gothic 1 Classic、X-Plane 12、Breath of Fire IV、Deadly Premonition

启动器兼容性方面,EA Desktop、Rockstar Launcher与REDLauncher(用于《赛博朋克2077》、《巫师3》等)的多个已知问题都获得修正。 其中,许多 EA 游戏因近期 EA Desktop 更新而无法游玩的问题,也已在此版本中解决。

VR 支持同样有所强化:修正了《微软模拟飞行》的 VR 控制器追踪问题,《No Man’s Sky》的 VR 模式也得以重新正常运作。

这次 Proton 11.0 Beta 的释出,发生在 Linux 游戏生态系快速发展的关键节点。 Wine 11 的改进将同时惠及 Proton 与 SteamOS,让 Valve 的 Steam Deck 与所有采用 SteamOS 的设备受益。 Steam平台的统计数据也反映出这股趋势:Linux 的游戏使用率正持续成长,而 Proton 持续降低 Windows 游戏移植至 Linux 的门槛,已让超过数万款 Steam 游戏在 Linux 上可玩。

如何使用 Proton 11.0 Beta?

想要体验Proton 11.0 Beta 1的用户,可通过Seam的「Steam Play」设置中手动选择Beta版本来启用。 若要发挥 NTSync 的完整效益,需确认系统核心版本为 Linux 6.14 或以上,并手动加载 ntsync 模块。 部分 Linux 发行版(如 CachyOS)已默认启用相关优化,但多数主流发行版仍需手动设置。

Valve 目前尚未公布 Proton 11.0 正式版的预计发布时间。

(0)
insunshineinsunshine

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注