Das Unternehmen Valve hat Proton 4.11 veröffentlicht, ein Paket zum Ausführen von Windows-Spielen unter Linux

Das Unternehmen Valve veröffentlicht neuen Projektzweig Proton 4.11, basierend auf den Entwicklungen des Wine-Projekts und darauf ausgerichtet, die Ausführung von in Windows erstellten Spielen unter Linux zu gewährleisten, die im Steam-Katalog angeboten werden. Die Entwicklungen des Projekts unter der freien Lizenz Apache 2.0 verbreitet. unter der BSD-Lizenz. Mit der Fertigstellung werden die in Proton entwickelten Änderungen in das ursprüngliche Wine und andere Projekte wie DXVK und vkd3d übertragen.

Proton ermöglicht es, Spieleanwendungen, die nur für Windows bereitgestellt werden, direkt im Linux-Client von Steam zu starten. Das Paket enthält eine Implementierung von DirectX 10/11 (basierend auf DXVK) und 12 (basierend auf vkd3d), die durch die Übersetzung von DirectX-Aufrufen in die Vulkan-API arbeitet, bietet eine verbesserte Unterstützung für Spielcontroller und die Möglichkeit, den Vollbildmodus unabhängig von den in den Spielen unterstützten Bildschirmauflösungen zu verwenden. Im Vergleich zum ursprünglichen Wine wird die Leistung von Mehrkernspielen durch den Einsatz von Patches "esync» (Eventfd-Synchronisierung) oder «futex/fsync».

Haupt- Änderungen in Proton 4.11:

  • Die Synchronisierung mit dem Code-Basis von Wine 4.11 wurde durchgeführt, aus der mehr als 3300 Änderungen übernommen wurden (der vorherige Zweig basierte auf Wine 4.2). 154 Patches aus Proton 4.2 wurden upstream übertragen und sind jetzt Teil der Hauptversion von Wine;
  • Es wurde experimentelle Unterstützung für Synchronisierungsprimitive auf Basis des Systemaufrufs futex() hinzugefügt, die die CPU-Belastung im Vergleich zu esync reduziert. Darüber hinaus löst die neue Implementierung Probleme mit der Notwendigkeit der Verwendung von besonderen Einstellungen für esync und der möglichen Erschöpfung verfügbarer Dateideskriptoren.

    Der Kern der durchgeführten Arbeit besteht darin, die Funktionalität des integrierten Systemaufrufs futex() im Linux-Kernel mit den für eine optimale Synchronisierung von Thread-Pools erforderlichen Möglichkeiten zu erweitern. Patches mit der für Proton erforderlichen Unterstützung des FUTEX_WAIT_MULTIPLE-Flags sind bereits wurden zur Aufnahme in die Hauptversion des Linux-Kernels und Glibc. Die vorbereiteten Änderungen sind derzeit nicht in die Hauptversion des Kernels integriert, weshalb momentan installieren ein spezieller Kernel mit Unterstützung für diese Primitiven erforderlich ist;

    Das Unternehmen Valve hat Proton 4.11 veröffentlicht, ein Paket zum Ausführen von Windows-Spielen unter Linux
  • Die Schicht DXVK (DXGI-Implementierung, Direct3D 10 und Direct3D 11 über die Vulkan-API) auf die Version 1.3, und D9VK (experimentelle Implementierung von Direct3D 9 über Vulkan) auf Version 0.13f aktualisiert. Um die Unterstützung von D9VK in Proton zu aktivieren, sollte das Flag PROTON_USE_D9VK verwendet werden;
  • Die Übertragung der aktuellen Bildwiederholfrequenz des Monitors für Spiele wurde sichergestellt;
  • Es wurden Korrekturen zur Behandlung des Mauszeigerfokus und des Fensterhandlings vorgenommen;
  • Eingabeverzögerungen und Probleme mit der Vibrationsunterstützung für Joysticks wurden behoben, die in einigen Spielen, insbesondere in Spielen auf der Unity-Engine, auftreten können;
  • Unterstützung für die neueste Version des OpenVR SDK hinzugefügt;
  • Die FAudio-Komponenten mit der Implementierung der DirectX-Audio-Bibliotheken (API XAudio2, X3DAudio, XAPO und XACT3) wurden auf die Version 19.07 aktualisiert;
  • Probleme mit dem NetzwerkSubsystem in GameMaker-Spielen wurden behoben;
  • Viele Wine-Module werden jetzt als Windows PE-Dateien anstelle von Linux-Bibliotheken kompiliert. Mit fortschreitender Arbeit in diesem Bereich wird die Verwendung von PE einigen DRM-Systemen und Anti-Cheat-Lösungen helfen. Bei der Verwendung von handgefertigten Proton-Builds wird wahrscheinlich eine erneute Erstellung der Vagrant-VM erforderlich sein, um PE-Dateien zu erstellen.

Vor der Integration von Patches von Valve in den Hauptkern von Linux, die futex() anstelle von esync verwenden, ist es erforderlich, einen speziellen Kern mit Unterstützung für den Thread-Synchronisierungspool zu installieren, der im Patch-Set implementiert ist. fsync. Für Arch Linux ist bereits im AUR veröffentlicht ein fertiges Kernpaket mit fsync-Patches verfügbar. In Ubuntu 18.04 und 19.04 kann das PPA-Repository mit experimentellen Kernen linux-mfutex-valve verwendet werden (sudo add-apt-repository ppa:valve-experimental/kernel-bionic; sudo apt-get install linux-mfutex-valve);

Wenn ein Kernel mit fsync-Unterstützung vorhanden ist, wird beim Start von Proton 4.11 in der Konsole die Meldung „fsync: up and running“ ausgegeben. Fallback kann fsync mit dem Flag PROTON_NO_FSYNC=1 zwangsweise deaktiviert werden.

Quelle: opennet.ru

60GB SSD 8Gb DDR4