Valve veröffentlicht Proton 4.11, eine Suite zum Ausführen von Windows-Spielen unter Linux

Ventilunternehmen опубликовала neuer Projektzweig Proton 4.11, basierend auf den Entwicklungen des Wine-Projekts und mit dem Ziel, den Start von Spieleanwendungen sicherzustellen, die für Windows erstellt und im Steam-Katalog unter Linux präsentiert werden. Projektentwicklungen Ausbreitung unter BSD-Lizenz. Sobald sie fertig sind, werden die in Proton entwickelten Änderungen auf das ursprüngliche Wine und verwandte Projekte wie DXVK und vkd3d übertragen.

Mit Proton können Sie reine Windows-Gaming-Anwendungen direkt im Steam-Linux-Client ausführen. Das Paket enthält eine Implementierung von DirectX 10/11 (basierend auf DXVK-Erweiterung) und 12 (basierend auf vkd3d), das über DirectX-Aufrufe an die Vulkan-API arbeitet, bietet verbesserte Unterstützung für Gamecontroller und die Möglichkeit, den Vollbildmodus unabhängig von den in Spielen unterstützten Bildschirmauflösungen zu verwenden. Im Vergleich zum ursprünglichen Wine wurde die Leistung von Multithread-Spielen dank der Verwendung von Patches deutlich gesteigert.esync„(Eventfd-Synchronisierung) oder „futex/fsync“.

Haupt- Änderungen in Proton 4.11:

  • Es wurde eine Synchronisierung mit der Wine 4.11-Codebasis durchgeführt, von der mehr als 3300 Änderungen übertragen wurden (der vorherige Zweig basierte auf Wine 4.2). 154 Patches von Proton 4.2 wurden in den Upstream verschoben und sind nun im Hauptpaket von Wine enthalten;
  • Experimentelle Unterstützung für Synchronisierungsprimitive basierend auf dem Systemaufruf futex() hinzugefügt, was die CPU-Last im Vergleich zu esync reduziert. Darüber hinaus löst die neue Implementierung Probleme mit der Notwendigkeit der Nutzung spezielle Einstellungen für Esync und mögliche Erschöpfung der verfügbaren Dateideskriptoren.

    Der Kern der geleisteten Arbeit besteht darin, die Funktionalität des Standard-Systemaufrufs futex() im Linux-Kernel um die Fähigkeiten zu erweitern, die für eine optimale Synchronisierung des Thread-Pools erforderlich sind. Patches mit Unterstützung für das für Proton erforderliche Flag FUTEX_WAIT_MULTIPLE sind bereits vorhanden übertragen zur Aufnahme in den Haupt-Linux-Kernel und glibc. Die vorbereiteten Änderungen sind noch nicht im Hauptkernel enthalten, daher ist dies derzeit erforderlich etablieren ein spezieller Kernel mit Unterstützung für diese Grundelemente;

    Valve veröffentlicht Proton 4.11, eine Suite zum Ausführen von Windows-Spielen unter Linux

  • Zwischen DXVK-Erweiterung (Implementierung von DXGI, Direct3D 10 und Direct3D 11 zusätzlich zur Vulkan-API) auf Version aktualisiert 1.3Und D9VK (eine experimentelle Implementierung von Direct3D 9 auf Vulkan) bis Version 0.13f. Um die D9VK-Unterstützung in Proton zu aktivieren, verwenden Sie das Flag PROTON_USE_D9VK.
  • Die aktuelle Bildwiederholfrequenz des Monitors wird an Spiele übermittelt;
  • Es wurden Korrekturen vorgenommen, um den Mausfokus und die Fensterverwaltung zu handhaben.
  • Eingabeverzögerung und Probleme mit der Vibrationsunterstützung für Joysticks behoben, die bei einigen Spielen auftreten, insbesondere bei Spielen, die auf der Unity-Engine basieren;
  • Unterstützung für die neueste Version des OpenVR SDK hinzugefügt;
  • FAudio-Komponenten mit Implementierung von DirectX-Soundbibliotheken (API XAudio2, X3DAudio, XAPO und XACT3) wurden auf Version 19.07 aktualisiert;
  • Probleme mit dem Netzwerksubsystem in Spielen auf GameMaker wurden behoben;
  • Viele Wine-Module werden jetzt als Windows PE-Dateien statt als Linux-Bibliotheken erstellt. Während die Arbeit in diesem Bereich voranschreitet, wird der Einsatz von PE einigen DRM- und Anti-Cheat-Systemen helfen. Wenn Sie benutzerdefinierte Proton-Builds verwenden, müssen Sie höchstwahrscheinlich die virtuelle Vagrant-Maschine neu erstellen, um die PE-Dateien zu erstellen.

Bevor Valves Patches in den Haupt-Linux-Kernel übernommen werden, erfordert die Verwendung von futex() anstelle von esync die Installation eines speziellen Kernels mit Unterstützung für den Thread-Synchronisationspool, der in einer Reihe von Patches implementiert ist fsync. Für Arch Linux bereits in AUR veröffentlicht fertiges Kernel-Paket, kompiliert mit fsync-Patches. Unter Ubuntu 18.04 und 19.04 können Sie die experimentelle Kernel-PPA „linux-mfutex-valve“ verwenden (sudo add-apt-repository ppa:valve-experimental/kernel-bionic; sudo apt-get install linux-mfutex-valve);

Wenn Sie einen Kernel mit fsync-Unterstützung haben, zeigt die Konsole beim Ausführen von Proton 4.11 die Meldung „fsync: up and running“ an. Sie können das Ausschalten von fsync mit dem Flag PROTON_NO_FSYNC=1 erzwingen.

Source: opennet.ru

Kommentar hinzufügen