Компания Valve нов клон на проекта , основан на разработките на проектa Wine и насочен към осигуряване на стартиране в Linux на игрови приложения, създадени за Windows и представени в каталога Steam. Разработките на проекта под лицензией BSD. С развитием оригинального Wine и связанных проектов, таких как DXVK и vkd3d, изменения, разработанные в Proton, будут переноситься.
Proton позволява директно да стартира игрални приложения, предоставени само за Windows, в Linux клиента на Steam. Пакетът включва реализация на DirectX 10/11 (на базата на ) и 12 (на база ), работа през транслация на DirectX в Vulkan API, предоставя подобрена поддръжка за игрови контролери и възможността за използване на режим на цял екран независимо от поддържаните в игрите резолюции. В сравнение с оригиналното Wine, значително е увеличена производителността на многопоточни игри благодарение на приложението на патчовете „» (Синхронизация Eventfd) или «futex/fsync».
Основни :
- Извършена е синхронизация с кодовата база на Wine 4.11, от която са пренесени над 3300 промени (предишната версия се основаваше на Wine 4.2). 154 патча от Proton 4.2 бяха пренесени upstream и вече са част от основния състав на Wine;
- Добавена е експериментална поддръжка на примитиви за синхронизация на базата на системния извикване futex(), който позволява намаляване на натоварването на CPU в сравнение с esync. Освен това, новата реализация решава проблемите с необходимостта от използване на за esync и възможното изчерпване на наличните файлови дескриптори.
Същността на извършената работа е да разшири функционалността на стандартния системен извикване futex() в ядрото на Linux с необходимите възможности за оптимална синхронизация на поточния пул. Патчове с необходимата поддръжка на флага FUTEX_WAIT_MULTIPLE са вече за включване в основния състав на ядрото на Linux и . Подготвените промени все още не са включени в основния състав на ядрото, затова в момента е необходимо специално ядро с поддръжка на тези примитиви;
- Слой (реализация на DXGI, Direct3D 10 и Direct3D 11 върху API Vulkan) е обновена до версия , а (експериментална реализация на 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
