FEX-2504 released

Published by

The release of FEX-2504 has introduced a variety of features, optimizations, and bug fixes aimed at enhancing the experience for PC gaming enthusiasts. A notable improvement is the resolution of audio issues in the game "Slay the Spire," achieved by correcting an error related to x87 stack management. This optimization involved reversing the execution order of certain stack instructions, resulting in improved audio functionality.

Additionally, FEX-2504 includes support for volatile metadata in Windows PE, a feature introduced by Microsoft in its compiler that helps reduce the costly emulation of the x86 memory model. This metadata has been enabled by default since 2019, allowing FEX to leverage it for better performance in an ARM64 Prism emulator environment. The developers encourage package maintainers to distribute Arm64ec WINE and FEX packages, which would provide users with enhanced performance at no extra cost.

The release also features significant optimizations in the Just-In-Time (JIT) compiler, particularly focusing on SHA256 instructions, which have seen their performance approximately doubled by utilizing ARM's equivalent instructions. Furthermore, FEX has implemented support for ARM's FEAT_FRINTTS extension, enabling faster rounding of float values into integer ranges, potentially improving performance in various games.

A series of additional enhancements have been made to the JIT, including optimizations for AVX operations, scalar reciprocal functionalities, and other minor adjustments, all of which contribute to a smoother gaming experience. The developers have also resolved numerous bugs and made various improvements across multiple components of the FEX system, ensuring a more stable and efficient emulation environment.

Future Directions and Community Impact

Looking ahead, the FEX development team aims to continue refining the JIT and expanding the compatibility of various applications, particularly within the gaming domain. By fostering community engagement and encouraging package maintainers to adopt the latest FEX technologies, the team hopes to create a robust ecosystem that supports a wide range of gaming titles on ARM architecture.

Moreover, as more users transition to ARM-based systems due to the increasing performance and efficiency of these platforms, the ongoing enhancements in the FEX emulator will be crucial in maintaining compatibility and performance standards. The community's feedback will be invaluable in guiding future updates, ensuring that FEX remains at the forefront of PC gaming emulation

FEX-2504 released

The release of FEX-2504 has brought forth a range of features, optimizations, and bug fixes tailored for PC gaming enthusiasts. The resolution of the audio issues in Slay the Spire represents a significant enhancement. The optimization eliminates x87 stack management from JIT code, which is a resource-intensive operation. The resolution was achieved by executing F{INC,DEC}STP instructions in reverse order within a specific code path. Another enhancement is the support for volatile metadata in Windows PE. The compiler from Microsoft produces "volatile" metadata, which is utilized alongside the ARM64 Prism emulator to prevent expensive emulation of the x86 memory model. This feature has been enabled by default since 2019, and FEX utilizes this metadata to enhance emulation performance. The release aims to encourage package maintainers to distribute Arm64ec WINE and FEX packages, enabling users to benefit from enhanced performance at no cost.

This month, the JIT has undergone optimization, concentrating on SHA256 instructions by utilizing ARM's equivalent instructions, which offer approximately the same functionality. The optimization has approximately doubled the performance of SHA256 during emulation. Furthermore, the implementation of support for ARM's FEAT_FRINTTS extension has been completed, offering instructions that facilitate the rapid rounding of float values into integer restricted ranges.

FEX-2504 released @ Linux Compatible