Ua tatalaina e Valve le Proton 4.11, o se vaega mo le fa'agaioia o taaloga Windows i luga o Linux

Kamupani Valve lomia новую ветку проекта Proton 4.11, faʻavae i luga o atinaʻe o le Vine project ma faʻamoemoe e faʻamautinoa le faʻalauiloaina o talosaga taʻaloga na faia mo Windows ma tuʻuina atu i le Steam catalog i Linux. Atina'e o poloketi salalau i lalo ole laisene BSD. A'o latou sauni, o suiga na atiaʻe i Proton ua faʻafeiloaʻi i le uluai Uaina ma galuega faʻatatau, e pei o le DXVK ma le vkd3d.

Proton fa'atagaina oe e fa'atautaia sa'o Windows-na'o ta'aloga ta'aloga i le Steam Linux client. O le afifi e aofia ai le faʻatinoina o le DirectX 10/11 (faʻavae i luga OXVK) ma le 12 (faʻavae i luga vkd3d), galue e ala i le DirectX valaau i le Vulkan API, e maua ai le faʻaleleia atili o le lagolago mo taʻaloga taʻaloga ma le mafai ona faʻaogaina le ata atoa e tusa lava po o le a le faʻaiʻuga o le lau e lagolagoina i taʻaloga. Pe a faʻatusatusa i le uluai Uaina, o le faʻatinoga o taʻaloga tele-filo ua matua faʻateleina faʻafetai i le faʻaogaina o patches "esync» (Eventfd Synchronization) или «futex/fsync».

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

    Ua tatalaina e Valve le Proton 4.11, o se vaega mo le fa'agaioia o taaloga Windows i luga o Linux

  • Interlayer OXVK (реализация DXGI, Direct3D 10 и Direct3D 11 поверх API Vulkan) обновлена до версии 1.3ma O9VK (экспериментальная реализация 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 уже lomia готовый пакет ядра, собранный с патчами 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.

puna: opennet.ru

Faaopoopo i ai se faamatalaga