Valve 发布 Proton 4.11,一个在 Linux 上运行 Windows 游戏的套件

阀门公司 опубликовала 新项目分支 质子4.11,基于 Wine 项目的开发,旨在确保推出为 Windows 创建并在 Linux 上的 Steam 目录中呈现的游戏应用程序。 项目进展 传播 在 BSD 许可下。 当它们准备就绪时,在 Proton 中开发的更改将转移到原始 Wine 和相关项目,例如 DXVK 和 vkd3d。

Proton 允许您在 Steam Linux 客户端中直接运行仅限 Windows 的游戏应用程序。 该软件包包括 DirectX 10/11 的实现(基于 DXVK 扩展)和12(基于 vkd3d)通过将 DirectX 调用转换为 Vulkan API 来工作,改进了对游戏控制器的支持,并且无论游戏支持的屏幕分辨率如何,都可以使用全屏模式。 与原始 Wine 相比,由于补丁的应用,多线程游戏的性能得到了显着提升”同步“(Eventfd 同步)或“futex/fsync”。

质子 4.11 的变化:

  • 与 Wine 4.11 代码库进行了同步,从中传输了 3300 多个更改(之前的分支基于 wine 4.2)。 Proton 154 的 4.2 个补丁已移至上游,现在包含在主 Wine 包中;
  • 添加了对基于 futex() 系统调用的同步原语的实验性支持,与 esync 相比,这减少了 CPU 负载。 此外,新的实现解决了需要使用的问题 特殊设置 用于同步和可能耗尽可用文件描述符。

    所做工作的本质是扩展 Linux 内核中标准 futex() 系统调用的功能,并提供线程池最佳同步所需的功能。 支持 Proton 所需的 FUTEX_WAIT_MULTIPLE 标志的补丁已经发布 转入 包含在主 Linux 内核中以及 格里布。 准备好的更改尚未包含在主内核中,因此目前有必要 建立 支持这些原语的特殊内核;

    Valve 发布 Proton 4.11,一个在 Linux 上运行 Windows 游戏的套件

  • 夹层 DXVK 扩展 (在 Vulkan API 之上实现 DXGI、Direct3D 10 和 Direct3D 11)更新至版本 1.3D9VK (Vulkan 之上的 Direct3D 9 的实验性实现)最高版本 0.13f。 要在 Proton 中启用 D9VK 支持,请使用 PROTON_USE_D9VK 标志;
  • 当前显示器刷新率传输至游戏;
  • 已修复鼠标焦点和窗口管理问题;
  • 修复了部分游戏尤其是基于Unity引擎的游戏中出现的输入滞后和摇杆振动支持问题;
  • 新增对最新版本OpenVR SDK的支持;
  • 实现 DirectX 声音库(API XAudio2、X3DAudio、XAPO 和 XACT3)的 FAudio 组件已更新至版本 19.07;
  • GameMaker 游戏中的网络子系统问题已得到解决;
  • 许多 Wine 模块现在构建为 Windows PE 文件而不是 Linux 库。 随着该领域工作的进展,PE的使用将有助于一些DRM和反作弊系统。 如果您使用自定义 Proton 构建,您很可能需要重新创建 Vagrant 虚拟机来构建 PE 文件。

在 Valve 的补丁被采用到主 Linux 内核之前,使用 futex() 代替 esync 需要安装一个特殊的内核,支持在一组补丁中实现的线程同步池 FSYNC。 对于 AUR 中的 Arch Linux 已经 发表 使用 fsync 补丁编译的现成内核包。 在 Ubuntu 18.04 和 19.04 上,您可以使用 linux-mfutex-valve 实验内核 PPA (sudo add-apt-repository ppa:valve-experimental/kernel-bionic; sudo apt-get install linux-mfutex-valve);

如果您的内核支持 fsync,则当您运行 Proton 4.11 时,控制台将显示消息“fsync: up and running”。 您可以使用 PROTON_NO_FSYNC=1 标志强制关闭 fsync。

来源: opennet.ru

添加评论