Valve llança Proton 4.11, una suite per executar jocs de Windows a Linux

Companyia de vàlvules publicat новую ветку проекта Protó 4.11, основанного на наработках проекта Wine и нацеленного на обеспечение запуска в Linux игровых приложений, созданных для Windows и представленных в каталоге Steam. Наработки проекта propagació sota llicència BSD. Tan bon punt estiguin a punt, els canvis desenvolupats a Proton es transfereixen al Wine original i projectes relacionats, com ara DXVK i vkd3d.

Proton us permet executar directament aplicacions de joc només per a Windows al client Steam Linux. El paquet inclou una implementació de DirectX 10/11 (basada en DXVK) i 12 (basat en vkd3d), que treballa mitjançant la traducció de trucades de DirectX a l'API Vulkan, ofereix un suport millorat per als controladors de joc i la possibilitat d'utilitzar el mode de pantalla completa independentment de les resolucions de pantalla admeses als jocs. En comparació amb el Wine original, el rendiment dels jocs multifil ha augmentat significativament gràcies a l'ús de pedaços "sincronització» (Eventfd Synchronization) или «futex/fsync».

El principal изменения в 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 уже transferit для включения в основной состав ядра Linux и glibc. Подготовленные изменения пока не включены в основной состав ядра, поэтому на данный момент необходимо establir специальное ядро с поддержкой данных примитивов;

    Valve llança Proton 4.11, una suite per executar jocs de Windows a Linux

  • Capa intermedia DXVK (реализация DXGI, Direct3D 10 и Direct3D 11 поверх API Vulkan) обновлена до версии 1.3I 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 уже publicat готовый пакет ядра, собранный с патчами 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.

Font: opennet.ru

Afegeix comentari