Valve udgiver Proton 4.11, en suite til at køre Windows-spil på Linux

Ventilfirma опубликовала ny projektgren Proton 4.11, baseret på udviklingen af ​​Wine-projektet og har til formål at sikre lanceringen af ​​spilapplikationer skabt til Windows og præsenteret i Steam-kataloget på Linux. Projektudvikling spredning under BSD-licens. Efterhånden som de er klar, overføres ændringerne udviklet i Proton til den originale Wine og relaterede projekter, såsom DXVK og vkd3d.

Proton giver dig mulighed for direkte at køre Windows-kun spilapplikationer i Steam Linux-klienten. Pakken inkluderer en implementering af DirectX 10/11 (baseret på DXVK) og 12 (baseret på vkd3d), der arbejder via oversættelse af DirectX-kald til Vulkan API, giver forbedret understøttelse af spilcontrollere og mulighed for at bruge fuldskærmstilstand uanset de understøttede skærmopløsninger i spil. Sammenlignet med den originale Wine er ydeevnen af ​​multi-threaded spil blevet væsentligt øget takket være brugen af ​​patches "esync"(Eventfd Synchronization) eller "futex/fsync".

The main ændringer i Proton 4.11:

  • Synkronisering med Wine 4.11-kodebasen blev udført, hvorfra mere end 3300 ændringer blev overført (den tidligere gren var baseret på vin 4.2). 154 patches fra Proton 4.2 er blevet flyttet opstrøms og er nu inkluderet i hovedvinpakken;
  • Tilføjet eksperimentel understøttelse af synkroniseringsprimitiver baseret på futex()-systemkaldet, hvilket reducerer CPU-belastningen sammenlignet med esync. Derudover løser den nye implementering problemer med brugsbehov særlige indstillinger for esync og mulig udtømning af tilgængelige filbeskrivelser.

    Essensen af ​​det arbejde, der udføres, er at udvide funktionaliteten af ​​standard futex() systemkaldet i Linux-kernen med de nødvendige muligheder for optimal synkronisering af trådpuljen. Patches med understøttelse af FUTEX_WAIT_MULTIPLE-flaget, der er nødvendigt for Proton, findes allerede overført til inklusion i Linux-hovedkernen og glibc. De forberedte ændringer er endnu ikke inkluderet i hovedkernen, så i øjeblikket er det nødvendigt etablere en speciel kerne med støtte til disse primitiver;

    Valve udgiver Proton 4.11, en suite til at køre Windows-spil på Linux

  • Mellemlag DXVK (implementering af DXGI, Direct3D 10 og Direct3D 11 oven på Vulkan API) opdateret til version 1.3Og D9VK (en eksperimentel implementering af Direct3D 9 oven på Vulkan) op til version 0.13f. For at aktivere D9VK-understøttelse i Proton skal du bruge PROTON_USE_D9VK-flaget;
  • Den aktuelle skærmopdateringshastighed overføres til spil;
  • Der er lavet rettelser til at håndtere musefokus og vinduesstyring;
  • Rettet inputlag og problemer med vibrationsunderstøttelse for joystick, der forekommer i nogle spil, især i spil baseret på Unity-motoren;
  • Tilføjet understøttelse af den seneste version af OpenVR SDK;
  • FAudio-komponenter med implementering af DirectX-lydbiblioteker (API XAudio2, X3DAudio, XAPO og XACT3) er blevet opdateret til udgivelse 19.07;
  • Problemer med netværksundersystemet i spil på GameMaker er blevet løst;
  • Mange vinmoduler er nu bygget som Windows PE-filer i stedet for Linux-biblioteker. Efterhånden som arbejdet skrider frem på dette område, vil brugen af ​​PE hjælpe nogle DRM- og anti-cheat-systemer. Hvis du bruger brugerdefinerede Proton-builds, bliver du højst sandsynligt nødt til at genskabe den virtuelle Vagrant-maskine for at bygge PE-filerne.

Før Valves patches bliver overført til Linux-hovedkernen, kræver brug af futex() i stedet for esync installation af en speciel kerne med understøttelse af trådsynkroniseringspuljen implementeret i et sæt patches fsync. For Arch Linux i AUR allerede offentliggjort færdiglavet kernepakke kompileret med fsync-patches. På Ubuntu 18.04 og 19.04 kan du bruge linux-mfutex-valve eksperimentelle kerne PPA (sudo add-apt-repository ppa:valve-experimental/kernel-bionic; sudo apt-get install linux-mfutex-valve);

Hvis du har en kerne med fsync-understøttelse, når du kører Proton 4.11, vil konsollen vise beskeden "fsync: up and running". Du kan tvinge fsync til at blive slået fra ved at bruge PROTON_NO_FSYNC=1 flaget.

Kilde: opennet.ru

Tilføj en kommentar