Notes · Other Peoples' Talks · FOSDEM 2026 · Breaking architecture barriers - Running x86 games on ARM
https://fosdem.org/2026/schedule/event/3ZRNDY-fex/
- Tony has always had an interest in running games in places where they weren't meant to be run
- Professionally, studying physics, but didn't really work out
- Working on graphics drivers, like Vulkan drivers for AMD
- The airport express from Berlin is also called FEX ^_^
- FEX was started by Ryan Houdek seven years ago, Tony joined 4 years ago
- FEX is a translation layer between x86 and ARM to allow people to play games
- By default: game running atop engine atop [...] atop OS atop x86 CPU
- The standard solution is a binary recompiler that translates x86 to ARM
- For eah instruction, emit corresponding intermediate representation that fully specifies the semantics, then optimise that, then compile that to ARM
- "My mouse cursor died. Linux moment."
- But it's not always that easy
- A simple loop explodes in complexity
- Each basic block has some translation overhead to set the stage for the following code
- The
decinstruction, for example, translates to three instructions: one to do the actual subtraction, and two for managing the flags before and after it
- There are, by some counts, 6,000 instructions. How do you even manage that?
- The x86 memory model also doesn't match to ARM
- x86 offers strong consistency between threads; ARM does not
- System call wrappers - relatively straightforward, but there are hundreds, and some of them are quite tricky
- With a reasonably complete kernel compatibility layer + recompiler, everything else above works
- Can take more steps, like replacing the Vulkan x86 interface with a bridge to Vulkan ARM instead, removing a step
- The demo was that the slide was running in x86 Firefox in FEX, but the slides broke by this point, which was a bit awkward
- Yooka Laylee demo
- For Windows, can run x86 WINE atop FEX, but exploring integration with Windows ARM64EC