AnyPS5/core/libs
Dextroid17 e920c9e64a fix(agc): decide an edge unit's CPU keep from the pages the unit overlaps
StorageTexture::writeBackLayers keeps the CPU's bytes for an edge unit when StoredOver
reports that the CPU wrote it since the unit's generation. That check read one generation
per 64 KiB block, so a store to another allocation sharing the block counted as a store
over this surface and the whole block was kept, discarding GPU results written into it.

The driver path in the same check already compares range pieces; the CPU path now does
the same. Each collect records the generation of every page it found dirty, and StoredOver
tests only the pages its range overlaps. A block with no page record keeps the previous
whole-block answer.

Measured on an RTX 3080 Ti, main at df16c4c2:

- agc_write_tracking stores at base + Block + 8, outside the queried range but inside the
  shared block. That case fails on main ("a CPU store outside the shared range counts for
  it") and passes here.
- Full suite 408 of 408 (Linux, CachyOS, GCC, Release, BUILD_TESTING=ON).

This does not cover the other half of #865: the report's finding 2, where the stamps fall
on the surface's own pages and the bytes under them are unchanged, still keeps the block.
No title was run here, so the fix is offered for the report's own repro.
2026-10-07 21:30:28 -04:00
..
nid fix(libs): keep a $ORIGIN runpath in the patched prx libraries 2026-10-05 20:20:14 +02:00
prx fix(agc): decide an edge unit's CPU keep from the pages the unit overlaps 2026-10-07 21:30:28 -04:00
tests test(libkernel): cover a sub-page shared backing offset and a gap after a direct mapping 2026-10-07 23:16:22 +02:00
CMakeLists.txt build(libs): strip the MinGW static runtime flags once for all libraries 2026-10-07 10:10:38 +00:00
HitLog.hpp style(prx): apply CONVENTIONS.md to misc PRX additions 2026-09-29 04:24:39 +03:00
SceShaders.hpp
…
SceTypes.hpp feat(userservice): implement foreground user, registered list, user colour and NP account id 2026-10-06 23:42:15 +02:00