Valve Π³ΠΎ ΠΈΠ·Π΄Π°Π²Π° Proton 4.11, ΠΏΠ°ΠΊΠ΅Ρ‚ Π·Π° водСњС ΠΈΠ³Ρ€ΠΈ Π½Π° Windows Π½Π° Linux

Π’Π΅Π½Ρ‚ΠΈΠ» компанија објавСно Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠŸΡ€ΠΎΡ‚ΠΎΠ½ 4.11, основанного Π½Π° Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Wine ΠΈ Π½Π°Ρ†Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° обСспСчСниС запуска Π² Linux ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, созданных для Windows ΠΈ прСдставлСнных Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Steam. Наработки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΡˆΠΈΡ€Π΅ΡšΠ΅ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†Π° BSD. Π¨Ρ‚ΠΎΠΌ сС ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ, ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ€Π°Π·Π²ΠΈΠ΅Π½ΠΈ Π²ΠΎ Proton сС прСнСсуваат Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎΡ‚ΠΎ Wine ΠΈ сроднитС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС DXVK ΠΈ vkd3d.

Proton Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Ρ‚Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π·Π° ΠΈΠ³Ρ€ΠΈ само Π·Π° Windows Π²ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ Steam Linux. ΠŸΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π° DirectX 10/11 (Π²Ρ€Π· основа Π½Π° DXVK) ΠΈ 12 (Π²Ρ€Π· основа Π½Π° vkd3d), Ρ€Π°Π±ΠΎΡ‚Π΅Ρ˜ΡœΠΈ ΠΏΡ€Π΅ΠΊΡƒ ΠΏΡ€Π΅Π²ΠΎΠ΄ Π½Π° ΠΏΠΎΠ²ΠΈΡ†ΠΈ DirectX Π΄ΠΎ Vulkan API, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° ΠΈΠ³Ρ€ΠΈ ΠΈ моТност Π·Π° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚ Π½Π° Ρ†Π΅Π» Π΅ΠΊΡ€Π°Π½ Π±Π΅Π· ΠΎΠ³Π»Π΅Π΄ Π½Π° Ρ€Π΅Π·ΠΎΠ»ΡƒΡ†ΠΈΠΈΡ‚Π΅ Π½Π° Π΅ΠΊΡ€Π°Π½ΠΎΡ‚ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ΠΈ Π²ΠΎ ΠΈΠ³Ρ€ΠΈΡ‚Π΅. Π’ΠΎ спорСдба со ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΎΡ‚ΠΎ Π²ΠΈΠ½ΠΎ, пСрформанситС Π½Π° ΠΈΠ³Ρ€ΠΈΡ‚Π΅ со повСќС нишки сС Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π·Π³ΠΎΠ»Π΅ΠΌΠ΅Π½ΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° Π½Π° Π·Π°ΠΊΡ€ΠΏΠΈ "esyncΒ» (Eventfd Synchronization) ΠΈΠ»ΠΈ Β«futex/fsyncΒ».

