github YuutaTsubasa/Free-Riders-Recompiled v0.6.5
v0.6.5 — Index buffers kept on the GPU (test build)

latest releases: v0.6.7, v0.6.6
pre-release6 hours ago

A test build for slower CPUs (Issue #65). If something looks wrong in a race (missing or broken geometry), set SFR_INDEX_CACHE=0 and tell us in Issue #65.

Changes

  • Index buffers kept on the GPU (#81, Issue #65): an index buffer the game leaves unchanged is decoded once, straight into a GPU buffer, and later draws use it as it is. Before, every draw decoded its indices and copied them into the upload ring, about 3 MB a frame, which on a PC with a small CPU cache also pushed out the game's own data. A buffer the game writes to is dropped and decoded again. SFR_INDEX_CACHE=0 turns this off.
  • Fewer checks per draw: cached vertex and index buffers are found by address, without checking which of three memory views are readable for every draw, and the per-draw "logged before?" check uses a hashed set.
  • Diagnostics: the frame metrics (SFR_FRAME_METRICS=1) count indexed_draws and kept_index_draws; run_benchmark.bat has a no-index-cache setting to compare.

Validation

  • Per frame, desktop (RTX 4090), fixed-step Dolphin Resort race, on against off, twice in alternating order: drawing 1.91 and 1.84 ms against 2.01 and 2.03 ms, recording 0.38 against 0.44 ms; all indexed draws used kept indices, on D3D12 and on Vulkan. The difference should be larger on a CPU with a small L3, which is what this build is for.
  • Unit tests: the full CTest suite (143) passed on Windows; GitHub Actions builds passed.
  • Windows package: completed race checks on D3D12 (Frozen Forest) and Vulkan (Dolphin Resort), both with kept indices, every pipeline prepared and the save left unchanged.
  • Linux package: passed a Vulkan startup smoke test in WSL (all 455 pipelines prepared).
  • Android: the APKs keep the existing signing certificate.

Comparing on your PC

run_benchmark.bat exe 6 solo

with this build's sfr_cpu_diagnostic.exe as _b against v0.6.4's as _a, or within this build, scripts\benchmark.ps1 -Configs baseline,no-index-cache -Scenario solo -FixedStep.

Downloads

  • Windows x64: download and extract the Windows ZIP; run FreeRidersRecompiled.exe.
  • Linux x64: download and extract the Linux archive; run FreeRidersRecompiled.
  • Android 10 or later: prefer android10-arm64.apk.
  • Android 9: use android-arm64.apk.
  • Android version code: 30. The companion licence archive applies to both APKs.
  • Checksums: SHA256SUMS.txt.

Use your own game disc image. No game data, private saves or test overrides are included.

Known limitations

  • This build: the index cache was checked on two courses (Dolphin Resort, Frozen Forest) on Windows; other courses, the World Grand Prix story and Android devices have not been played with it.
  • Being investigated: a crash in a race on a 4-core PC (Issue #64), and a character occasionally saying a winning line after losing (Issue #47).
  • Relay Race: 2P vs 2P is not supported yet.
  • Mali GPUs: only the graphics start-up has been checked on Mali GPUs.
  • From v0.5.0: lighting has not been compared with the Xbox 360; no camera motion inference on Linux or Android; performance varies by device.

Don't miss a new Free-Riders-Recompiled release

NewReleases is sending notifications on new releases.