Valve Company
Proton Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π° ΠΈΠ³ΡΠΈ ΡΠ°ΠΌΠΎ Π·Π° Windows Π² Steam Linux ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΠ°ΠΊΠ΅ΡΡΡ Π²ΠΊΠ»ΡΡΠ²Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° DirectX 10/11 (Π±Π°Π·ΠΈΡΠ°Π½ Π½Π°
ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ°
- ΠΠ΅ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ΅Π½Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Ρ ΠΊΠΎΠ΄ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π° Wine 4.11, ΠΎΡ ΠΊΠΎΡΡΠΎ Π±ΡΡ Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»Π΅Π½ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 3300 ΠΏΡΠΎΠΌΠ΅Π½ΠΈ (ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΡ ΠΊΠ»ΠΎΠ½ Π±Π΅ΡΠ΅ Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° wine 4.2). 154 ΠΏΠ°ΡΠ° ΠΎΡ Proton 4.2 Π±ΡΡ Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ΅Π½ΠΈ Π½Π°Π³ΠΎΡΠ΅ ΠΈ Π²Π΅ΡΠ΅ ΡΠ° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ Wine;
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΈ Π·Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ futex(), ΠΊΠΎΠ΅ΡΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ° Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ esync. Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Π½ΠΎΠ²Π°ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ°Π²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅
ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π·Π° esync ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΡΠ΅ΡΠΏΠ²Π°Π½Π΅ Π½Π° Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈ.Π‘ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΈΠ·Π²ΡΡΡΠ΅Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π΅ Π΄Π° ΡΠ΅ ΡΠ°Π·ΡΠΈΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ futex() Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΎΠΏΡΠΈΠΌΠ°Π»Π½Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠ»Π° ΠΎΡ Π½ΠΈΡΠΊΠΈ. ΠΠ΅ΡΠ΅ ΠΈΠΌΠ° ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈ Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ»Π°Π³Π° FUTEX_WAIT_MULTIPLE, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° Proton
ΠΏΡΠ΅Ρ Π²ΡΡΠ»Π΅Π½ Π·Π° Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ ΡΠ΄ΡΠΎ ββΠ½Π° Linux ΠΈglibc . ΠΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ ΡΠ΄ΡΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ°Π½ΠΎΠ²ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΡΠ΄ΡΠΎ ββΡ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ΅Π·ΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΈ; - ΠΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ ΡΠ»ΠΎΠΉ
DXVK (ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π΅ Π½Π° DXGI, Direct3D 10 ΠΈ Direct3D 11 Π²ΡΡΡ Ρ Vulkan API) Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π΄ΠΎ Π²Π΅ΡΡΠΈΡ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 ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅.
ΠΡΠ΅Π΄ΠΈ ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈΡΠ΅ Π½Π° Valve Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΈΠ΅ΡΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ ΡΠ΄ΡΠΎ ββΠ½Π° Linux, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° futex() Π²ΠΌΠ΅ΡΡΠΎ esync ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΡΠ΄ΡΠΎ ββΡ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΡΠ»Π° Π·Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΈΡΠΊΠΈ, Π²Π½Π΅Π΄ΡΠ΅Π½ Π² Π½Π°Π±ΠΎΡ ΠΎΡ ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈ
ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΡΠ΄ΡΠΎ ββΡ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° fsync, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Proton 4.11, ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ βfsync: Π³ΠΎΡΠΎΠ² ΠΈ ΡΠ°Π±ΠΎΡΠΈβ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅ fsync Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ»Π°Π³Π° PROTON_NO_FSYNC=1.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru