LINUX.ORG.RU

Нативный Wine под ARM64 (с поддержкой x86-приложений)

 , , ,


0

2

Subj.

Вообще, Wine собираться под ARM64 умеет достаточно давно, но особого смысла от этого не было. То, ради чего нужен Wine, под ARM64, понятным образом, не заработает без эмуляции, в которую сам по себе Wine не умел. В самом же оффтопе для запуска x64 используется как стандартный эмулятор/транслятор xtajit64, так и ARM64EC ABI – что-то похожее на Universal бинарники в одной известной BSD-based OS.

Добавление такого в Wine был вопрос времени и.. в Wine 10.0 таки появилась официальная (экспериментальная) поддержка ARM64EC. Собранный с таким таргетом Wine вместе с готовым эмулятором, адаптированным к работе в окружении ntdll (Win32 не подходит) позволяет запускать как нативные приложения, так и x64, используя тот же механизм, что применяется в самом Windows-on-ARM.

Кому это надо? Энтузиастам на маках с Asahi навроде меня и… неожиданно Valve, которые делают VR шлем с ARM на борту.

По сравнению с старыми способами запуска Wine под эмулированным x86 Linux окружением (FEX/box64), тут всё работает чуть стабильнее засчёт прямого доступа к линуксовым либам (libvulkan, libwayland-client, libGL, etc..). И сколько-то быстрее – по идее, fsync/ntsync должен в таком окружении поддерживаться без проблем т.к. эмулируется только CPU-часть.
WoW64 (x86_32) тоже запускается, но менее стабильно – по большей части потому, что сама по себе поддержка wow64 в вине оставляет желать лучшего. Но для запуска инсталляторов хватает (многие до сих пор 32 битные).
С Wine-10.4 добавили поддержку работы оного на ядрах с размером страниц выше 4K – не знаю, как они это смогли реализовать (ведь не существует WoA устройств с таким размером), но разницы с запуском под 4K окружением и 16К я не заметил. Всё работает одинаково, разве что костыли с виртуальной машиной для обхода ограничений железа не нужны.

Собирается легко, если в системе есть clang/llvm 20: ./configure --enable-archs=i386,arm64ec,aarch64 --disable-tests --with-mingw=clang
Забавно, что в вышеупомянутом Darwin вайн собирается, но… zsh: killed wineboot.
Похоже, что в XNU чего-то не хватает.

TL;DR игрушечки и приложения работают, на x64 стабильно, на x86_32 как повезёт.

P.S. Notepad++ на скриншоте нативный ARM64. Игра (DX12), очевидно, нет, только x64.

P.P.S. добавил тег asahi, потому что это одно из окружений, на котором wine теперь работает нативно. Скриншоты также сделаны под Asahi.

★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 3)

Т.е. когда Asahi взяла за базу Fedora (2023), он взлетел. А теперь после того как лидер свалил проект сдохнет?

mx__ ★★★★★
()
Ответ на: комментарий от mx__

проект сдохнет?

С того момента как свалил лидер:

  • Завезли рабочие микрофоны на большинстве моделей (кроме M2 Pro/Max, обещают починить)
  • Отправили в апстрим часть патчей из downstream ядра: в 6.15 приняли оные для динамиков, touchbar’а (вместе с тачскрином на нём) и изменения в DT. Сейчас работают над отправкой atcphy (Type-C/DP/Thunderbolt) и SMC (System Management Controller).
  • Избавились от downstream форка Mesa - точнее, он всё ещё существует, но только для virtgpu/muvm.
  • Добавили начальную поддержку M3 Pro/Max в m1n1 (их «мост» между FOSS миром и проприетарщиной огрызка).
whbex ★★
() автор топика

Вообще классно, прогресс на лицо.

Что то с RDR не то. Нативно под ПК есть только версия RDR2, но разве её фишка не в том, что её графика принципиально и очевидно тяжелее GTA:SA? А тут текстурки 10-и летней давности.

kirill_rrr ★★★★★
()
Ответ на: комментарий от kirill_rrr

Нативно под ПК есть только версия RDR2

С 2024 есть нативно и первая часть (причём требует DX12).

whbex ★★
() автор топика
Ответ на: комментарий от nuxster

Заводится OpenBSD со звуком, но без 3D - драйвер на Rust, а в такое OBSD не умеет.

Если из линуксов, то поддержка есть в Void/Ubuntu/Arch ARM.

whbex ★★
() автор топика
Ответ на: комментарий от nuxster

Потому что разработчики Asahi напрямую сотрудничают с Fedora.

