Commit Graph
14017 Commits
Author SHA1 Message Date
arcwiser 8e0d6324af docs: group signal list debt with signal handling 2026-10-14 14:16:05 +13:00
screammandClaude Fable 5.1 9849a1db64 feat(libSceLibcInternal): export sys_siglist and sys_nsig
PS5CEMU-HAR (PPSA99360, ps5-payload-dev build, relinks with
--trap-sdk-syscall-stubs) imports the data objects sys_siglist
(yCdGspbNHZ8) and sys_nsig (ZD+Dp+-LsGg) from libSceLibcInternal.prx;
the import audit lists both as absent (registry entries 364 and 378,
after pthread_setaffinity_np at 276). No run has reached them yet; the
predicted stop line is

  FAIL: unresolved ELF import ZD+Dp+-LsGg (sys_nsig) from libSceLibcInternal.prx

or yCdGspbNHZ8 (sys_siglist), whichever the loader resolves first.

The table and count are FreeBSD 11.4 lib/libc/gen/siglist.c (8c639945):
32 descriptions, signal 0 to SIGUSR2 (NSIG 32), and sys_nsig is their
number, 32. ps5-payload-dev declares both as objects exported by
libSceLibcInternal and its strsignal reads them.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-14 14:15:55 +13:00
pushkarreddyy acbc573212 feat(libSceAgcDriver): skip CMASK decode on single-sample views with viewMip > 0 2026-10-14 14:15:25 +13:00
Cesar RodriguezandClaude Opus 5.5 8c554cc42a fix(agc): accept a CB metadata pass whose depth test passes every fragment without writing
DecodeColorMetadataPass refuses an eliminate-fast-clear or DCC-decompress
pass when DB_DEPTH_CONTROL has any of its low four bits set and depth or
stencil planes are bound. Marvel's Guardians of the Galaxy (PPSA01748)
issues one with the Z test enabled, ZFUNC ALWAYS and no Z write
(DB_DEPTH_CONTROL 0x72) while a Z32 and an S8 target are bound. That test
passes every fragment and leaves depth unchanged, so the pass does no
depth work. Draws already treat this state as a pass-through
(depthPassThrough); the metadata pass now uses the same rule. Depth
bounds, depth writes, stencil tests and DB_RENDER_CONTROL clears or copies
are still refused, and the error names the four registers involved.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 14:15:04 +13:00
ArjenS-LA 394c5a231e fix(relinker): validate Linux guest runpaths with target syntax 2026-10-14 14:14:38 +13:00
Dean ee9037d851 Merge pull request #4694 from EagleBearerYS/fix/agc-draw-snapshot-cap-at-build
perf(agc): read the draw snapshot cap when resources are built
2026-10-14 14:14:16 +13:00
Dean cd90ca50be Merge pull request #4712 from Ondra97/codex/fix-debt-section-moves
fix(tools): preserve technical debt section moves
2026-10-14 14:13:58 +13:00
Dean b16a1a72f3 Merge pull request #4776 from babyhuey/feat/libkernel-sysctl-tsc-freq
feat(libkernel): report machdep.tsc_freq from sysctlbyname
2026-10-14 14:09:31 +13:00
Dean 19785b50e9 Merge pull request #4425 from Lorkydey/fix/import-audit-atomic-json
fix(import-audit): preserve JSON reports when writing fails
2026-10-14 14:06:16 +13:00
Dean d7bb2fee3d Merge pull request #5580 from oneandonlydean/fix/videoout-dinput-1042
fix(videoout): disable SDL DirectInput joystick enumeration on Windows
2026-10-14 14:02:29 +13:00
Dean 604ce71864 Merge pull request #4947 from Kikoarl/perf/agc-draw-recipe-depth-expansion
perf(agc): expand draw recipes to support depth targets
2026-10-14 14:00:34 +13:00
Dean 1f1115dc90 Merge pull request #4795 from MarcZX100/codex/pipeline-cache-snapshot-lock-4781
fix(agc): serialize pipeline cache snapshots
2026-10-14 14:00:21 +13:00
JAB-devandClaude Sonnet 5.5 05bf752bfa fix(libkernel): clear the unwind cache when forgetting unloaded images fails
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-14 02:57:39 +02:00
Dean 0dea07ab27 Merge pull request #4517 from AlxcBTW/perf/host-import-join-exact
perf(agc-driver): join the imports of adjacent ranges of any size that a buffer is bound exactly over
2026-10-14 13:53:00 +13:00
JAB-devandClaude Sonnet 5.5 434e0b9edf fix(libkernel): forget unwind images only when their module is unloaded and read tables outside the lock
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-14 02:49:16 +02:00
Evgeniy Kazarin 6215101d28 feat(libkernel): support fixed anonymous mmap
Map fixed private anonymous ranges through the existing guest arena. Preserve occupied ranges for MAP_EXCL and use FreeBSD 11.4 errors.

