A Valve a projekt új ágát , amely a Wine projekt eredményeire épül, és célja, hogy biztosítsa a Windows-ra készült, a Steam katalógusában szereplő játékalkalmazások Linux alatt történő futtatását. A projekt eredményei BSD-licenc alatt. A Protonban kifejlesztett módosítások a Wine-ba és a kapcsolódó projektekba, mint például a DXVK és a vkd3d, készülve kerülnek átadásra.
A Proton lehetővé teszi a Linux kliensek Steam-játékalkalmazásainak közvetlen futtatását, amelyek csak Windows-ra készültek. A csomag tartalmazza a DirectX 10/11 (a ) és 12 (a ) megvalósításait, amelyek a DirectX hívások Vulkan API-ra történő átírásán keresztül működnek, javítva a játékkontrollerek támogatását és lehetőséget adva a teljes képernyős mód használatára, függetlenül a játékok által támogatott képernyőfelbontásoktól. A hagyományos Wines-hez képest jelentősen megnövekedett a több szálon futó játékok teljesítménye az "" (Eventfd Synchronization) vagy "futex/fsync" alkalmazásának köszönhetően.
Fő :
- A Wine 4.11 kódbázisához való szinkronizálás történt, ahonnan több mint 3300 módosítást átvittek (a korábbi ág a wine 4.2-re épült). A Proton 4.2-ből 154 javítást vittek upstream, és most már a Wine fő összetevőjébe tartoznak;
- Kísérleti támogatás került bevezetésre a futex() rendszerhívás alapú szinkronizálási primitívekhez, amely csökkenti a CPU terhelést az esync-hez képest. Ezen kívül az új megvalósítás megoldja azt a problémát, hogy kell használni az esync-hez és a rendelkezésre álló fájl leírók kimerülésének lehetőségével.
A végzett munka célja a Linux kernelben található futex() alapvető rendszerhívás funkcionalitásának kiterjesztése olyan funkciókkal, amelyek szükségesek a szálak optimalizált szinkronizálásához. A Protonhoz szükséges patch-ek, amelyek támogatják a FUTEX_WAIT_MULTIPLE jelzőt, már a Linux kernel fő összetevőjébe való felvételre, és . Az elkészített változtatások jelenleg még nem kerültek be a fő kernel összetevőjébe, ezért most szükséges A réteg
- (DXGI, Direct3D 10 és Direct3D 11 Vulkan API-ra történő megvalósítása) frissítve lett a verzióra, míg , és (Direct3D 9 előzetes megvalósítása Vulkan fölött) 0.13f verzióig. A D9VK támogatás aktiválásához használja a PROTON_USE_D9VK zászlót;
- Biztosítva van a játékok számára a monitor jelenlegi frissítési frekvenciájának átvitele;
- Javításokat végeztek az egérkurzor fókuszálásának és az ablakkezelésnek a kezelésében;
- Megszüntették a bemeneti késleltetéseket és a rezgéstámogatással kapcsolatos problémákat a joystickok számára, amelyek bizonyos játékokban, különösen az Unity motorral készült játékokban jelentkeztek;
- Hozzáadva az OpenVR SDK legújabb verziójának támogatása;
- Az FAudio összetevők a DirectX hangkönyvtárak (XAudio2, X3DAudio, XAPO és XACT3 API) megvalósításával frissítve lettek a 19.07 kiadásra;
- Hálózati alrendszerrel kapcsolatos problémák megoldva a GameMaker játékokban;
- Sok Wine modul most Windows PE fájlokká van összegyűjtve, a Linux könyvtárak helyett. A munkálatok előrehaladtával a PE használata segíthet egyes DRM rendszerek és csalásellenes szoftverek esetében. Ha saját Protonu összeállításokat alkalmaz, valószínűleg újra kell generálni a Vagrant virtuális gépet a PE fájlok összeállításához.
A Valve cég által a futex() helyett az esync használatához átvett kernelpatch-ek fő kernelbe való integrálásához speciális kernel telepítése szükséges, amely támogatja a szálak szinkronizáló medencéjét a patch-gyűjteményben. . Az Arch Linuxhoz az AUR-ban már a fsync patch-ekkel összeállított kernel csomag.
Fsync támogatással rendelkező kernel esetén a Proton 4.11 indításakor a konzolban megjelenik az üzenet: «fsync: up and running». A fsync kikapcsolható a PROTON_NO_FSYNC=1 zászló használatával.
Forrás: opennet.ru
