FEX icon indicating copy to clipboard operation
FEX copied to clipboard

Preparation plan for increasing minimum requirements to require FEAT_FLAGM/ARMv8.4-a

Open Sonicadvance1 opened this issue 1 year ago • 2 comments

  • Note: This is will likely happen in the middle of 2025.

Currently FEX supports back to ARMv8.0-a, which has been a maintenance burden that can be both frustrating and slow to support. Once we increase minspec to FEAT_FLAGM, this effectively increases our minspec to ARMv8.4-a. So choosing ARMv8.4-a is actually the sane option. This would basically increase FEX's minimum CPU requirements to support hardware released in 2019-2021, so at least four year old hardware by time this change actually ends up in FEX.

Unique codepaths in FEX for things below v8.4:

  • Flags handling
    • FEAT_FLAGM adds support for accelerating x86 flags emulation
  • FEAT_LSE - Atomic memory operations
    • Everything uses load-exclusive, store-exclusive on v8.0.
    • Complicates our unaligned atomic handling
  • FEAT_LRCPC and FEAT_LRCPC2
    • Accelerates x86 memory model (even if it isn't very good)
    • Changes load/store atomic in to equivalent LRCPC instructions
  • FEAT_LSE2
    • Supports unaligned atomics inside a 16-byte granularity
    • Just like FEAT_LSE improved atomics, this improves unaligned atomics
    • Can reduce complications in FEX's unaligned atomic handlers
  • A few misc things.

Performance wise, without these extensions x86 emulation is either slow (atomics) or buggy (TSO emulation disabled) so supporting things older aren't fundamentally interesting and causes us maintenance and financial (CI) burden.

Performance considerations show that while some of this deprecated hardware can play lighter games, the performance for anything remotely heavily isn't very interesting.

What hardware would this change cause FEX to no longer support?

  • CPUs:

    • ARM: Cortex-A57 through Cortex-A78
  • SoCs:

    • Apple: Nothing (FEX only supports devices with M1 or newer, which is v8.4-a or newer)
    • Qualcomm mobile: Snapdragon 888 and older
    • Qualcomm Compute: 8cx Gen 3 (Latest generation before Oryon/X1E)
    • Samsung: Exynos 2100 and older
    • NVIDIA: Orin and older (Thor in 2025 will be first Jetson. Grace is fine)
    • Rockchip: Everything
    • Raspberry Pi: Everything
    • Amlogic: Everything
    • Ampere: Altra

What hardware will still be available to use FEX with after this change?

  • Apple: All "Apple Silicon" M series
  • Ampere: AmpereOne
  • NVIDIA: Thor (2025), and Grace
  • Snapdragon mobile: Snapdragon 8 Gen 1 and newer
  • Snapdragon Compute: X Elite
  • Samsung: Exynos 2200 and newer
  • Radxa Orion O6
  • Rockchip: RK3688 (Will be shipping a Cortex-A7xx CPU in likely 2025)
  • Amlogic: Nothing today
  • Pi: Nothing today

Sonicadvance1 avatar Oct 15 '24 15:10 Sonicadvance1

Will old FEX remain available for use? This cuts off almost all consumer ARM devices that people would be running Linux on except for Apple Silicon. I've been experimenting with FEX on postmarketOS devices and quite a few games are playable on it (SDM845, SM8250). I think I got some of the pmOS developers interested in putting together some sort of official FEX install method to make it easier to bring Steam and other games to phones and tablets. I get that there are issues that the newer architecture resolves, but this seems like it would cut off the majority of current devices. Therefore I would at least like to see a legacy branch that can still be kept around. Have you considered accepting donations to help with the financial burden here? I know I've looked in the past to donate but wasn't able to find a means to do so.

CalcProgrammer1 avatar Oct 18 '24 05:10 CalcProgrammer1

Old FEX will always remain available. We're an open source project after all. We don't accept donations, the financial note is mostly a funny joke about how much my electricity bill is each month.

Sonicadvance1 avatar Oct 18 '24 05:10 Sonicadvance1