Valve ett nytt projektgren , baserat pÄ arbetet av projektet Wine och riktat mot att möjliggöra körning pÄ Linux av spelapplikationer skapade för Windows och listade i katalogen Steam. Arbetet av projektet under BSD-licens. Med tiden kommer Àndringarna som utvecklas i Proton att överföras till original-Wine och dess nÀrstÄende projekt, sÄsom DXVK och vkd3d.
Proton gör det möjligt att direkt köra spelapplikationer som endast levereras för Windows i Linux-klienten Steam. Paketet innehÄller implementeringen av DirectX 10/11 (baserad pÄ ) och 12 (baserat pÄ ), som fungerar genom att översÀtta DirectX-anrop till Vulkan-API, vilket ger förbÀttrat stöd för spelkontroller och möjligheten att anvÀnda helskÀrmslÀge oavsett de skÀrmupplösningar som stöds av spelen. JÀmfört med original-Wine har prestandan för flerkÀrniga spel ökat avsevÀrt tack vare tillÀmpningen av patchar "» (Eventfd-synkronisering) eller «futex/fsync».
Huvud :
- Synkronisering med kodbasen Wine 4.11 har genomförts, varifrÄn mer Àn 3300 Àndringar har överförts (den tidigare grenen baserades pÄ Wine 4.2). 154 patchar frÄn Proton 4.2 har överförts upstream och ingÄr nu i huvudversionen av Wine;
- Experimentiell support för synkroniseringsprimitiv baserat pÄ systemanropet futex() har lagts till, vilket möjliggör minskad CPU-belastning jÀmfört med esync. Dessutom löser den nya implementeringen problem med behovet av att anvÀnda för esync och potentiellt uttömning av tillgÀngliga filbeskrivare.
Syftet med det pÄgÄende arbetet Àr att utöka funktionaliteten hos det inbyggda systemanropet futex() i Linux-kÀrnan med nödvÀndiga funktioner för optimal synkronisering av trÄdpooler. Patchar med nödvÀndigt stöd för Proton med flaggan FUTEX_WAIT_MULTIPLE har redan för inkludering i huvudversionen av Linux-kÀrnan och . De förberedda Àndringarna Àr fortfarande inte inkluderade i huvudversionen av kÀrnan, sÄ det Àr för nÀrvarande nödvÀndigt att ett specialkÀrna med stöd för dessa primitiva;
- skikt (implementation av DXGI, Direct3D 10 och Direct3D 11 ovanpÄ Vulkan-API) har uppdaterats till version , och (experimentell implementation av Direct3D 9 ovanpÄ Vulkan) till version 0.13f. För att inkludera D9VK-stöd i Proton bör flaggan PROTON_USE_D9VK anvÀndas;
- Ăverföringen av aktuell bildskĂ€rmsuppdateringsfrekvens till spel har sĂ€kerstĂ€llts;
- Korrigeringar relaterade till hantering av musens fokus och fönsterhantering har genomförts;
- Fördröjningar i inmatning och vibrationssupportproblem för handkontroller har ÄtgÀrdats, vilket upptrÀder i vissa spel, sÀrskilt i spel som anvÀnder Unity-motorn;
- Stöd för den senaste versionen av OpenVR SDK har lagts till;
- FAudio-komponenterna med implementation av DirectX-ljudbibliotek (API XAudio2, X3DAudio, XAPO och XACT3) har uppdaterats till version 19.07;
- Problem med nÀtverksunderstödsystemet i spel pÄ GameMaker har lösts;
- MÄnga Wine-moduler byggs nu som Windows PE-filer istÀllet för Linux-bibliotek. I takt med framstegen inom detta omrÄde kommer anvÀndningen av PE att hjÀlpa vissa DRM-system och anti-fusk. NÀr det gÀller anpassade Proton-byggnader kommer det med stor sannolikhet att vara nödvÀndigt att Äterskapa en Vagrant-virtuell maskin för att bygga PE-filer.
Innan patcharna frÄn Valve tas in i Linux-kÀrnan krÀvs det att man installerar en speciell kÀrna med stöd för trÄdsynkroniseringspoolen, som implementeras i patchpaketet, för att kunna anvÀnda futex() istÀllet för esync. . För Arch Linux finns det redan ett fÀrdigt kÀrnpaket byggt med fsync-patchar i AUR. I Ubuntu 18.04 och 19.04 kan man anvÀnda PPA-repositoriet med experimentella kÀrnor linux-mfutex-valve (sudo add-apt-repository ppa:valve-experimental/kernel-bionic; sudo apt-get install linux-mfutex-valve);
Om kÀrnan har stöd för fsync kommer konsolen att visa meddelandet «fsync: up and running» nÀr Proton 4.11 startas. Fsync kan tvingas avstÀngas med flaggan PROTON_NO_FSYNC=1.
KĂ€lla: opennet.ru
