Valve, Windows oyunlarını Linux'ta çalıştırmak için bir paket olan Proton 4.11'ı piyasaya sürdü

Vana Şirketi yayınlanan новую ветку проекта proton 4.11, основанного на наработках проекта Wine и нацеленного на обеспечение запуска в Linux игровых приложений, созданных для Windows и представленных в каталоге Steam. Наработки проекта yayılmış BSD lisansı altındadır. Proton'da geliştirilen değişiklikler hazır olduklarında orijinal Wine'a ve DXVK ve vkd3d gibi ilgili projelere aktarılır.

Proton, Steam Linux istemcisinde yalnızca Windows'a özel oyun uygulamalarını doğrudan çalıştırmanıza olanak tanır. Paket, DirectX 10/11'in bir uygulamasını içerir (tabanlı) DXVK) ve 12 (dayalı vkd3d), DirectX çağrılarının Vulkan API'sine çevrilmesi yoluyla çalışan oyun denetleyicileri için gelişmiş destek ve oyunlarda desteklenen ekran çözünürlüklerinden bağımsız olarak tam ekran modunu kullanma yeteneği sağlar. Orijinal Wine ile karşılaştırıldığında yama kullanımı sayesinde çok iş parçacıklı oyunların performansı önemli ölçüde arttı "esync» (Eventfd Synchronization) или «futex/fsync».

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

    Valve, Windows oyunlarını Linux'ta çalıştırmak için bir paket olan Proton 4.11'ı piyasaya sürdü

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

Kaynak: opennet.ru

Yorum ekle