Inilabas ng Valve ang Proton 4.11, isang suite para sa pagpapatakbo ng mga laro sa Windows sa Linux

Kumpanya ng balbula ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° bagong sangay ng proyekto Proton 4.11, batay sa mga pag-unlad ng proyekto ng Wine at naglalayong tiyakin ang paglulunsad ng mga application sa paglalaro na nilikha para sa Windows at ipinakita sa Steam catalog sa Linux. Mga pag-unlad ng proyekto kumalat sa ilalim ng lisensya ng BSD. Sa sandaling handa na ang mga ito, ang mga pagbabagong ginawa sa Proton ay ililipat sa orihinal na Wine at mga kaugnay na proyekto, gaya ng DXVK at vkd3d.

Binibigyang-daan ka ng Proton na direktang magpatakbo ng mga Windows-only na gaming application sa kliyente ng Steam Linux. Kasama sa package ang pagpapatupad ng DirectX 10/11 (batay sa DXVK) at 12 (batay sa vkd3d), nagtatrabaho sa pamamagitan ng pagsasalin ng mga DirectX na tawag sa Vulkan API, ay nagbibigay ng pinahusay na suporta para sa mga controllers ng laro at ang kakayahang gumamit ng full-screen mode anuman ang mga resolution ng screen na sinusuportahan sa mga laro. Kung ikukumpara sa orihinal na Wine, ang pagganap ng mga multi-threaded na laro ay makabuluhang nadagdagan salamat sa paggamit ng mga patch "esync"(Eventfd Synchronization) o "futex/fsync".

Ang pangunahing mga pagbabago sa Proton 4.11:

  • Ang pag-synchronize sa Wine 4.11 codebase ay isinagawa, kung saan higit sa 3300 mga pagbabago ang inilipat (ang nakaraang sangay ay batay sa wine 4.2). 154 na mga patch mula sa Proton 4.2 ay inilipat sa itaas ng agos at ngayon ay kasama sa pangunahing pakete ng Alak;
  • Nagdagdag ng pang-eksperimentong suporta para sa mga primitive na pag-synchronize batay sa futex() system call, na nagpapababa ng CPU load kumpara sa esync. Bilang karagdagan, nalulutas ng bagong pagpapatupad ang mga problema sa pangangailangang gamitin mga espesyal na setting para sa esync at posibleng pagkaubos ng mga available na descriptor ng file.

    Ang esensya ng gawaing ginagawa ay palawakin ang functionality ng standard na futex() system call sa Linux kernel na may mga kakayahan na kinakailangan para sa pinakamainam na pag-synchronize ng thread pool. Ang mga patch na may suporta para sa FUTEX_WAIT_MULTIPLE na flag na kailangan para sa Proton ay mayroon na inilipat para sa pagsasama sa pangunahing Linux kernel at glibc. Ang mga inihandang pagbabago ay hindi pa kasama sa pangunahing kernel, kaya sa sandaling ito ay kinakailangan magtatag isang espesyal na kernel na may suporta para sa mga primitive na ito;

    Inilabas ng Valve ang Proton 4.11, isang suite para sa pagpapatakbo ng mga laro sa Windows sa Linux

  • Interlayer DXVK (pagpapatupad ng DXGI, Direct3D 10 at Direct3D 11 sa itaas ng Vulkan API) na-update sa bersyon 1.3At D9VK (isang eksperimental na pagpapatupad ng Direct3D 9 sa itaas ng Vulkan) hanggang sa bersyon 0.13f. Upang paganahin ang suporta ng D9VK sa Proton, gamitin ang bandila ng PROTON_USE_D9VK;
  • Ang kasalukuyang rate ng pag-refresh ng monitor ay ipinapadala sa mga laro;
  • Ang mga pag-aayos ay ginawa upang mahawakan ang focus ng mouse at pamamahala ng window;
  • Inayos ang input lag at mga problema sa suporta sa vibration para sa mga joystick na nangyayari sa ilang laro, lalo na sa mga larong batay sa Unity engine;
  • Nagdagdag ng suporta para sa pinakabagong bersyon ng OpenVR SDK;
  • Ang mga bahagi ng FAudio na may pagpapatupad ng mga library ng tunog ng DirectX (API XAudio2, X3DAudio, XAPO at XACT3) ay na-update upang ilabas ang 19.07;
  • Ang mga problema sa network subsystem sa mga laro sa GameMaker ay nalutas na;
  • Maraming mga module ng Wine ang binuo na ngayon bilang mga file ng Windows PE sa halip na mga library ng Linux. Habang umuusad ang trabaho sa lugar na ito, ang paggamit ng PE ay makakatulong sa ilang DRM at anti-cheat system. Kung gagamit ka ng mga custom na build ng Proton, malamang na kakailanganin mong muling likhain ang Vagrant virtual machine para buuin ang mga PE file.

Bago gamitin ang mga patch ng Valve sa pangunahing Linux kernel, ang paggamit ng futex() sa halip na esync ay nangangailangan ng pag-install ng isang espesyal na kernel na may suporta para sa thread synchronization pool na ipinatupad sa isang set ng mga patch fsync. Para sa Arch Linux sa AUR na nalathala yari na kernel package na pinagsama-sama ng mga fsync patch. Sa Ubuntu 18.04 at 19.04, maaari mong gamitin ang linux-mfutex-valve experimental kernel PPA (sudo add-apt-repository ppa:valve-experimental/kernel-bionic; sudo apt-get install linux-mfutex-valve);

Kung mayroon kang kernel na may suporta sa fsync, kapag pinatakbo mo ang Proton 4.11, ipapakita ng console ang mensaheng "fsync: up and running". Maaari mong pilitin na i-off ang fsync gamit ang PROTON_NO_FSYNC=1 flag.

Pinagmulan: opennet.ru

Magdagdag ng komento