whbex ★★
() автор топика
Ответ на: комментарий от whbex

Какая прелесть. В своё время их буквально навязали в opengl, из-за чего долго релиза 3.2 не было. А поняв, что они требуют много транзисторов, выкинули.

steemandlinux ★★★★★
()
Ответ на: комментарий от mittorn

Да. На втором скриншоте всё нативное, забыл дописать.

whbex ★★
() автор топика
Ответ на: комментарий от nuxster

у меня есть air на m2, пробовал асахи еще когда он на арче базировался. Сейчас видимо поприятнее просто оно стало.

Вопрос к топик стартеру, а как там с автономностью сейчас? Может и снесу таки макось если с этим ок всё

Drolyk ★★★★
()
Ответ на: комментарий от mamina_radost

И он с графикой 2012 года?

Я это не к тому что картика говно, мне такая графика как раз нравится. Просто я искал способ поиграть в РДР на своём весьма старом железе с 2Гб видеопамяти и не нашёл вообще никаких вариантов даже близко. А тут картинка прям на поколения старше моего железа.

kirill_rrr ★★★★★
()
Последнее исправление: kirill_rrr (всего исправлений: 2)
Ответ на: комментарий от nuxster

Потому что только эппл-М сопоставим по скорости со свежими х86. Да и графику эквивалнтного уровня на арм-платах не особо часто встретишь.

kirill_rrr ★★★★★
()
Ответ на: комментарий от kirill_rrr

Да. Разрешение немного подтянули, сглаживание, может dlss воткнули. Есть ремастеры, а есть ремейки. Первые это те, где обычно минимальные косметические изменения. Дешёвый способ перепродать игру для новых консолей и пк.

mamina_radost
()
Ответ на: комментарий от kirill_rrr

И он с графикой 2012 года?

Графика 2012 года, рендерер 2024 года с DX12, который вызывает по 3000 draw команд, поэтому на плохо оптимизированных драйверах FPS улетает на дно.
На скриншоте 4-5FPS, не стал выводить HUD (в родной OS около 70-80)

А тут картинка прям на поколения старше моего железа.

Если есть хоть какая-то поддержка DX12, то должно пойти - тут главное ограничение в том, что лапшу из RAGE 2010 года DoubleEleven использовать не стали и взяли за основу свой рендерер, подружив его с остальными частями RAGE.

whbex ★★
() автор топика
Ответ на: комментарий от Drolyk

а как там с автономностью сейчас?

Хуже macOS, но не сильно. Если нагружать, то разница ещё менее заметна.

Сон есть, сон работает, но тоже не так круто как под macOS.

whbex ★★
() автор топика

Наконец-то…

Вопрос: Как там дела с модными думами? Хотя-бы 2016-й способен выдавать не рваную картинку в разрешении выше 640x480 на Apple M1?

Goat ★★★
()
Ответ на: комментарий от Goat

Консольные 30 (40) FPS в 900p при первичном тесте без настройки. Позже сравню с десктопной машиной на Ryzen 5600G (на встроенной графике) - в теории, результат должен быть примерно одинаковым.

По какой-то причине секции в бинарнике 2016 DOOM’а не выровнены и вайн под 16К системой его запускать отказывается - пока я вижу это впервые. Под muvm работает, но это уже виртуальная машина с соответствующей 5-10% потерей производительности.

whbex ★★
() автор топика
Последнее исправление: whbex (всего исправлений: 1)
Ответ на: комментарий от relil

Это upstream wine без патчей?

Да.

Для 32битных приложений используется box86?

Нет, используется libwow64fex (FEX-Emu под WoW64). Разница - wineserver нативен, всё остальное эмулируется (в ARM64EC эмулируется только x86 часть).

whbex ★★
() автор топика
Ответ на: комментарий от whbex

Нужно выставить в реестре wine libarm64ecfex.dll? На скриншоте RDR, потому что работает на Vulkan? На сколько понимаю, DXVK не заработает в таком режиме (он x64, wine-arm64 не загрузит x64 либы), нужна реализация под arm64, но ее нет. Через wine3d тоже маловероятно что-то заработает i386 так и не заработало у меня

relil
()
Ответ на: комментарий от relil

Нужно выставить в реестре wine libarm64ecfex.dll?

Да, для WoW64 соответственно libwow64fex.dll

потому что работает на Vulkan?

DirectX 12

DXVK не заработает в таком режиме

Отлично работает что x64, что ARM64EC

так и не заработало у меня

WineD3D под WoW64 поддерживается криво.

whbex ★★
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.