Commit Graph
20967 Commits
Author SHA1 Message Date
Yossi Yadgar 6c88a69a24 test(libSceNpTus): run every new request through its arguments and its signed-out result
Each asynchronous call must start with valid arguments and finish signed out, refuse an unknown request and a non-null option; each synchronous call must return SCE_NP_ERROR_SIGNED_OUT. Targeted cases cover empty virtual users, the operation and sort types and the slot, user, friend and TSS size limits.
2026-10-21 12:33:07 +03:00
Yossi Yadgar facfb24846 feat(libSceNpTus): check the arguments of the TSS small storage request and fail it signed out
sceNpTssGetSmallStorageAsync refuses an option and a size above 64 KiB as shadPS4 does, and sceNpTssGetSmallStorage waits for it.
2026-10-21 12:32:56 +03:00
Yossi Yadgar f4d740b8f3 feat(libSceNpTus): check the arguments of the data status requests and fail them signed out
The multi-slot, multi-user and friends data status calls run shadPS4's argument checks and finish with SCE_NP_ERROR_SIGNED_OUT.
2026-10-21 12:32:55 +03:00
Yossi Yadgar 943438f5f5 feat(libSceNpTus): check the arguments of the data requests and fail them signed out
The set, get and multi-slot delete data calls in all their forms run shadPS4's argument checks and finish with SCE_NP_ERROR_SIGNED_OUT.
2026-10-21 12:32:53 +03:00
Yossi Yadgar 6826a4bd9c feat(libSceNpTus): check the arguments of the variable requests and fail them signed out
The add-and-get, try-and-set, multi-user and friends variable calls (NpId, account, virtual user and cross-save forms) run shadPS4's argument checks and then finish with SCE_NP_ERROR_SIGNED_OUT like the multi-slot variable calls; the synchronous forms wait for their asynchronous ones.
2026-10-21 12:32:44 +03:00
Dragost 3b40961d5d fix(libSceAvPlayer): allow presenting video frames within sync tolerance 2026-10-21 11:32:33 +02:00
verusferro 29f1a34ccb feat(libkernel_sys): implement fstat
fstat was a NotImplemented stub in libkernel_sys. It now calls libkernel's
_fstat, as fstatfs already calls _fstatfs, so it reports the same status,
EFAULT for a null buffer and EBADF for a descriptor that is not open.
2026-10-21 12:31:34 +03:00
JJenkx 623501f365 perf(agc): lease mapped readable runs for import events 2026-10-21 05:28:08 -04:00
akkadbakkad89andDevin 0f5f35166a feat(libSceNpCppWebApi): cover the ParameterToGetContainer lifecycle and getContainer
Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-21 09:24:32 +00:00
hamb3r 0070aeafce fix(agc): keep default prebuild pool thread count at 1 and skip cached prebuilds 2026-10-21 12:23:31 +03:00
Dean b5d763770a Merge pull request #8955 from xdCloudy/feat/ps5-videoout-exports
feat(libSceVideoOut): declare PS5 pending exports
2026-10-21 22:20:56 +13:00
Dean 32f5424e80 Merge pull request #8954 from xdCloudy/feat/ps5-videocoreinterface-exports
feat(libSceVideoCoreInterface): declare PS5 pending exports
2026-10-21 22:20:52 +13:00
Dean 6f3b8e66be Merge pull request #8953 from xdCloudy/feat/ps5-urlconfigresolver-exports
feat(libSceUrlConfigResolver): declare PS5 pending exports
2026-10-21 22:20:48 +13:00
Dean 2ca8469e84 Merge pull request #8947 from xdCloudy/feat/ps5-imedialog-exports
feat(libSceImeDialog): declare PS5 pending exports
2026-10-21 22:20:44 +13:00
Dean e6ebe8a8b7 Merge pull request #8857 from Dripl1x/perf/direct-memory-section-pool
perf(libkernel): reuse released direct-memory sections that never held data
2026-10-21 22:20:39 +13:00
Yunus Shaikh f65fda5c3d fix(agc): size a moved read-only buffer at the render target as its build does
Since #8224, a read-only strided buffer that starts below the render
target and runs less than one stride into it is bound only up to the
target, and the cached build keeps that size. MovedReadOnlyBuffers
compared it with the descriptor's whole size, so a hit with the same
words took the buffer as moved and rebound all of it, over the render
target.

MovedReadOnlyBuffers takes the draw's target and cuts a read-only buffer
as the build does. The cut lives in ShaderResources::BytesUpToTarget,
which addGuestBuffer, CheckBufferAliases and MovedReadOnlyBuffers call;
a buffer that runs a whole stride or more into the target is not cut and
still fails the alias checks.

