FEX is one way to run x86 appps and games on ARM64, with the latest release 2508 bringing some pretty striking performance improvements.
Writing in a blog post about "Big juicy JIT optimizations", they showed off two charts of the performance difference versus the previous release and in some cases for gaming it's a huge win. Like with Cyberpunk 2077 seeing a 38.9% improvement which is massive.
Explaining some of the improvements the developers said:
The majority of this performance uplift has come from call-return stack optimizations, where we are now able to take advantage of the ARM CPU’s own call-return prediction hardware, but we have had a variety of optimizations this month that improve both JIT compilation time in addition to execution time! Additionally now we compile significantly less code since we would have combinatorial explosion of JIT compiles when multiblock was enabled. We have now made it so each individual block of JIT code is freestanding and usually only gets compiled once.
Another improvement this month is the WINE wow64/arm64ec libraries can now take advantage of Apple Silicon’s hardware TSO feature. This happened to not be implemented with the wow64/arm64ec code path. This will significantly improve performance on that hardware in the case that someone spent the effort to run a game in that environment.
More work also went into supporting anti-tamper tech, with some versions of Denuvo potentially now working too but more work is to be done on that.
See more on the FEX website.
cp2077: 50,3 -> 69,9
stray: 34,1 -> 42,7
gow 2018: 64,4 -> 67,4
doom 2016: 150,7 -> 197,4
gf: 360,0 -> 449,0
teardown: 37,8 -> 42,6
(and that means which CPU/SoC?)