Π“Π»Π°Π²Π½ΠΈΡ‚Π΅ измСнСния Π² Proton 4.11:

  • Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° синхронизация с ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Wine 4.11, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ пСрСнСсСно Π±ΠΎΠ»Π΅Π΅ 3300 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (ΠΏΡ€ΠΎΡˆΠ»Π°Ρ Π²Π΅Ρ‚ΠΊΠ° ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°Π»Π°ΡΡŒ Π½Π° wine 4.2). 154 ΠΏΠ°Ρ‚Ρ‡Π° ΠΈΠ· Proton 4.2 Π±Ρ‹Π»ΠΈ пСрСнСсСны upstream ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ входят Π² основной состав Wine;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² синхронизации Π½Π° основС систСмного Π²Ρ‹Π·ΠΎΠ²Π° futex(), которая позволяСт ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° CPU ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с esync. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, новая рСализация Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ использования ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… настроСк для esync ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ исчСрпаниСм доступных Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… дСскрипторов.

    Π‘ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΡˆΡ‚Π°Ρ‚Π½ΠΎΠ³ΠΎ систСмного Π²Ρ‹Π·ΠΎΠ²Π° futex() Π² ядрС Linux возмоТностями, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ для ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ синхронизации ΠΏΡƒΠ»Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². ΠŸΠ°Ρ‚Ρ‡ΠΈ с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ для Proton ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Ρ„Π»Π°Π³Π° FUTEX_WAIT_MULTIPLE ΡƒΠΆΠ΅ прСнСсСн для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² основной состав ядра Linux ΠΈ Π“Π»ΠΈΠ±Ρ†. ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ измСнСния ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² основной состав ядра, поэтому Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС воспостави ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ядро с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ²;

    Valve Π³ΠΎ ΠΈΠ·Π΄Π°Π²Π° Proton 4.11, ΠΏΠ°ΠΊΠ΅Ρ‚ Π·Π° водСњС ΠΈΠ³Ρ€ΠΈ Π½Π° Windows Π½Π° Linux

  • ΠœΠ΅Ρ“ΡƒΡΠ»ΠΎΡ˜Π½Π° DXVK (рСализация DXGI, Direct3D 10 ΠΈ Direct3D 11 ΠΏΠΎΠ²Π΅Ρ€Ρ… API Vulkan) ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° Π΄ΠΎ вСрсии 1.3И D9VK (ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ рСализация Direct3D 9 ΠΏΠΎΠ²Π΅Ρ€Ρ… Vulkan) Π΄ΠΎ вСрсии 0.13f. Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ D9VK Π² Proton слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ PROTON_USE_D9VK;
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΈΠ³Ρ€Π°ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ частоты обновлСния ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π°;
  • ВнСсСны исправлСния, связанныС с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ фокуса курсора ΠΌΡ‹ΡˆΠΈ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΊΠ½Π°ΠΌΠΈ;
  • УстранСны Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π²Π²ΠΎΠ΄Π° ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π²ΠΈΠ±Ρ€Π°Ρ†ΠΈΠΈ для дТойстиков, ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ³Ρ€Π°Ρ…, особСнно Π² ΠΈΠ³Ρ€Π°Ρ… Π½Π° Π΄Π²ΠΈΠΆΠΊΠ΅ Unity;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° послСднСй вСрсии OpenVR SDK;
  • ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ FAudio с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ DirectX (API XAudio2, X3DAudio, XAPO ΠΈ XACT3) ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ Π΄ΠΎ выпуска 19.07;
  • Π Π΅ΡˆΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с сСтСвой подсистСмой Π² ΠΈΠ³Ρ€Π°Ρ… Π½Π° GameMaker;
  • МногиС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Wine Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Windows PE-Ρ„Π°ΠΉΠ»Ρ‹, вмСсто Linux-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. По ΠΌΠ΅Ρ€Π΅ продвиТСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² этой области использованиС PE ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ систСмам DRM ΠΈ Π°Π½Ρ‚ΠΈΡ‡ΠΈΡ‚Π°ΠΌ. Π’ случаС примСнСния собствСнноручных сборок Proton, скорСС всСго понадобится ΠΏΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ Vagrant, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ PE Ρ„Π°ΠΉΠ»Ρ‹.

Π”ΠΎ принятия Π² основной состав ядра Linux ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Valve для использования futex() вмСсто esync трСбуСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ядро с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΏΡƒΠ»Π° синхронизации ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π² Π½Π°Π±ΠΎΡ€Π΅ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ fsync. Для Arch Linux Π² AUR ΡƒΠΆΠ΅ објавСно Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ядра, собранный с ΠΏΠ°Ρ‚Ρ‡Π°ΠΌΠΈ fsync. Π’ Ubuntu 18.04 ΠΈ 19.04 ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PPA-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ядрами linux-mfutex-valve (sudo add-apt-repository ppa:valve-experimental/kernel-bionic; sudo apt-get install linux-mfutex-valve);

ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ядра с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ fsync ΠΏΡ€ΠΈ запускС Proton 4.11 Π² консоли Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ сообщСниС Β«fsync: up and runningΒ». ΠŸΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ fsync ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„Π»Π°Π³ PROTON_NO_FSYNC=1.

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€