agc_driver_graphics checks a cached build whose read-only stride-60,
4-record buffer runs 8 bytes into the target: the same words list
nothing moved, a buffer moved to run 4 bytes in is listed at 236 bytes,
and one moved to run a whole stride in keeps its 240.
2026-10-21 02:19:46 -07:00
Queuze a2e07a5eb5 test(libc): check host stdout after freopen 2026-10-21 06:18:20 -03:00
JJenkxandClaude Opus 5.5 2fc26b970f fix(libkernel): return ESRCH for a null semaphore handle
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 05:18:18 -04:00
WhiteAssassins 087cf11045 fix(tools): continue after relinker candidate errors 2026-10-21 05:16:06 -04:00
xdCloudy 48d9c8b6e7 fix(libSceNpSnsFacebookDialog): include stub declarations 2026-10-21 10:11:34 +01:00
xdCloudy 2ae6cd18bf feat(libSceNpManager): declare 150 pending exports 2026-10-21 10:09:38 +01:00
Dean Galvin 89c2393593 docs(dev): describe the unimplemented Videodec2 exports without naming a title
Name no title or title ID in the entry. The mechanism text is unchanged.
2026-10-21 22:05:51 +13:00
WhiteAssassins efab492f4f fix(tools): verify local relinker and isolate bad catalog entries 2026-10-21 05:05:36 -04:00
Queuze 630daf82ec test(libc): cover siginterrupt state boundaries 2026-10-21 06:04:46 -03:00
hypermistandClaude Opus 5.5 b3b6e83aca feat(libSceLibcInternal): add the __std_init_once _clr calls
__std_init_once_begin_initialize_clr, __std_init_once_complete_clr and
__std_init_once_link_alternate_names_and_abort were not exported. As in
the PS5 12.00 module, begin moves an idle once object to running and
reports pending, reports done without pending, and waits on the object
while another caller runs; complete marks it done, or idle again for
flag 4, wakes every waiter and returns 1; the third aborts.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-21 22:02:40 +13:00
dantdmdarealguy 103484d0be fix(tools): read the EnvironmentNumber environment reader in env_reference
The Windows crash report reads APS5_CRASH_STACK_BYTES through
EnvironmentNumber, which env_reference did not recognize, so the name had
no row in docs/dev/ENVIRONMENT.md and neither the reference check nor the
conventions check reported it. Recognize the reader as an integer reader
and add the row.
2026-10-21 04:01:18 -05:00
hypermistandClaude Opus 5.5 e66eae3c5a feat(libSceLibcInternal): add the std::filesystem file and directory primitives
The Dinkumware std::filesystem in titles calls twelve low-level helpers
that libSceLibcInternal exports and this project did not: _Stat, _Lstat,
_File_size, _Last_write_time, _Make_dir, _Remove_dir, _Unlink, _Chmod,
_Current_get, _Open_dir, _Read_dir and _Close_dir. They now follow the
PS5 12.00 module on top of the guest stat, mkdir, rmdir, unlink, chmod,
getcwd and directory calls, with its results: file_type codes from the
mode, not_found for ENOENT, ENOTDIR, EINVAL and ENAMETOOLONG, mkdir's
1/0/-errno, -1 for a failed size, and directory reads that skip the dot
entries and report the type as unknown. As on the console, _Lstat
follows links like _Stat.