Cover replacement, exclusivity, range validation, rounding, and memory access.
2026-10-14 03:48:36 +03:00
thibautandClaude Opus 5.5 b7d7e71bf6 docs(libc): move the Windows direct memory debt entry to libc.md
The entry links WindowsMappings.hpp, so the debt-file convention puts it in
docs/dev/debt/libc.md.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01V1W4jdNSKTV7xwuS6xQPJV
2026-10-14 02:39:10 +02:00
thibautandClaude Opus 5.5 f32a9407e4 test(libc): require resident direct memory in the resident run tests
CheckBreakingAResidentRunKeepsConcurrentAccesses and
CheckRemappedDirectMemoryIsChargedOnce passed on main, where a singly
mapped direct memory page is a shared view and no resident run exists.
Both now require their first mapping to be private committed memory, so
on main they fail there instead of passing without exercising a run.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01V1W4jdNSKTV7xwuS6xQPJV
2026-10-14 02:39:10 +02:00
thibautandClaude Opus 5.5 71da166a18 fix(libc): keep resident mappings to direct memory backings on Windows
Map made every singly mapped section page private resident memory. A JIT
or shm_open section is file backed and committed: its bytes live in the
file, and its alias descriptors map duplicated handles, which the physical
page slots do not match, so a resident copy diverged from the file, and
committing its view on a demote failed with access denied
(guest_jit_shared_memory). Only direct memory backings, mapped through the
new GuestArenaMapDirect, now become resident; other sections keep main's
shared views. Shared pages are committed only while their section page is
reserved, as on main.

The socket host write tests map their direct memory a second time, so the
write-protected shared path they check is still the one they exercise.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01V1W4jdNSKTV7xwuS6xQPJV
2026-10-14 02:39:10 +02:00
DotDebianandClaude Opus 5.5 d9852df2a2 fix(libc): track writes to singly mapped direct memory without faults on Windows
A direct memory page mapped at one guest address now lives in private
MEM_WRITE_WATCH memory at that address, and its writes are collected with
GetWriteWatch like flexible memory: no fault is raised. A page mapped at a
second address moves its whole resident run into the section, behind a
read-only fence while it is copied, and every address becomes a view of it,
tracked by write protection. Unmapped resident pages that are not blank are
kept in a private reservation until they are mapped again, not in the
section.

Ported onto main's 4 KiB subpage tracking of shared views: resident runs
keep a per-page collected bit and enter the fresh ranges, so Fresh and
Armed collections select them like shared views; a demoted run carries its
collected bits into the views and reports every page once. MapAlias throws
through refuse() when a resident run extends outside the aliased range, and
the caller keeps main's fallback.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01V1W4jdNSKTV7xwuS6xQPJV
2026-10-14 02:39:10 +02:00
JJenkx 0093322ba1 Merge remote-tracking branch 'origin/main' into fix/linux-guest-finalizer-arguments 2026-10-13 20:38:27 -04:00
JJenkx 84c50f9e88 Merge remote-tracking branch 'origin/main' into feat/private-mutex-sharing 2026-10-13 20:38:25 -04:00
JJenkx e5deca76d9 test: separate independent PR additions 2026-10-13 20:37:25 -04:00
JJenkx 1b0eba7550 test: separate independent PR additions 2026-10-13 20:37:24 -04:00
Feuris 6beefccfa5 feat(libc): implement wcsnlen_s 2026-10-13 21:35:45 -03:00
JJenkx 4414bca721 docs(relinker): separate registry debt from startup and alias entries 2026-10-13 20:35:37 -04:00
MarcZX100 4307e3cb54 fix(agc): serialize pipeline cache snapshots 2026-10-14 13:34:43 +13:00
d275a58814 fix(agc-driver): copy a region an exact join's import covers only in part
After an exact two-piece join, a bind across the join's end got the
joined import from importAllocation and the view failed as "rounded up to
its view range exceeds its GPU owner". UploadFinish now asks importJoined
for a region past the import's end and drops an import that still does
not cover the region, so the region is copied, as on main. The join test
binds across the end of an exact join after a third piece is registered.

