8000 Tags · ARMSX2/ARMSX2 · GitHub
[go: up one dir, main page]

Skip to content

Tags

Tags

nightly-20261108

Toggle nightly-20261108's commit message
Texture packs: a This Game list in both browsers, shown while a game …

…runs

The Qt page and Big Picture both gain a This Game filter that appears only while a game is running and lists only the packs that match that game's serial. Both open on it when a game is running, instead of mixing the running game's packs into My Games.

In a game's own settings window the filter is not offered, because the whole page is already that game's.

nightly-20261107

Toggle nightly-20261107's commit message
EE arm64: stop with a post-mortem when ERET returns to an unaligned a…

…ddress

ERET takes the pc from ErrorEPC when Status.ERL is set and from EPC
otherwise, and the guest can store any value in either. recERET runs the
interpreter's ERET and the block then dispatched to that pc, so an
unaligned EPC reached DispatcherReg's 8-byte table load and crashed with
no error line, the way five field reports die.

After the call the block now loads cpuRegs.pc, tests its low two bits and
branches, when set, to a cold island whose body sets recError's arguments
and jumps to RecErrorExit. Three instructions on the normal path, in ERET
blocks only. The check has to be generated code:
recBranchCallNoGprWrite stores the cycle count and the caller-saved pins
before the call but leaves the callee-saved pins in their registers, so a
longjmp from inside the call would lose those guest values. RecErrorExit
stores them all.

The dialog says "ERET to unaligned address"; the log says which register
the pc came from and why, worked out from the Status ERET left (it clears
ERL and keeps EXL on the ErrorEPC path, clears EXL on the other), with the
registers and the code before the ERET. The log now keys its once-only
rule on (cpu, pc), so the Resume after an ERET error, which meets the pc
through the entry check, does not log it a second time.

Without the check both unaligned tests crash in the dispatcher. The
aligned EPC and ErrorEPC returns are checked against the interpreter.

2.9.2

Toggle 2.9.2's commit message
Translations: the 2.9.2 strings in all 19 languages

The 163 strings added since 2.9.1 (problem reports, the microphone,
the save manager and the on-screen controls) were English-only. Every
key in the English table is in every language again. Each new key sits
after its sorted neighbour; no existing line changed.

nightly-20261106

Toggle nightly-20261106's commit message
Android: regenerate the PGO profile on the GS span source

Trained on 872de20 (the merge of gs-span-lean) on the Retroid Pocket
Duo, Turnip axfl3-001: the same 16 games as the 2026-10-28 profile, 120 s
each from a savestate, every game at full speed. Merged with the NDK 29
llvm-profdata, every game weight 1, not sparse: 41060 functions, total
count 452,947,311,463.

The previous profile was trained before the texture cache's dirty grid and
the copy road kernels changed GSRendererHW::Draw and GSTextureCache, so it
no longer matched those functions.

nightly-20261104

Toggle nightly-20261104's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #932 from ARMSX2/bug-report-upload

Android: Report a problem, with crash reports offered on the next launch

nightly-20261031

Toggle nightly-20261031's commit message
Library screensaver starts after 5 minutes by default

A delay already picked in the settings stays as it is.

nightly-20261029

Toggle nightly-20261029's commit message
iOS: move the cheats list sections out of the view body

Xcode 26.6, which CI uses, gives up on CheatsPatchesManagerView's body
with "unable to type-check this expression in reasonable time", and
the iOS job on upstream master fails the same way. The sections after
the game row now sit in one view builder property, in the same order.

2.9.1

Toggle 2.9.1's commit message
Android: translate the swap chain pre-rotation switch

The 2 strings the Fixes page's pre-rotation switch added, in all 19 languages.

nightly-20261028

Toggle nightly-20261028's commit message
GS: keep shader caches in RAM, one pack per game, written in the back…

…ground

On slow storage (SD cards) the shader caches stalled play. The SPIR-V and
GL program stores kept only their index in RAM and read each shader from
disk on first use per session, under one lock, on the GS thread or a
precompile worker; new shaders were written synchronously. The whole
Vulkan pipeline cache was serialised and rewritten on the GS thread after
every 32 new pipelines (256 on Android), on Android pause and at quit.
Each pipeline first drawn in a session wrote and flushed a key-list
record on the GS thread.

GSCacheFile::Pack replaces the store and the fixed-record key file: an
append-only log of checksummed records under a stamped header, read whole
when it opens and served from RAM. Changes stay in RAM until a write,
which appends them, or writes the pack whole when it is mostly garbage,
cut by a broken record, of another stamp, or cleared. A write stops at a
deadline; past a RAM cap a pack is only appended to. Another process
writing the pack makes a pass skip.

GSCacheFile::PackWriter writes a renderer's packs on a low-priority
thread every 30 s, when asked, and once more within 2 s when the
renderer closes. It also removes, once per process, the old shared
stores and key lists once no build has written them for a week, packs
unused for 60 days (never an open one), and interrupted writes.

Vulkan keeps SPIR-V and the pipeline key list in packs under
cache/gs_packs/<serial>_<CRC>/, read when the game identity is set, with
the device's own shaders in gs_packs/_/. The pipeline cache is serialised
and written on the writer thread, at most once a minute while it changes;
vkGetPipelineCacheData puts no external-sync requirement on the cache,
and the precompile workers already created pipelines during the old
GS-thread flush. Android's pause hook now only asks the writer to save.
OpenGL keeps its program binaries in packs the same way.

Stamps are unchanged, so a cache becomes stale under exactly the same
conditions as before. The clear empties open packs in place, and the
Android settings clear now deletes gs_packs/ as well.

Tests: pack round trip, newest record wins, erases persist, other stamp
or kind replaced, broken record and torn tail cut, compaction (skipped
in a pass with a deadline), RAM cap, deadline, clear, a file deleted from
outside, a second writer, a full disk, the writer thread, the clear and
the leftover cleanup; the libretro file-layer test moves to packs.

2.9

Toggle 2.9's commit message
CI: Linux-only release runs, and stable Linux builds never save their…

… compiler cache

The Release workflow gets an "android" switch, on by default. With it off the run
builds and uploads only the Linux AppImages and never touches the draft's .apk
assets, for releases whose APKs are built by hand.

A stable Linux build compiles the RetroAchievements client identity into its
objects, and a ccache saved on the default branch can be restored by any pull
request, forks included. Stable builds now only restore the nightly's cache.
0