Commit Graph
14017 Commits
Author SHA1 Message Date
Adrià bb7006342f Merge pull request #4780 from ivica00/codex/crash-indirect-memory
feat(libc): optionally dump indirect memory in Windows crash reports
2026-10-14 12:48:15 +02:00
Jan ŠléglandClaude Opus 5.5 d34564be4a perf(agc): bind a sparse descriptor heap's committed run in place from its import
A descriptor heap that a shader binds whole while only the pieces from its
base are mapped (a sparse heap) is copied on the CPU for every build that
binds it unless a mirror serves it. The sparse heap mirror takes a heap whose
needed extent lies in one releasable registered range. A heap mapped piece by
piece, each mapping its own allocation and the pieces back to back from the
heap's base, is several registered ranges, so every build copied its mapped
run again.

Such a region is now bound in place from an import of that run: an import
already covering it, the run's own import, or one joined over exactly the run
(#4517). This applies to any sparse heap no mirror took, including under
APS5_NO_LEASE_MIRROR or APS5_NO_SPARSE_HEAP_MIRROR. A join is made only for a
region that starts at a registered range, once the previous bind of that
address saw the same last mapped byte: a heap that grows between every two of
its binds keeps the copy, and one bound more often than it grows is joined
again after each growth. Joins stop after 64 per joined run base, with a
message: the heap is then bound in place while an existing import covers its
run and copied otherwise. The records go with their range. The region's descriptor and BDA ranges end at the import's end, which
covers the mapped run and the last view, as the copy does. A region whose
mapped part does not start at its base, with a view past the run, written by
its shader, or whose run is not imported is copied as before. A direct
region whose import ends before it outside this path still fails in
Descriptor, as before.

A set over such a region stays reusable: DirectRegions and InPlaceReads name
the region up to its import's end, so the import's serial proves it, and a
reuse also requires the heap to be mapped exactly up to that end
(CutRegions), checked whenever the imports or the registry changed, so a
mapping past the cut makes the set miss. DirectRegions also refuses a set any
of whose regions bound in place no longer holds the import found at its base
(a later join in the same build retired it); this applies to every region
bound in place.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:42:01 +02:00
Adrià Franch 3d101e8bc5 fix(relinker): drop constants main already defines after the rebase 2026-10-14 12:36:59 +02:00
Renan Pires 75cfcec67c feat(relinker): load Linux executables at a fixed base with --linux-fixed-base 2026-10-14 12:35:36 +02:00
Renan Pires 13b1113d93 fix(libkernel): find main-program symbols when the executable is not position independent 2026-10-14 12:35:22 +02:00
adriadam10 94632df42f test(tools): resolve the temp root and give the compdb stub a Windows launcher 2026-10-14 12:31:52 +02:00
Dextroid17 955c60e32f feat(tools): compile the changed translation units only 2026-10-14 12:31:35 +02:00
Dean 3e577edac2 Merge pull request #5160 from nikowolf123/fix/shader-lds-private-subword-stores
fix(shader): update per-invocation LDS without atomics
2026-10-14 23:30:37 +13:00
Dean 6ade14f52d Merge pull request #5679 from moong15/fix/agc-save-guest-bytes-before-untracked-results
fix(agc): save the guest bytes of units without a write generation when results land outside the write watch
2026-10-14 23:28:44 +13:00
Dean 1b127d4df4 Merge pull request #5758 from oneandonlydean/ci/release-recursive-submodules
ci(release): check out nested submodules
2026-10-14 23:28:09 +13:00
Adrià b6c7893f9e Merge pull request #4869 from omurc4/feat/load-failure-hint
feat(relinker): hint at the MinGW runtime DLLs when a module fails to load with error 126
2026-10-14 12:27:35 +02:00
Nesyth 838c1ca961 perf(agc): drop stale unit shadows over DCC keys so pending fills answer the keys without a GPU wait 2026-10-14 12:27:11 +02:00
Nesyth 2d3c9b4b1d perf(agc): read DCC keys from the pending GPU fills that cover them instead of waiting for the fills 2026-10-14 12:27:11 +02:00
Adrià 2a99157640 Merge pull request #4812 from AlxcBTW/feat/trace-summary-interval
feat(agc): add APS5_TRACE_SUMMARY_EVERY for summary lines of a long session
2026-10-14 12:24:56 +02:00
Dean 23e93c0547 Merge pull request #5707 from oneandonlydean/fix/storage-saved-bytes-outside-fill
fix(agc): keep the saved guest bytes of units a fill or image copy does not cover
2026-10-14 23:14:38 +13:00
mrfelek dd7d649c36 feat(agc): storage image access to depth planes through a 2D array view from a later slice
A storage view of the depth plane that starts above slice 0 was refused. The
layered storage image already spans slices 0..last, and the view starts at its
base slice, so the refusal is dropped and only the slices from the base slice to
the last are copied in and out. The base slice joins the cache key.

DepthStorageDispatch stores through a view from base slice 2 and checks the
other slices stay untouched; it fails without the change.
2026-10-14 12:13:52 +02:00
ee6aba54 64ffeb8c9f fix(agc-driver): size the storage image cache from the device's reported memory budget
The storage image cache kept a quarter of the device-local heap (4 GiB on a
16 GiB card) regardless of how much of the heap the driver reports as usable.
With a desktop and other allocations the reported budget is about 10 GiB, the
cache stayed full at 4 GiB, and after minutes of a cutscene device buffer
allocations failed with VK_ERROR_OUT_OF_DEVICE_MEMORY. The cache budget is now
the smaller of that quarter of the heap and a quarter of the reported budget,
at least 512 MiB, read once per second; APS5_TEXTURE_CACHE_MIB still overrides
it. The budget report names the storage budget in use. A test covers the limits.
2026-10-14 12:10:25 +02:00
Mehran e9c98900e7 fix(agc): bind a V# past the range limit by the memory behind it 2026-10-14 13:09:59 +03:00
Dean Galvin bfca92e8ae test(agc): take the LDS update check's words as a span
Retained SPIR-V is a span on main since #4806.
2026-10-14 23:07:26 +13:00
Dean c654b199bd Merge pull request #5049 from eljackjoestar-cmd/codex/scalar-buffer-descriptor-fields
fix(shader): ignore unused descriptor fields for scalar buffer loads
2026-10-14 23:06:33 +13:00
Muhammad Wasif Ali WasifandClaude Opus 5.5 e671332d2e fix(libc): keep lgamma finite for subnormal arguments on Windows
The MinGW-w64 lgamma overflows to infinity for nonzero |x| at or below 2^-1024. FreeBSD msun e_lgamma_r.c returns -log(|x|) for every nonzero |x| below 2^-56, so take that branch before the host function.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 15:03:50 +05:00
Muhammad Wasif Ali WasifandClaude Opus 5.5 9d9554948c fix(libc): ignore the space and + flags for unsigned printf conversions
The guest formatter passed the flags of %o, %u, %x and %X to the host, and
MinGW's printf prefixes a space to %u when the space flag is set: "% u" of 5
gave " 5". C17 7.21.6.1 applies both flags to signed conversions only, and
FreeBSD 11.4 vfprintf clears the sign for every unsigned conversion (nosign).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 15:03:45 +05:00
Dean Galvin 52813787cf fix(libkernel): defer raises while a thread holds the address-wait lock on Windows 2026-10-14 23:03:06 +13:00
simonbronkandClaude Opus 5.5 378ac61788 fix(libSceConvertKeycode): ignore the state bit 0x4000000 RE Engine titles pass
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:02:20 +02:00
Romans Pokrovskis 246d16a035 test(agc): preserve targetless alpha exports after rebase 2026-10-14 13:01:48 +03:00
JJenkx b009318423 docs(shader): place traversal debt in existing Build section 2026-10-14 06:01:45 -04:00
JJenkx fd192b20cc docs(shader): place traversal debt with the component 2026-10-14 06:01:25 -04:00
JJenkx 8ed0bc395d perf(shader): avoid redundancy traversal map copies 2026-10-14 06:01:00 -04:00
Romans Pokrovskis c8b3a37533 feat(agc): emulate default eight-sample dithered alpha coverage 2026-10-14 12:58:43 +03:00
Dean eecf909539 Merge pull request #5188 from EagleBearerYS/fix/shader-images-from-constant-buffers
fix(shader): capture image descriptors read from constant buffers at uniform offsets
2026-10-14 22:58:01 +13:00
Dean 7963f16d12 Merge pull request #5514 from ps54all/feat/libsceappcontent-addcont-delete
feat(libSceAppContent): export sceAppContentAddcontDelete
2026-10-14 22:57:30 +13:00
milescovielloandClaude Opus 5.5 f4f69bb717 perf(agc): return freed memory when shader preparation drains
Ghost of Tsushima (PPSA02225) ends its first run, with no resource
plans in the shader cache, with about 4 GB more resident memory than a
run with a warm cache. The threads of the registration prepare pool
free what they allocate to prepare a shader, but glibc keeps the freed
memory in their arenas: at 110 s, 4.6 GB of the 6.5 GB the arenas held
was free.

When the pool has no task left, the worker that finished last calls
malloc_trim, at most once a second, which gives the free pages of every
arena back to the system.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 09:57:01 +00:00
ideabsassistenza d8e6922acb fix(release): inspect read-only dangling destination links 2026-10-14 11:56:50 +02:00
ideabsassistenza ad388ad21d fix(release): reject read-only Windows destinations before promotion 2026-10-14 11:56:07 +02:00
Dean 56429064fc Merge pull request #5226 from ErenYeager1836/carry/libSceSsl-connection-calls
feat(libSceSsl): add the connection calls
2026-10-14 22:55:56 +13:00
Dean daf256baab Merge pull request #5560 from Kikoarl/perf/agc-eliminate-fast-clear-register-fallback
perf(agc): eliminate DCC register clear fallback during color metadata pass
2026-10-14 22:54:38 +13:00
ShinMalphur a5a02df184 Merge branch 'boykopovar:main' into fix/trace-digest-gpu-mutex-waits 2026-10-14 16:23:19 +06:30
GalaxyGamingFRandClaude Opus 5.5 c177bde316 fix(trace_digest): print non-ASCII names on a legacy console
On Windows, piped or redirected output uses the ANSI code page, so a
trace whose thread or slice names are not in cp1252 (a Japanese thread
name, for example) made the markdown digest stop with
UnicodeEncodeError after the work was done. stdout is now set to UTF-8
when the tool runs from the command line, as check_conventions.py does.
The --json output was not affected because json.dumps escapes non-ASCII.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_012zyXkUzTZGh3nBwNMtrLaW
2026-10-14 02:52:39 -07:00
ShinMalphur 2507b84f16 test(tools): cover GPU mutex wait accounting 2026-10-14 16:22:30 +06:30
ShinMalphur 97bb32d516 fix(tools): classify GPU mutex trace slices as waits 2026-10-14 16:21:35 +06:30
GalaxyGamingFRandClaude Opus 5.5 25527f97a0 fix(stubgen): report named stubs by __func__
CONTRIBUTING.md says unimplemented exports call
NotImplemented_nid_no_patch(__func__), and 362 calls in core/ do. A stub
generated for a NID with a known name passed the NID string instead,
so its log line showed tNn5WBkta60 rather than sceAmprCommandBufferNop
and the output had to be edited by hand. Named stubs now use __func__;
stubs with an unknown name keep the NID, the only identifier they have.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_012zyXkUzTZGh3nBwNMtrLaW
2026-10-14 02:50:53 -07:00
Yossi Yadgar acc228ab4a test(relinker): check the execute bits of --macos outputs
relinker_executables converts the picker case with --macos too and
requires both Mach-O outputs to be executable. It fails when the
permission change is limited to Linux outputs.
2026-10-14 12:49:21 +03:00
simonbronkandClaude Opus 5.5 ddf5e146e1 docs(debt): list sceHttp2WebSocketSetPingTimeout
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 11:49:12 +02:00
Yossi Yadgar bfc95d20c6 docs(user): drop the chmod step that conversion no longer needs
Keep it for copies that lost their mode, and name the LoadExec error a
missing execute bit gives.
2026-10-14 12:49:12 +03:00
Yossi Yadgar 0e8d280509 test(relinker): check that converted executables can be executed
relinker_executables now requires the execute bits on app.elf and on
picker.picker.bin.elf. It fails with the previous main.cpp, where both
are 0644.
2026-10-14 12:49:12 +03:00
Yossi Yadgar ab94ee21d7 fix(relinker): write Linux and macOS executables with execute permission
The executables were written with the default file mode (0644 under a
022 umask). The documented chmod covered app.elf, but not the outputs of
--executable, so RetroArch (PPSA99169) converted with
--executable picker/picker.bin --executable es-de/es-de.bin stopped as
soon as it started its picker:

  sceSystemServiceLoadExec: execv failed: Permission denied

Every executable output now gets execute permission for owner, group and
others after it is written, as --autorun already did for app.elf. With
it RetroArch starts the picker, and the picker starts ES-DE.
2026-10-14 12:49:12 +03:00
simonbronkandClaude Opus 5.5 73f53ddfb3 feat(libSceHttp2): export sceHttp2WebSocketSetPingTimeout
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 11:48:38 +02:00
Oleksandr SierovandClaude Opus 5.5 84bb450d48 feat(libkernel): EVFILT_VNODE on macOS through the host kqueue
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 10:48:35 +01:00
Dean 115dc95784 Merge pull request #5347 from MathiasDevelopes/codex/pr-agc-stencil-clear-state
fix(agc): initialize stencil control and reference masks
2026-10-14 22:48:14 +13:00
Alexej Szpevák ba4b2db238 fix(relinker): move legacy CMPSS and CMPSD out of line for Rosetta
The Rosetta split covered only VEX scalar compares. #5642 measured the
same lost load after legacy CMPSS and CMPSD, and the decoder already
hands them to the matcher with the right length and RIP offset.

Recognise F3 or F2, segment overrides and an optional REX before
0F C2 /r ib, with the same predicate rule as the VEX forms. A 66, 67 or
LOCK prefix, or both F2 and F3, keeps the instruction inline as before.
2026-10-14 11:48:11 +02:00