Commit Graph
14017 Commits
Author SHA1 Message Date
Adrià 2083bc700f Merge pull request #6020 from KernelPanicNT/feat/libsceappcontent-addcont-download-progress
feat(libSceAppContent): implement sceAppContentGetAddcontDownloadProgress
2026-10-17 05:15:31 +02:00
Nithishvelan M 63cfca8466 feat(libSceUserService): declare KeyremapEnable and Zoom as throwing stubs 2026-10-17 08:43:48 +05:30
Nithishvelan M d76ea9a6be docs: drop unverified note on macOS host game execution 2026-10-17 08:38:06 +05:30
MarcZX100 f7e6131565 fix(agc): fall back when host-write alias is refused 2026-10-17 03:01:05 +00:00
Dean bfcf02e3a8 Merge pull request #6385 from Neithennn/fix/store-over-untracked-neighbour-wait
test(agc): keep waiting for the neighbour copy case's result
2026-10-17 15:58:07 +13:00
thuanquangandClaude Opus 5.5 d5dbce438a test(agc): map GPU memory on fibers with and without a host stack
Since #6003 a fiber with a context of 64 KiB or more runs on the
context itself, so the 64 KiB fiber of agc_driver_gpu_map_on_fiber
imports its mapping on a host thread on Windows too, and the test's
Windows-only expectation of no thread failed. The test now also maps
on a 16 KiB fiber, which keeps a host stack and imports on it on
Windows, and expects one import thread for the 64 KiB fiber on every
platform.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 09:50:32 +07:00
Nicolas Abosch 0469be9e9c Merge remote-tracking branch 'origin/main' into perf/gpu-wake-sleeps
# Conflicts:
#	docs/dev/debt/libkernel.md
2026-10-16 23:40:36 -03:00
BasilF ded05f5287 fix(agc): defer unrouted vertex barriers 2026-10-17 05:27:32 +03:00
Santhosh Kumar eb26fb97f8 fix(libkernel): filter sandbox TLS roots and preserve path overrides 2026-10-17 02:25:41 +00:00
screammandClaude Fable 5.1 9f4a8d6ec5 feat(libkernel): serve the console CA list from the host trust store
Titles that bundle OpenSSL load the console's CA file from the sandbox
directory and fail every HTTPS request without it. ProsperoRadio
(PPSA99001, libcurl 8.18.0 + OpenSSL 3.5.2) on main + #4796 + #4525:

  [ProsperoRadio][http] https://all.api.radio-browser.info/json/servers: Problem with the SSL CA cert (path? access rights?) (error adding trust anchors from file: /gkbHtXc3Wq/common/cert/CA_LIST.cer)