Co-authored-by: TideOPL <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 13:34:31 +13:00
AlxcBTWandClaude Opus 5.5 ca95f74097 perf(agc-driver): join the imports of adjacent ranges of any size that a buffer is bound exactly over
A bound buffer is joined across adjacent registered ranges only when every
one of them is larger than the 8 MiB window. PPSA25344's loading binds 16 MiB
and 4 MiB buffers whose backing was registered in two to six adjacent
pieces with the same access, some of them smaller than the window, so each
use of such a buffer was copied on the CPU: up to 348 GB in the first 300 s
of loading.

A bound buffer that starts at the first crossed range's start and ends at the
last one's end now joins those ranges whatever their size. A heap grown in
pieces matches that only for a binding over exactly its current pieces, so
growth beside a joined import does not re-import it. joinedCovers, used when a
joined import retires, accepts any adjacent run of ranges.

importJoinTests binds exactly over two 64 KiB pieces of a partly filled
window and requires one import of both; a binding across them that starts
inside the first piece stays apart.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 13:34:31 +13:00
Dean ce5c839533 Merge pull request #4883 from nikowolf123/perf/shader-cache-resource-plan
perf(recompiler): keep the front-end resource plan in the shader disk cache
2026-10-14 13:33:01 +13:00
Dean 29d5f067b9 Merge pull request #5003 from tibzejoker/feat/depth-storage-array-views
feat(agc): storage image access to depth planes through 2D array views
2026-10-14 13:32:41 +13:00
babyhuey 31abd1a2af feat(libkernel): export sceKernelGetSocPowerConsumption 2026-10-13 20:32:24 -04:00
Dean af991ac404 Merge pull request #4747 from TideOPL/perf/bc-block-copy
perf(agc): copy a pending block-compressed surface into its sampled texture on the GPU
2026-10-14 13:32:04 +13:00
Dean cb320fd884 Merge pull request #4603 from AlxcBTW/perf/agc-memory-value-fill
perf(agc): take the memory-value dword fill kernel as a buffer fill
2026-10-14 13:31:43 +13:00
Dean 520ee1a2e8 Merge pull request #4490 from karanvora2599/perf/shader-minmax-floor-denormal-free
perf(shader): treat f32 min, max, med3, floor and ceil results as denormal-free
2026-10-14 13:31:23 +13:00
Dean afc8541d18 Merge pull request #4487 from Pipodi/feat/agc-forced-srgb-views
feat(agc): sample non-sRGB textures through FORCE_DEGAMMA samplers as sRGB views
2026-10-14 13:31:02 +13:00
Dean 7cc6cd8633 Merge pull request #4465 from mrzacarias/fix/agc-buffer-pattern-fill
fix(agc): handle the fill kernel that reads its pattern from a buffer
2026-10-14 13:30:42 +13:00
JJenkx d1527840ea fix(libkernel): retire stack metadata before releasing mappings 2026-10-13 20:30:24 -04:00
fdfawef324andCodex 8d8fe39eed fix(agc): flush pending stores before a partial snapshot hit
A partially resident snapshot cannot be reused from committed write stamps while a recorder batch still owns an overlapping completion store. Make that case compare through the guest-memory flush hook before deciding whether the snapshot is unchanged.

Cover copied completion stores in both open and submitted batches, then verify that unchanged snapshots are reused and an unrelated pending write does not synchronize. The focused regression fails on the published PR head and passes with the guard. The existing fully committed snapshot path is unchanged.

