FEX-emu – Run x86 applications on ARM64 Linux devices

9 days ago (fex-emu.com)

> FEX allows you to run x86 applications on ARM64 Linux devices, similar to qemu-user and box64. It offers broad compatibility with both 32-bit and 64-bit binaries, and it can be used alongside Wine/Proton to play Windows games.

> It supports forwarding API calls to host system libraries like OpenGL or Vulkan to reduce emulation overhead. An experimental code cache helps minimize in-game stuttering as much as possible. Furthermore, a per-app configuration system allows tweaking performance per game, e.g. by skipping costly memory model emulation. We also provide a user-friendly FEXConfig GUI to explore and change these settings.

> On the technical side, FEX features an advanced binary recompiler that supports all modern extensions of the x86(-64) instruction set, including AVX/AVX2. The heart of this recompiler is a custom IR that allows us to generate more optimized code than a traditional splatter JIT. A comprehensive system call translation layer takes care of differences between the emulated and host operating systems and implements even niche features like seccomp. A modular core enables FEX to be used as a WoW64/ARM64EC backend in Wine.

Used by the new Steam Frame (https://store.steampowered.com/sale/steamframe) which is an ARM64 Snapdragon 8 Gen 3 that will run PC and PCVR gaming titles.

I'n incredibly impressed by valve's commitment to playing the long game. It makes sense to have the frame by arm since the system is lighter and its clear this is just the trojan horse to get arm linux into every gamer's house. I wouldn't be surprised if we end up with an arm steamdeck 1-2 version from now when the tech is ready.

  • Too bad Arm doesn't allow architectural licenses, because this is exactly the kind of thing Valve and the FEX developers would want to extend the ISA to support. I bet we see a RISC-V backend to FEX in the next 6 months, it probably already exists in a private repo.

    FEX is the shootstring, extra special discount budget (not maligning) version of Rosetta. Apple should sell Rosetta to Valve.

    • My understanding is that Rosetta sidesteps a bunch of tricky memory model issues by using non-standard hardware extensions only present in Apple Silicon, so even if Apple did share Rosetta, which they certainly won't, it wouldn't work properly on Valves hardware anyway.

      12 replies →

  • Last I heard, they don't even have bosses there, a flat hierarchy. They vote on things and pick each other to work on teams and appraise performance. Perhaps that radical culture has merit to it?

    • How much did Gabe own Valve, 50%?

      Gabe Ownership/co-founder:

      - Valve - Yacht Companies - Starfish Neuroscience (Neuralink) - Submarine Companies

    • I've heard that to ship hl2 (or anything really) they had to stip some of that flatness somewhat.

    • Anything works when you have infinite money and the company is privately owned by a chill dude.

  • It’s amazing what you can do when you have a business that prints money hand over first and you have no obligations to shareholders.

I tried out FEX on a modern ARM board with a discrete GPU. Really impressed with the performance.

https://interfacinglinux.com/2025/06/30/fex-emu-gaming-on-th...

  • Wow decent results.. impressed.

    • I would keep in mind that the results reported there are likely quite a bit lower (in terms of CPU-side performance) than what you could achieve in practice, because it's running all of x86 Steam+Proton in the emulator. In a pre-configured environment (like SteamOS for ARM), the Steam client and Proton itself would be native ARM code, and emulation would stop at the win32 API boundary (or at certain critical libraries' APIs if you're using Linux apps).

      1 reply →

How does fex deal with the fact that the memory model on arm is weak and x86 is total store ordering. It seems like would need to hammer performance by putting memory barriers everywhere to handle all cases. Perhaps fex only works when there are well defined mutexes it can gain visibility into? anyone know?

  • Looks like they do expensive conservative TSO emulation by default, but they're able to piggyback on compiler work that Microsoft did to make newer Windows x86 binaries easier to emulate. Since MSVC 2019 they annotate the executable with metadata that informs an emulator of when TSO is or isn't needed for correctness.

    https://fex-emu.com/FEX-2510/

    FEX also has settings which weaken or disable TSO altogether, favoring performance over correctness. You wouldn't want to rely on those for anything important but a game possibly crashing isn't the end of the world.

    • So that optimization only works on executables produced by MSVC? Are those annotations documented and/or produced by other compilers?

      1 reply →

  • It would be nice to see more Arm chips adopt Apple's approach (which fixes this problem) for Rosetta 2. Basically, Apple's chips can be switched into a TSO mode and a few other minor tweaks that make x86 code run much, much faster.

  • I think that's right, there is no better way than just adding barriers. On Apple hardware it can probably make use of the special memory ordering mode, but on normal ARM64 there's probably nothing it can do.

Some companies like to stress the efficiency or performance of Arm SoCs, but really this is a hedge against more expensive x86 hardware. AMD has increased prices of mobile SoCs radically recently. I'm looking forward to having more affordable SoC options for laptops, handhelds and desktops, perhaps from Mediatek or other lower-cost vendors.

The history of the PC is one of commoditization. A fractured multi-polar landscape is detrimental to the ecosystem/productivity and should ultimately fail.

x86 emulation is an important puzzle piece, and I'm happy Valve recognizes this and sponsors it.

Curious how this will impact the major games that are incompatible due to denuvo type stuff

  • IIUC that DRM involves kernel level tricks and attestation, which means it'll basically never happen. Online gaming looks similarly doomed.

    • Denuvo anti-tamper DRM doesn't use kernel level tricks, it's all userspace and works just fine on Linux/Proton. It's the kernel level anti-cheats that don't work on Linux. And some user level anti cheats (like AntiCheat Expert) that only work on the Steam Deck as they check the CPU/GPU of the system and refuse to work if it's not the one in the Steam Deck (which also means those don't work on platforms like the ROG Ally).

One problem I see is that (e.g.) Qualcomm Adreno GPUs don't even run most Windows games well when executed natively under Windows, due to games only being optimized for GeForce and Radeon. I assume this problem only gets worse when trying to run DirectX games through some sort of translation layer with FEX/DXVK.

Now we just need a decent ARM Linux laptop.

  • Anyone can recommend something viable for simple tasks? I don't need 32GB of VRAM, just a reliable machine for everyday tasks that's decent, lightweight, has a good battery.

    (I know I'm describing an M2 Air, but I'd like to explore alternatives.)

    • I have the azus ZenBook a14 with X Elite, 32GB ram, 1TB SSD. Overall it works great on Ubuntu concept. Only speakers and camera do not work (I heard speakers can work with some risk). I just use usb headphones instead and my webcam. The laptop itself is very light with long battery life. I expect it to be better supported at some point hopefully, but it's getting there.