SwanStation (PPSA98510) stops on the same file (#5001).

The guest path resolver now accepts exact-path providers, and libkernel
registers one for /<sceKernelGetFsSandboxRandomWord()>/common/cert/CA_LIST.cer.
On first use it writes a PEM bundle once per process to
cert_cache/CA_LIST.cer in the run directory, read-only: on Windows the
current user's ROOT and CA system stores, elsewhere SSL_CERT_FILE or the
first distro bundle that exists. Without a certificate the path keeps
resolving under the guest root and does not exist, as before. Every other
path under the sandbox word is unchanged. The console file's format and
the rest of its common/cert directory are unverified and recorded in
docs/dev/debt/libkernel.md.

With this change, #4796, #4525 and #5025 on Windows 11, 60 s each:

  [ProsperoRadio][http] 11846160 bytes in 1458 ms: 1161 passes, 803 waits (679 woken) for 1428 ms
  [ProsperoRadio][catalog] page offset=0 bytes=11846160 objects=10000 accepted=9549 total=9549
  ...
  [ProsperoRadio][catalog] page offset=60000 bytes=1712035 objects=1494 accepted=1436 total=59371

  [SwanStationPS5] update: latest 1.2.5, this 1.1.3, available
  [SwanStationPS5] gamedb: index written

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-17 02:24:02 +00:00
Dean 9bf01db663 Merge pull request #6986 from oneandonlydean/fix/windows-test-exit-hang
fix(tests): end Windows test processes through libc before DLL detach
2026-10-17 15:15:48 +13:00
Adrià 1cdaed073d Merge pull request #6016 from akkadbakkad89/feat/missing-lib-exports
feat(libc): export the fmin and fmax family
2026-10-17 04:14:54 +02:00
Adrià 8566becc1c Merge pull request #6019 from KernelPanicNT/feat/libscefont-text-codes
feat(libSceFont): implement sceFontCharactersRefersTextCodes and text code stepping
2026-10-17 04:14:50 +02:00
Adrià c9cabcaf84 Merge pull request #6008 from zmeizy/claude/ldexp-f32-denormal-modes
fix(shader): translate v_ldexp_f32 in f32 denormal modes 1 and 2
2026-10-17 04:14:45 +02:00
Dean f643e61d9c Merge pull request #1693 from julienlgy/feat/razor-cpu-named-sync
fix(libSceRazorCpu): add sceRazorCpuNamedSync export
2026-10-17 15:02:12 +13:00
MarcZX100 871232eede test(agc): wait for preparation workers before linking 2026-10-17 02:00:23 +00:00
lorkydey 4e7e8ac1a9 feat(libc): implement floating-point rounding and exception flags 2026-10-17 03:46:56 +02:00
Get-fix ca75c94cc2 feat(libkernel): load system libraries from their console paths
PS4 programs load system libraries with sceKernelLoadStartModule and
their console path. The OpenOrbis piglet sample loads
/<sandbox word>/common/lib/libScePigletv2VSH.sprx and
libScePrecompiledShaders.sprx, the sandboxed form of
/system/common/lib/ that sceKernelGetFsSandboxRandomWord names. The path
was opened as a guest file and the load failed with ENOENT.

A path in /system/common/lib/ or in the sandboxed /<word>/common/lib/
whose file name ends in .sprx now loads the host libs/<name>.prx, as
libSceSysmodule does for module IDs. Names with a directory part are
not mapped, so such a path cannot leave libs/.
2026-10-17 04:46:19 +03:00
Get-fix 487b9fd4e4 feat(libkernel): read param.sfo when param.json is absent
PS4 titles ship sce_sys/param.sfo instead of param.json. When param.json
is absent, the application metadata now reads the title, title ID,
download data size and user defined parameters from param.sfo, and
/data and /download0 are mounted for it as for param.json. param.json
is still preferred when both files exist.
2026-10-17 04:46:16 +03:00
Dean Galvin ea33174d7d fix(tests): end Windows test processes through libc before DLL detach
On Windows a test that returns from main ends through exit and ExitProcess,
which kills every other thread before the prx static destructors run at
DLL_PROCESS_DETACH. Detached host threads (the driver's async log thread,
libkernel's file watch thread, ...) die holding winpthreads and queue locks,
and a destructor that then locks a mutex, waits for the dead logger or
destroys a condition variable never returns: the test prints its last line
and hangs until the CTest timeout (#6791).

Every test executable now wraps main on MinGW. After main returns the
wrapper runs the executable's own exit handlers and static destructors
(_cexit), as exit does today, flushes the streams and ends the process with
LibcTerminate_nid_no_patch, the path the guest exit already takes. That
flushes the driver log while its thread is alive and calls TerminateProcess,
so no DLL_PROCESS_DETACH work runs after the threads are gone. The libc
shutdown callbacks are not run, as on a plain return from main on Linux. A
test that does not load libc.prx returns as before.
2026-10-17 14:45:48 +13:00
Dean e1ac3300d3 Merge pull request #6224 from Agnibha007/fix/linux-fixed-base-relocated-phdrs
fix(relinker): rebase the relocated program header table at a fixed Linux base
2026-10-17 14:41:25 +13:00
Dean 2d16248a25 Merge pull request #6153 from MarcZX100/codex/fix-toggle-mouse-capture
fix(libSceVideoOut): preserve mouse-to-stick relative mode
2026-10-17 14:36:50 +13:00
Adrià fd9e577d98 Merge pull request #6007 from zmeizy/claude/cmp-f32-denormal-modes
fix(shader): translate f32 compares in f32 denormal modes 1 and 2
2026-10-17 03:10:56 +02:00
Adrià f1dded21fe Merge pull request #6004 from XairRrR/fix/agc-empty-register-list
fix(agc): write nothing for an empty register list
2026-10-17 03:10:51 +02:00
lorkydey ff159f5d61 fix(ci): build fixture helpers added by CTest 2026-10-17 03:00:24 +02:00
Dean 7fcc15cb42 Merge pull request #6452 from Amoenus/codex/fix-indirect-fixture-alignment-main0c
test(agc): align the indirect arguments block at run time
2026-10-17 13:53:44 +13:00
Adrià 6caba08643 Merge pull request #6003 from XairRrR/fix/fiber-large-context-stack
fix(libSceFiber): run a fiber on its own context when the context is large
2026-10-17 02:45:04 +02:00
Adrià b1cb3ed43b Merge pull request #5991 from Get-fix/ps4/videoout-ps4-buffers
feat(libSceVideoOut): register PS4 display buffers
2026-10-17 02:44:59 +02:00
Adrià 73d163a255 Merge pull request #5995 from squirlyfoxy/fix-audio-video-sync-for-unity
fix(avplayer): correct audio-video playback timing and sync
2026-10-17 02:44:54 +02:00
Adrià f3263dfbf3 Merge pull request #5949 from Ondra97/codex/fix-fiopen-exclusive-create
fix(libc): create noreplace streams exclusively
2026-10-17 02:30:12 +02:00
ivica00andCursor 6972e882c7 test(shader): pin the rect-list vertex selected at every tessellation corner
A coordinate just below 1 truncates to the wrong vertex. The generated evaluation shader is checked at each corner, and a draw records the vertex that lands on each corner of the rectangle.

Co-authored-by: Cursor <[email protected]>
2026-10-17 02:13:25 +02:00
Adrià Franch b35caffd12 fix(libSceRazorCpu): take the label argument of sceRazorCpuNamedSync 2026-10-17 13:06:46 +13:00
julienlgyandCopilot f4a33b7960 fix(libSceRazorCpu): add sceRazorCpuNamedSync export
Resolve the XCuZoBSVFG8 import required by Killzone Liberation by adding sceRazorCpuNamedSync as a no-op returning success when capture is inactive.

Extend the RazorCpu behavior test and document the NID source and unverified console signature and capture behavior.

Co-authored-by: Copilot <[email protected]>
2026-10-17 13:06:36 +13:00
Dean e751dd2057 Merge pull request #6236 from fogydes/fix/playgo-unlisted-chunks-setting
fix(libScePlayGo): let users answer unlisted chunks
2026-10-17 13:05:47 +13:00
Dean 9070237dfd Merge pull request #5676 from MarcZX100/codex/pad-n3ksx62fgno-status
fix(libScePad): return measured status for unknown Pad NID
2026-10-17 13:05:42 +13:00
Dean 72a848ca52 Merge pull request #4533 from Roojool/contrib/g07-pthread-getname
fix(libkernel): answer pthread_getname_np for a joined thread with ESRCH
2026-10-17 13:05:38 +13:00
Mehran acee01a4e6 perf(shader): compile resource plan walks instead of interpreting them 2026-10-17 03:04:48 +03:00
Adrià 85643f75e7 Merge pull request #5997 from Ondra97/codex/fix-storage-evicted-views
fix(agc): release sampled views after storage eviction
2026-10-17 01:56:35 +02:00
fdfawef324andClaude Opus 5.5 7e4b1b7c3d feat(libSceJson2): implement Value::setTypeMismatchHandler and store the element access failure and special float handlers
Value::setTypeMismatchHandler, setElementAccessFailureHandler and
setSpecialFloatHandler were stubs that threw NotImplemented. PPSA07411
calls all three while it sets up its documents.

The title calls them as members of Value: on its root Value before
parsing into it, with the handler and its context, and treats an int
result of 0 as success. They now store the handler and context on that
Value and on the values it holds, and return 0. A Value keeps its
handlers when its content changes (set, clear, operator=,
Parser::parse), and Parser::parse gives the values it creates the
handlers of the Value it parses into, since the title reads the errors
its handlers record after accessing parsed members. A copy does not
carry them.

A typed getter on a non-null value of another type calls the type
mismatch handler with the requested type, the value, null and the
context, and returns its result when it has the requested type, else
the getter's default.

The element access failure and special float handlers are stored but
not called: the error code the console passes to the first and the
FunctionType it passes to the second are unknown. A failed element
access on a value carrying the first throws instead of reaching the
null-access callback. Serializing a non-finite real already threw; with
the second set it throws naming the unknown FunctionType. The technical
debt entry records what is inferred.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 01:39:31 +02:00
Adrià db7176f8a8 Merge pull request #6116 from ArjenS-LA/fix/compile-database-arguments
fix(tools): accept compilation database argument arrays
2026-10-17 01:35:39 +02:00
Adrià f6a2091b65 Merge pull request #6113 from ArjenS-LA/fix/import-audit-export-suffix
fix(tools): normalize qualified ELF module exports
2026-10-17 01:30:12 +02:00
Adrià 3b54eba0de Merge pull request #6114 from ArjenS-LA/fix/release-directory-junctions
fix(release): reject dangling directory junction destinations
2026-10-17 01:24:00 +02:00
Nesyth e04111bb54 perf(agc): record a DMA copy of up to 64 KiB on the GPU when the GPU still stores into its source 2026-10-17 12:22:58 +13:00
Adrià 16a9191c60 Merge pull request #5986 from oneandonlydean/fix/mouse-reset-absolute-position
fix(libSceMouse): implement sceMouseResetAbsolutePosition with the arguments its callers pass
2026-10-17 01:22:56 +02:00
Mouad-Scriptz-0andClaude Fable 5.1 0a9ee3698a perf(recompiler): keep LDS loads branched and drop the LDS sentinel
NVIDIA's compiler predicates a branched LDS load at no cost, while the
selected form costs about 2.5 instructions per dword and splits a
ds_read_b128 into four loads (RTX 4060 measurements by @karanvora2599 in
loads therefore keep the branch of main, in workgroup, function and device
memory alike, and the sentinel dword that only they read goes away: the LDS
array is the program's dwords plus the lock again, and the device-memory
decision reserves the lock alone. The sentinel budget tests become lock
budget tests at that boundary, and the guarded-load test pins the branch.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-17 12:19:09 +13:00
jweidenh 21a3bd5606 fix(recompiler): reserve LDS sentinel and lock headroom 2026-10-17 12:18:50 +13:00
jweidenh ae56b9558c test(agc): exercise LDS sentinel boundaries on native devices 2026-10-17 12:18:50 +13:00
jweidenh d914130cc3 test(recompiler): cover LDS sentinel budget boundaries 2026-10-17 12:18:50 +13:00
Mouad-Scriptz-0andClaude Fable 5.1 ccaeeed416 fix(recompiler): point selected guest loads at locations nothing writes
A load selected instead of branched still accesses memory, so its fallback
element must be one no write can race with: scratch keeps element 0, LDS in
workgroup or function memory reads a sentinel dword appended after the
program's LDS and lock, and storage buffers read element 0xfffffffe, which
robustBufferAccess2 turns into a zero load without a memory access. The
device enables robustBufferAccess2 when it has it and the target carries the
flag; without it, and for LDS in device memory, buffer loads keep their
selections. The aligned high word of a buffer read re-reads the low word's
element instead of word 0. agc_guarded_memory_loads traces the emitted loads
in both device modes.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-17 12:18:50 +13:00
Mouad-Scriptz-0andClaude Fable 5.1 6dbbf4d7d9 perf(recompiler): select guest memory loads instead of branching around them
LDS, scratch and direct storage-buffer loads load element 0 when the lane is
inactive or the address is out of bounds and select 0 as the result, instead of
opening a selection per guard. Stores, atomics, formatted and physical-address
accesses keep their branches. A branch guard cost four blocks per lane half, and
the host compiler's time grows with the block count: PPSA11142's merged PSP
vertex program emitted 16,983 blocks and 1,710 conditional branches, 5,907 and
868 with the selects.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-17 12:18:28 +13:00