Co-Authored-By: Codex <[email protected]>
2026-10-13 20:25:46 -04:00
fdfawef324andClaude Opus 5.5 955b56a2b5 perf(agc): trust write stamps for snapshots of partially committed textures
A sampled texture over a partially resident surface (a texture array whose
heap the guest commits on demand) never got a write generation: CollectWrites
fails on a range with reserved pages, so every cache hit compared the whole
committed part with its snapshot. CollectCommittedWrites collects the
committed runs one by one and returns the runs with the generation; the cache
entry records them, and a hit skips the compare only when the committed runs
are the same and UnchangedCommittedSince holds over them. A commit, decommit,
view mapping or unmapping inside the surface changes the runs or stamps the
new pages, so it is compared as before.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-13 20:25:46 -04:00
ryyReid 2a01e9eb18 feat(tools): unwrap decrypted SELF containers into clean ELF
The relinker reads a plain ELF executable and skips SELF containers with a
warning, so an eboot.bin or a *.prx taken from a title cannot be relinked
before it is unwrapped, and the repository has no tool for that.

The inner ELF program headers of a container carry stale offsets: a SELF
inserts its own metadata blocks between the segments, so the data sits at the
offsets of the SELF segment-record table at file offset 0x40. The segments are
also packed without honouring p_align, while ELF requires p_offset % p_align
== p_vaddr % p_align, which the relinker enforces on guest modules. The tool
places the segments from the records, falls back to the vaddr to file mapping
of the containing PT_LOAD for segments the table does not cover, copies every
region to an offset satisfying the alignment, and refuses a container whose
load segments all look encrypted.
2026-10-13 19:23:51 -05:00
xXPBSXx e528ac9c58 Merge remote-tracking branch 'upstream/main' into d-5143-merge
# Conflicts:
#	core/libs/prx/libkernel/CMakeLists.txt
2026-10-14 02:21:10 +02:00
john.maiaandClaude Opus 5.5 6ad9372fdd fix(agc): store a storage image whose last block row runs past its allocation
A storage image whose surface runs past the end of its registered
allocation had every write-back dropped as "memory no longer
registered". Titles can size a single-level surface's allocation as
pitch x height. A tiled mip's 64 KiB blocks are stored row-major, so
that size ends inside the last block row, and the bytes after it are
the tail of that row: they hold texels with y < height, which the GPU's
own store writes into the next allocation. When the allocation ends
inside the last block row and registered readable memory continues to
the surface's end, the write-back now stores the whole surface, as the
GPU does. Padding slots keep their bytes, since the store writes only
bytes that changed.

Epic Mickey: Rebrushed streams its lightmaps into an 8160x8160 BC3 pool
(SW_64KB_S, 2048 block rows) through a 2040x2040 RGBA32UI alias written
by compute. The game allocates 2040 rows, so all its write-backs were
dropped and the walls sampled leftover memory as speckled noise.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 01:19:55 +01:00
JJenkx 426eef946f Merge remote-tracking branch 'origin/main' into fix/guest-declared-host-import-registry 2026-10-13 20:19:30 -04:00
Dean GalvinandTenith01 56d1eda2f0 docs(videoout): record disabled DirectInput controller backend
Co-authored-by: Tenith01 <[email protected]>
2026-10-14 13:14:15 +13:00
Tenith01 e94f12bd17 fix(videoout): disable DirectInput joystick enumeration on Windows 2026-10-14 13:14:15 +13:00
JJenkx d1de55fb33 test(videoout): register label modes independently of flip-master tests 2026-10-13 20:14:13 -04:00
JJenkx aaa5fd9c60 test(videoout): separate label cases from EOP additions 2026-10-13 20:13:38 -04:00
Dean feddf7f4c6 Merge pull request #4849 from MarcZX100/codex/fix-address-cache-shutdown-4846
fix(agc): release cached address space on device teardown
2026-10-14 13:13:08 +13:00
Dean 014f3623a7 Merge pull request #4508 from jradelmo/feat/flexible-memory-budget
fix(kernel): honor the declared flexible memory budget
2026-10-14 13:13:03 +13:00