Tvrtka Valve novi projektni grana , temeljen na rezultatima projekta Wine i usmjeren na omogućavanje pokretanja igara stvorenih za Windows unutar Linuxa, a predstavljeni su u katalogu Steam. Rezultati projekta pod BSD licencom. Kako se originalni Wine i povezani projekti, poput DXVK i vkd3d, razvijaju, tako se prenose izmjene u Proton.
Proton omogućuje izravno pokretanje igara u Linux klijentu Steam, koje su isporučene samo za Windows. Paket uključuje implementaciju DirectX 10/11 (na bazi ) i 12 (temeljeno na ), koji rade putem prevođenja poziva iz DirectX-a u API Vulkan, pruža poboljšanu podršku za igre kontrolere i mogućnost korištenja cjelokupnog zaslona neovisno o podržanim razlučivostima u igrama. U usporedbi s originalnim Wine-om, performanse višedretvenih igara su značajno poboljšane zbog primjene zakrpa „» (Eventfd Sinhronizacija) ili «futex/fsync».
Glavne :
- Sinhronizacija je izvršena s izvorom koda Wine 4.11, iz kojeg je preneseno više od 3300 izmjena (prošla verzija temeljila se na Wine 4.2). 154 zakrpe iz Proton 4.2 su prenesene upstream i sada su uključene u glavni sastav Wine;
- Eksperimentalna podrška za primitivi sinhronizacije temeljen na sistemskom pozivu futex() dodana je, što omogućuje smanjenje opterećenja na CPU u odnosu na esync. Osim toga, nova implementacija rješava probleme vezane za potrebu korištenja za esync i moguće iscrpljenje dostupnih datotečnih deskriptora.
Suština provedenog rada je proširiti funkcionalnost standardnog sistemskog poziva futex() u Linux jezgru s mogućnostima potrebnim za optimalnu sinhronizaciju skupa niti. Zakrpe s potrebnom podrškom za Proton s flagom FUTEX_WAIT_MULTIPLE već za uključivanje u glavni sastav Linux jezgra i . Pripremljene izmjene trenutno nisu uključene u glavni sastav jezgra, stoga je trenutno potrebna specijalna jezgra s podrškom za te primitivne;
- Sloj (implementacija DXGI, Direct3D 10 i Direct3D 11 preko API-a Vulkan) ažurirana je na verziju , već (eksperimentalna implementacija Direct3D 9 preko Vulkan) na verziju 0.13f. Za uključivanje podrške D9VK u Proton potrebno je koristiti flag PROTON_USE_D9VK;
- Osigurana je prijenos igara trenutne brzine osvježavanja monitora;
- Ispravljene su greške u vezi s obradom fokusa miša i upravljanjem prozorima;
- Uklonjene su kašnjenja ulaza i problemi s podrškom za vibraciju za kontrolere, koji se pojavljuju u nekim igrama, posebno u igrama na Unity engineu;
- Dodana je podrška za najnoviju verziju OpenVR SDK;
- FAudio komponenta s implementacijom zvučnih biblioteka DirectX (API XAudio2, X3DAudio, XAPO i XACT3) ažurirana je na izdanje 19.07;
- Riješeni su problemi s mrežnim sustavom u igrama na GameMaker;
- Mnogi moduli Wine sada se izgrađuju kao Windows PE-datoteke, umjesto Linux biblioteka. Kako se rad na ovom području nastavlja, korištenje PE-a pomoći će nekim DRM i anti-cheat sustavima. U slučaju korištenja vlastitih izgrađenih verzija Proton, vjerojatno će biti potrebno ponovno stvoriti Vagrant virtualnu mašinu kako bi se izgradile PE datoteke.
Prije uključivanja u glavno jezgro Linuxa, zakrpe tvrtke Valve koje koriste futex() umjesto esync zahtijevaju instalaciju specijaliziranog jezgra koje podržava skupinu za sinkronizaciju niti, implementiranu u skupu zakrpa. . Za Arch Linux već postoji u AUR-u spreman paket jezgra, sastavljen s zakrpama fsync. U Ubuntu 18.04 i 19.04 možete koristiti PPA repozitorij s eksperimentalnim jezgrama linux-mfutex-valve (sudo add-apt-repository ppa:valve-experimental/kernel-bionic; sudo apt-get install linux-mfutex-valve);
Ako postoji jezgro s podrškom za fsync, pokretanjem Proton 4.11 u konzoli će se ispisati poruka "fsync: up and running". Možete prisilno isključiti fsync koristeći zastavicu PROTON_NO_FSYNC=1.
Izvor: opennet.ru
