FEX 2610 Tagged

We were a bit distracted this month with the X.Org Developer’s Conference happening but we still managed to get some work done. Let’s jump in and see what has changed.

JIT changes

This month brought some improvements to the JIT although less than typical. We added support for AVX-VNNI which is starting to get used by some game libraries. We also optimized the SSE4.2 string operations so these are quite a bit faster. 3DNow! has been enabled again since we fixed the last known bug with it. We also improved emulation on the x87 FXAM instruction since apparently Mono uses it to detect denormals for some reason. Additionally a peephole optimization to improve a common case of an unmasked AVX gather instruction which some sound libraries rely on.

We also now have a software fallback for RDRAND and RDSEED instructions. This isn’t enabled by default as the performance isn’t as good as a hardware implementation but it’s useful for programs that mandate these instructions to exist. Also useful for platforms with Qualcomm Oryon where their RNG implementation is bugged and doesn’t return real values.

Plus a couple of other minor changes for future work. In total a fairly light month for JIT improvements.

Disk cache improvements

This month also had a large smattering of disk cache improvements. Now when the disk cache is enabled it will automatically limit its cache size to 1GB, where we will then stop caching at that point. This is configurable in the INI options for more or less space to be consumed, but because some edge cases allow it to have unbounded growth, it seems like a good balance at 1GB. We also added an optional memory buffer for caching; this allows an in-memory cache for hot blocks. This is only worth using if a game stutters frequently from JIT invocations and you have spare RAM to allow some additional caching.

Another important change that landed is that when FEX updates, it will automatically remove old disk caches that aren’t relevant to the new version. This makes sure users don’t have multiple 1GB cache files laying around as they upgrade over time.

A small improvement on the Linux side ensures that for ELF files being cached, that if there is an embeded GNU build-id hash, we will use that as a partial key for the file. This helps the case where a file could have been replaced and we would incorrectly use an outdated cache file.

Minor Vulkan thunk fixes

We upgraded our Vulkan thunks this month to fix a few minor bugs with newer Vulkan drivers. This fixes some games running on DGX Spark where they were supporting newer vulkan extensions primarily.


See the 2610 Release Notes or the detailed change log in Github.

Written on October 7, 2026