Skip to content

LibertyRecompAndroid 0.5.8

Choose a tag to compare

@vaduur vaduur released this 10 Oct 01:08
· 9 commits to main since this release

A CPU and stability pass. Install over the previous version; your saves and settings are kept.

May be fixed or improved

  • Rare crashes in long sessions. The game's lock and barrier instructions are now real memory barriers on ARM64. Before, they compiled to nothing, so on a phone one thread could see another thread's data out of order. This is a likely cause of some rare, random crashes.
  • Crash after a car collision. A crash on a stale object in the game's entity list is now caught: the broken entry is skipped for that frame.
  • Stutter while driving fast or streaming the city. Every time the game committed memory, the runtime parsed /proc/self/maps (thousands of lines). It no longer does.
  • Smoother game logic. The game's CPU registers are now kept in native registers instead of memory. At the reference bridge on a Retroid Pocket 5, the game threads got about 3 ms lighter per frame, and frame rate went from about 26 to 28-30 FPS.
  • Lighter shaders. The shader cache was rebuilt with merged conditional blocks: about 15% fewer branches on the GPU, same image.
  • Faster renderer. The renderer is now built with stronger optimizations (-O3, link-time optimization, hot functions placed together). Several hot spots in the frame recorder were also made cheaper: shader constant copies, hash table lookups and per-frame allocations.
  • Phones with game boosters. The app now declares Android's game modes, so Samsung Game Booster, RedMagic Game Space and other game tools recognize it as a game. Some of them limit the CPU clock of apps they don't know.
  • Snapdragon 8 Elite (Adreno 830). GPU waits are now made one second at a time. That driver returns at once from an endless wait, which could freeze or corrupt the picture.
  • Draw distance no longer jumps back and forth. The dynamic draw distance now changes in small, spaced steps, measured over one-second windows. Its minimum is 0.80, and older settings are migrated automatically.

For testers

  • The runtime log now shows guest threads that spin on yields or locks (yields/spins-5s= in the thermal: lines).
  • --gta4_native_frame_timeline=true logs per-frame stage times.

Known: in the heaviest places (the bridge at night) the frame rate can still dip to about 28 FPS. The frame recorder is the limit there.