Компанія Valve випустила Proton 4.11, пакет для запуску Windows-ігор у Linux

Компанія Valve опублікувала нову гілку проекту Протон 4.11, заснованого на напрацюваннях проекту Wine та націленого на забезпечення запуску в Linux ігрових програм, створених для Windows та представлених у каталозі Steam. Напрацювання проекту поширюються під ліцензією BSD. У міру готовності в оригінальний Wine і супутні проекти, такі як DXVK і vkd3d, переносяться зміни, що розвиваються в Proton.

Proton дозволяє безпосередньо запускати в Linux-клієнті Steam ігрові програми, що поставляються лише для Windows. Пакет включає реалізацію DirectX 10/11 (на базі DXVK) та 12 (на базі VKD3D), що працюють через трансляцію викликів DirectX в API Vulkan, надає покращену підтримку ігрових контролерів і можливість використання повноекранного режиму незалежно від дозволів екрану, що підтримуються в іграх. Порівняно з оригінальним Wine значно збільшено продуктивність багатопотокових ігор завдяки застосуванню патчів.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 та glibc. Підготовлені зміни поки не включені до основного складу ядра, тому на даний момент необхідно встановити спеціальне ядро ​​з підтримкою даних примітивів;

    Компанія Valve випустила Proton 4.11, пакет для запуску Windows-ігор у Linux

  • прошарок DXVK (Реалізація DXGI, Direct3D 10 і Direct3D 11 поверх API Vulkan) оновлено до версії 1.3, а Д9ВК (Експериментальна реалізація 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 потрібно встановити спеціальне ядро ​​з підтримкою пулу синхронізації потоків, що реалізується в наборі патчів фсинк. Для 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

Додати коментар або відгук