Kompania Valve projekti i ri , i bazuar në zhvillimet e projektit Wine dhe i orientuar për të mundësuar ekzekutimin në Linux të aplikacioneve lojëra, të krijuara për Windows dhe të paraqitura në katalogun Steam. Zhvillimet e projektit në licencën BSD. Së bashku me përgatitjet e Wine origjinal dhe projekte të tjera përkatëse si DXVK dhe vkd3d, ndryshimet e zhvilluara në Proton transferohen.
Proton lejon ekzekutimin direkt të aplikacioneve lojërash në klientin Linux të Steam, të dorëzuara vetëm për Windows. Paketa përfshin zbatimin e DirectX 10/11 (në bazë të ) dhe 12 (në bazë të ), që funksionojnë përmes transformimit të thirrjeve DirectX në API Vulkan, ofron mbështetje të përmirësuar për kontrollorët e lojërave dhe mundësinë e përdorimit të modit të plotë ekranit pavarësisht nga rezolutat e mbështetura në lojëra. Krahasuar me Wine origjinale, performanca e lojërave me shumë procese është rritur ndjeshëm falë aplikimit të patch-eve "» (Sinkronizimi i Eventfd) ose «futex/fsync».
Main :
- ĂshtĂ« realizuar sinkronizimi me bazĂ«n e kodit Wine 4.11, nga e cila janĂ« transferuar mĂ« shumĂ« se 3300 ndryshime (dalia e kaluar ishte bazuar nĂ« wine 4.2). 154 patches nga Proton 4.2 janĂ« transferuar upstream dhe tani janĂ« pĂ«rfshirĂ« nĂ« pĂ«rbĂ«rjen kryesore tĂ« Wine;
- ĂshtĂ« shtuar mbĂ«shtetje eksperimentale pĂ«r primitive sinkronizimi tĂ« bazuara nĂ« thirrjen e sistemit futex(), e cila lejon reduktimin e ngarkesĂ«s mbi CPU nĂ« krahasim me esync. PĂ«r mĂ« tepĂ«r, realizimi i ri zgjidh problemet me nevojĂ«n pĂ«r tĂ« pĂ«rdorur pĂ«r esync dhe shterimin e mundshĂ«m tĂ« descriptorĂ«ve tĂ« skedarĂ«ve tĂ« disponueshĂ«m.
Qëllimi i punës së kryer është të zgjeroni funksionalitetin e thirrjes standarde të sistemit futex() në bërthamën Linux me mundësitë e nevojshme për sinkronizimin optimal të grupeve të shkallëve. Patch-et me mbështetje të nevojshme për Proton për flamurin FUTEX_WAIT_MULTIPLE tashmë për t'u përfshirë në përbërjen kryesore të bërthamës Linux dhe . Ndryshimet e përgatitura ende nuk janë përfshirë në përbërjen kryesore të bërthamës, prandaj për momentin është e nevojshme një bërthamë speciale me mbështetje për këto primitive;
- Lidhja (implementimi i DXGI, Direct3D 10 dhe Direct3D 11 mbi API Vulkan) është përditësuar në versionin , ndërsa (implementimi eksperimental i Direct3D 9 mbi Vulkan) në versionin 0.13f. Për të aktivizuar mbështetje D9VK në Proton duhet të përdoret flamuri PROTON_USE_D9VK;
- është siguruar transmetimi i ndjesisë aktuale të rifreskimit të monitorit për lojërat;
- janë kryer rregullime lidhur me trajtimin e fokusit të kursorit të miut dhe menaxhimit të dritareve;
- janë eliminuar vonesat e hyrjes dhe problemet me mbështetje për vibrimin për joystick-et, që shfaqen në disa lojëra, veçanërisht në lojërat me motorin Unity;
- është shtuar mbështetje për versionin më të fundit të OpenVR SDK;
- Komponentët FAudio me implementimin e bibliotekave të zërit DirectX (API XAudio2, X3DAudio, XAPO dhe XACT3) janë përditësuar në versionin 19.07;
- janë zgjidhur problemet me sistemin e rrjetit në lojërat në GameMaker;
- Shumë module të Wine tani ndërtohen si skeda Windows PE, në vend të bibliotekave Linux. Me avancimin e punës në këtë fushë, përdorimi i PE do t'i ndihmojë disa sisteme DRM dhe anti-bashkim. Në rastin e përdorimit të ndërtimeve të vetë- krijuara të Proton, është shumë e mundur që do të nevojitet të rinovohet makina virtuale Vagrant për të ndërtuar skedarët PE.
Përpara se patch-et e kompanisë Valve të pranohen në bërthamën kryesore të Linux, për të përdorur futex() në vend të esync, kërkohet të instaloni një bërthamë speciale me mbështetje për grupin e sinkronizimit të thread-eve, të realizuar në paketën e patch-eve. . Për Arch Linux në AUR tashmë ekziston një paketë bërthamë e gatshme, e ndërtuar me patch-e fsync. Në Ubuntu 18.04 dhe 19.04, mund të përdorni repositorin PPA me bërthamat eksperimentale linux-mfutex-valve (sudo add-apt-repository ppa:valve-experimental/kernel-bionic; sudo apt-get install linux-mfutex-valve);
Me një bërthamë që mbështet fsync, kur filloni Proton 4.11, do të shfaqet mesazhi "fsync: up and running" në konsolë. Mund ta çaktivizoni fsync duke përdorur flag-un PROTON_NO_FSYNC=1.
Burimi: opennet.ru
