Valve выпустила Proton 11.0-1 Beta 3: обновление FEX-2605 для ARM64 и подготовка к Snapdragon X2 Elite

2026-05-13 111 комментарии
Valve представила Proton 11.0-1 Beta 3 – обновление, затрагивающее только ARM64-сборку. В Proton интегрирован FEX-2605 с ускорением x87-инструкций, исправлениями ARM64EC и первыми оптимизациями под Snapdragon X2 Elite

Valve опубликовала Proton 11.0-1 Beta 3 — небольшое обновление, затрагивающее только сборку под ARM64. Изменение единственное: эмулятор FEX обновлен до версии FEX-2605 от . На x86-64 поведение Proton 11 Beta 3 совпадает со второй бета-версией, остальные компоненты прежние. Параллельно с этим Proton Experimental также получил изменения, попавшие в Beta 3.

Что меняет FEX-2605 для ARM64-сборки Proton

FEX — это эмулятор x86 и x86-64 пользовательского режима для ARM64 устройств Linux. В связке с Proton и Lepton он образует часть программной базы для будущей гарнитуры Steam Frame, в которой используется SteamOS на ARM-процессоре Qualcomm Snapdragon. Без FEX на ARM-устройстве из библиотеки Steam запустилось бы только небольшое количество игр с нативными ARM-сборками.

В FEX-2605 разработчики продолжили оптимизацию инструкций x87 в пути с пониженной точностью: на этот раз быстрее стали ATAN, FYL2X, FSCALE и F2XM1 — типичный прирост на этих инструкциях составляет от 2 до 4 раз, в зависимости от ввода. Это в первую очередь сказывается на 32-битных играх.

Из исправлений ошибок отдельно отмечены:

  • CMPXCHG8B/16B неправильно выставляли флаги процессора — редкая, но потенциально провоцирующая активное ожидание в памяти ошибка.
  • SSE-инструкции MAXPS и MAXPD некорректно разрешали ничью на входах Inf/NaN; аналогичные проблемы с проверкой денормализованных результатов исправлены и в части x87-операций.
  • Сохранение и восстановление 16-битных сегментных регистров не работало корректно.
  • Запрос DCZID_EL0 в режиме ARM64EC добавлен, чтобы корректно работал CLZERO — ранее приложения, безусловно использующие эту инструкцию, падали.

Падение при подключённом контроллере в режиме ARM64EC

В FEX устранили падение в режиме ARM64EC при подключённом контроллере. Корень проблемы лежал в механизме suspend doorbell: когда Wine ставит эмулируемый поток на паузу, он выставляет флаг, который FEX отслеживает для безопасной остановки. В одной из веток обработки скрывалось состояние гонки между потоками и сигналами, проявлявшееся только при очень частых запросах на приостановку. Контроллер DualSense через SDL генерировал такие запросы почти непрерывно — и тем самым превратился в живой регрессионный тест.

Подготовка к Snapdragon X2 Elite

Основная масса нового кода в FEX-2605 связана с платформой Qualcomm Snapdragon X2 Elite, которая впервые попала в руки команды. Полноценной поддержки Linux у этих устройств пока нет — Qualcomm дорабатывает её в ядре, и шанс получить рабочий GPU появится не раньше Linux 7.1 или 7.2. По итогам первых тестов в FEX внесены следующие правки и наблюдения:

  • Аппаратный генератор случайных чисел RNDRRS по-прежнему сломан, как и на Snapdragon X1 Elite, поэтому функция RNG отключена.
  • Счётчик циклов работает на частоте 19,2 МГц — платформа остаётся в рамках ARMv9.0-a, тогда как ARMv9.1-a требует счётчик на 1 ГГц.
  • Платформа поддерживает SVE2 со 128-битными регистрами, SME и виртуализацию KVM.
  • Реализовано новое поведение атомарных операций.

Последний пункт важен для эмуляции модели памяти x86. В предыдущих ARM-чипах атомарная операция, пересекающая 16-байтовую границу, вызывала SIGBUS, и FEX перехватывал его, чтобы эмулировать split-lock программно — это и медленно, и небезопасно из-за риска разрыва значения. В Snapdragon X2 Elite SIGBUS на RMW-операциях возникает только при пересечении 64-байтной границы кеш-линии, что куда ближе к поведению x86. Инструкции acquire load и release store при этом по-прежнему вызывают SIGBUS на 16-байтной границе — именно этот случай чаще всего создаёт просадки в играх с ручными memcpy и memset.

Как протестировать Proton 11.0 Beta

Proton распространяется только через клиент Steam – отдельного установщика нет. Сам клиент доступен для большинства дистрибутивов Linux и предустановлен в SteamOS на Steam Deck. Proton 11.0 Beta появляется в выпадающем списке инструментов совместимости автоматически – вручную скачивать его не нужно, клиент загрузит сборку при первом запуске игры через эту версию.

Установить клиент Steam

Клиент Steam можно скачать как DEB-пакет для Linux. Альтернатива — установка через пакетный менеджер дистрибутива:

  • Arch Linux, CachyOS, Manjaro: sudo pacman -S steam (требуется включённый репозиторий multilib);
  • Ubuntu, Linux Mint, Pop!_OS: sudo apt install steam-installer или установка пакета .deb с официального сайта;
  • Fedora: sudo dnf install steam (требуется репозиторий RPM Fusion non-free);
  • openSUSE: sudo zypper install steam;
  • любой дистрибутив с Flatpak: flatpak install flathub com.valvesoftware.Steam;
  • Steam Deck и SteamOS — клиент уже установлен, отдельные действия не требуются.

Назначить Proton 11.0 Beta для игры

  • Открыть «Библиотеку» и выбрать нужную Windows-игру;
  • нажать на значок шестерёнки справа и перейти в «Свойства»;
  • открыть вкладку «Совместимость»;
  • включить параметр «Принудительно использовать выбранный инструмент совместимости Steam Play»;
  • в выпадающем списке выбрать «Proton 11.0 (Beta)»;
  • закрыть окно — изменения сохраняются автоматически.

Окно «Свойства» игры DOOM Eternal в Steam: в разделе «Совместимость» включён параметр «Принудительно использовать выбранный инструмент совместимости Steam Play» и выбрана версия Proton 11.0 (Beta) Выбор Proton 11.0 (Beta) во вкладке «Совместимость» свойств игры

При следующем запуске игра стартует уже через Proton 11.0 Beta 1 – клиент скачает сборку перед первым запуском. Если возникнут проблемы, в том же меню можно вернуть предыдущую версию — Proton 10.0-4 или Proton Experimental. Сборка помечена как бета-версия, поэтому для основного игрового сеанса Valve рекомендует оставаться на стабильной ветке Proton 10. Отчёты об ошибках принимаются в репозитории проекта на GitHub.

Развёрнутый выпадающий список инструментов совместимости Steam Play со списком версий Proton: от Proton 3.7-8 до Proton 11.0 (Beta) и Proton 10.0-4 Proton 11.0 (Beta) в списке инструментов совместимости рядом с прежними версиями

Назначить Proton 11.0 Beta для всех игр по умолчанию

  • Запустить клиент Steam и войти в учётную запись;
  • открыть меню «Steam» в левом верхнем углу и выбрать пункт «Настройки» (в SteamOS настройка выполняется в режиме рабочего стола);
  • перейти в раздел «Совместимость»;
  • Выбрать из выпадающего меню стандартный инструмент совместимости;
  • при запросе перезапустить клиент.

© .
Комментарии и отзывы

Нашли ошибку?

Новое на сайте