The two _Xfilesystem_error overloads are exported and still throw, as
the guest filesystem_error type is not provided yet.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-21 21:58:09 +13:00
bluandClaude Fable 5.1 524dcd4bae feat(libc): implement siginterrupt through the sigaction libkernel registers
siginterrupt is a libSceLibcInternal export (the public SDK's stub table has it there, not in the
kernel tables) and FreeBSD 11.4's lib/libc/gen/siginterrupt.c reads the signal's disposition,
sets or clears the signal's bit in _sigintr and SA_RESTART, and installs the disposition again.
libc cannot call libkernel, so, as the pthread hooks do, libc keeps a registered sigaction and
the address of the _sigintr set, and libkernel registers both from a static initializer when it
loads. A call before that throws; the set is written without libkernel's registration lock, as
FreeBSD's libc does. Builds on #8866, which adds the set.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-21 05:55:23 -03:00
bluandClaude Fable 5.1 6ab912f818 feat(libkernel): export _sigintr and let signal honour it
The public SDK's libkernel, libkernel_sys and libkernel_web stub tables declare _sigintr, the
sigset_t that FreeBSD's libc shares between signal and siginterrupt, and no built library
provided it (#8846). libkernel now exports the 16-byte object, zero at start, and signal records
a handler with SA_RESTART unless its signal is in the set, as lib/libc/gen/signal.c does.

siginterrupt, which fills the set, is a libSceLibcInternal export; libc does not link libkernel
and cannot reach the dispositions, so it stays out and a debt entry for signal says so.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-21 05:55:23 -03:00
milescovielloandClaude Opus 5.5 127aba3ed6 fix(agc): order and address DB depth copies like the surfaces they read
- Drain the draw pipeline before recording the copy, as the CB metadata
  pass does, so the copy follows the queued draws that render the plane.
- Address the plane as decodeDepth registers it: a multisampled plane's
  pipe-bank XOR bits are stripped and a DB_DEPTH_VIEW slice is added.
  Mipmapped or partially resident planes are refused.
- Refuse a color target with CMASK fast clears, as the CB resolve does.
- Find the source through the depth owner (planeSurface) and require a
  32-bit float surface with the decoded sample count.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 08:54:50 +00:00
Yunus Shaikh 1a0c43b69f perf(agc): retain link-time optimization info only where a link is optimized
Every graphics pipeline library was created with
VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT, and
libraries live until the device is destroyed. Only the background
relink reads that info, and it exists only when the device's links are
optimized: not on the NVIDIA proprietary driver and not with
APS5_NO_PIPELINE_LTO set. A library now asks for the info only when
its link will be optimized, and whether it will be is part of the
library cache key, so a link that is optimized never names a library
made without the info, even when a context forces
pipelineLinkTimeOptimization on a device whose other contexts do not.
Draws, journal replays and shader library prebuilds all create their
libraries through this one path.

The pipeline readback tests count the libraries created with the flag
next to their pixel checks, and a new recorder mode checks that a
context without optimized links makes libraries without the info and
that a context with them makes its own.
2026-10-21 08:53:18 +00:00
WhiteAssassins c9fe159e6d docs: clarify local patch advisor usage 2026-10-21 04:51:59 -04:00
xdCloudy 411a8e7711 fix(libSceNpCommon): include export ABI declarations 2026-10-21 09:49:31 +01:00
xdCloudy 8648287a23 feat(libSceNpCommon): isolate 150 pending exports 2026-10-21 09:49:31 +01:00
xdCloudy bb8b215939 feat(libSceNpManager): declare 150 pending exports 2026-10-21 09:49:31 +01:00
xdCloudy 3e12ba183f feat(libSceNpCommon): declare 150 pending exports 2026-10-21 09:49:31 +01:00
David abe827df20 Merge remote-tracking branch 'origin/main' into feat/videodec2-unimplemented-exports
# Conflicts:
#	docs/dev/debt/libSceVideodec2.md
2026-10-21 12:41:51 +04:00
SimoneandClaude Opus 5.5 6131ec265d feat(libkernel_sys): implement the scePthreadBarrier, cpuclockid, concurrency and msync forms
Forward scePthreadBarrier*, scePthreadBarrierattr*, scePthreadGetcpuclockid,
scePthreadGetconcurrency and sceKernelMsync to libkernel's POSIX
implementations and return POSIX errors as SCE kernel errors.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 10:40:25 +02:00
MarcZX10 29d50d189e fix(libkernel): check getrlimit output pointers 2026-10-21 08:38:01 +00:00
WhiteAssassins 21481b3cd4 test(tools): verify patch advice with real relinker 2026-10-21 04:37:58 -04:00
lakhantheboss 2b1eb36139 fix(savedata): validate backup and event result arguments 2026-10-21 14:06:38 +05:30
hamb3r 320a4b6a19 fix(agc): restore partialThreads registration variant and bound dispatch look-ahead 2026-10-21 11:35:33 +03:00
Dean Galvin 0f7241f3a7 Merge origin/main into PR 6519 2026-10-21 21:35:27 +13:00
Dean 27c88a8d75 Merge pull request #8224 from savvaniss/fix/agc-strided-overhang-render-target
fix(agc): bind a strided buffer's last record only up to the render target it runs into
2026-10-21 21:32:49 +13:00
Dean 14a903974e Merge pull request #8945 from xdCloudy/feat/ps5-httpcache-exports
feat(libSceHttpCache): declare PS5 pending exports
2026-10-21 21:32:24 +13:00
Dean 285e62dbe9 Merge pull request #8943 from xdCloudy/feat/ps5-acm-exports
feat(libSceAcm): declare PS5 pending exports
2026-10-21 21:32:20 +13:00
Dean d6ce027977 Merge pull request #8805 from ags-arnab/feat/nptus-multislot-variables
feat(libSceNpTus): run the remaining multi-slot variable calls offline
2026-10-21 21:32:16 +13:00
Dean 26d1065e25 Merge pull request #8803 from AMRYB/fix/self-overlapping-load-regions
fix(tools): preserve load ownership when unwrapping SELF
2026-10-21 21:32:12 +13:00
Dean ce9cf3feff Merge pull request #8305 from hypermoist/fix/utility-libs-console-results
fix(libs): return what the firmware returns from 24 utility calls it does not implement
2026-10-21 21:32:08 +13:00
Dean bf272df673 Merge pull request #8839 from JJenkx/windows/videodec2-generic-vp9-info
fix(libSceVideodec2): answer the generic picture query for VP9 pictures
2026-10-21 21:32:04 +13:00