Commit Graph
20967 Commits
Author SHA1 Message Date
dotaku22 70e92a3537 perf(agc): reuse uncommitted depth plane layers 2026-10-24 06:31:58 +02:00
Kapy2003 a25aa36641 feat(libSceNgs2): support custom mastering rack 0x4003
Accept SCE_NGS2_RACK_ID_CUSTOM_MASTERING (0x4003) using the 0x508-byte
custom rack option layout without modules. Channels above NGS2_MAX_CHANNELS
(8) and non-zero module counts throw runtime_error as unsupported. Support
mastering voice control parameters 0x40030000 (setup), 0x40030004 (gain),
and 0x40030005 (output), write active mastering voices to render buffers,
and return voice state flags in sceNgs2VoiceGetState.

References #8039.
2026-10-24 09:58:09 +05:30
milescovielloandClaude Opus 5.5 7f74bc6e4a fix(agc): copy shader memory's widened block reads through CopyGuestBytes
ShaderMemory caches guest memory in lazy pages and fills them in whole
blocks. readWords fills every missing block the requested words touch,
and a write fills the open head and tail blocks around it. Both read
guest bytes outside the words asked for, by design: the page around
them is mapped. They used std::memcpy, though, so an
ANYPS5_ENABLE_ASAN build reports a global-buffer-overflow whenever a
block reaches past a small guest buffer that a test keeps in a global,
and agc_shader_memory (verifyPointerImageTable's narrowed key column)
and agc_shader_bindless fail at ShaderMemory.cpp:359.

The single-word block fill already copies through
GuestMemory::CopyGuestBytes, which is uninstrumented in ASan builds
and a plain memcpy otherwise. The three block copies now do the same.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 06:25:30 +02:00
milescovielloandClaude Opus 5.5 38ac888dbb fix(shader): share resource plans loaded from the same disk cache payload
A shader source loading its resource plan from the disk cache decoded
its own copy, also when another source had already loaded the same
plan: the same code registered under another plan key (another host
subgroup size or interface) stores byte-identical plan entries. In Ghost
of Tsushima's cache, 14,043 plan entries hold 8,170 distinct payloads.
Loaded plans now go through a table of weak references keyed by two
hashes of the payload, its size and the shader address the plan carries,
so equal payloads for one shader decode once and share the plan, its
compact form and its compiled SRT tape while any source uses it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 04:23:05 +00:00
Himansh Raj a0e5090aba Merge remote-tracking branch 'origin/main' into split/macos-build 2026-10-24 09:50:23 +05:30
Dean Galvin 2f5366ea80 Merge main into feat/libc-swscanf-wide-synonyms 2026-10-24 17:17:02 +13:00
orezraeyandClaude Opus 5.5 7902af7357 Merge main into fix/libkernel-socket-address-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 01:12:54 -03:00
Dean 6c52b649e7 Merge pull request #9261 from wail-arch/fix/linux-sdk-homebrew-imports
fix(relinker): bind SDK guest module imports on Linux
2026-10-24 17:11:50 +13:00
Dean 1bf232a64b Merge pull request #9253 from SandstromPL/test/agc-fixture-gpu-selection
test(agc): honor ANYPS5_GPU in the fixtures that open their own Vulkan device
2026-10-24 17:11:24 +13:00
orezraeyandClaude Opus 5.5 144319f82e Merge main into fix/libkernel-msync-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 01:10:30 -03:00
memob 776040e96d Merge remote-tracking branch 'origin/main' into fix/recompiler-cache-line-endings
# Conflicts:
#	core/shader/recompiler/ShaderCacheVersion.cmake
2026-10-24 00:02:21 -04:00
Himansh Raj fc93f11b4b Merge remote-tracking branch 'origin/main' into split/macos-build 2026-10-24 09:30:22 +05:30
xXPBSXxandClaude Sonnet 5.5 33b6388820 docs(debt): record what a Windows UDP socket keeps after connect(AF_UNSPEC)
The connect-to-AF_UNSPEC debt entry only described Linux. On Windows a socket bound to an explicit address keeps it in the same way, getsockname reports the host address, and a sendto to a non-loopback address then fails with ENETUNREACH, where FreeBSD's udp_disconnect() resets the local address and the send succeeds.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-24 05:59:34 +02:00
JJenkxandClaude Opus 5.5 223f8cbdbf test(agc): expect no poison for a read skipped under an EXEC decided empty
With the unsigned bound compare decided at capture, v_cmpx_gt_u32
exec, s8, v0 with s8 = 0 leaves no lane, so s_cbranch_execz skips the
read through the null pointer and the plan no longer poisons it. The
guarded null pointer test now expects that case as it does the skipped
branch case: no fault, no poison, cacheable.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 23:59:32 -04:00
JJenkxandClaude Opus 5.5 9ed24c8b41 fix(shader): decide an unsigned bound compare from its extreme operand
A resource block behind v_cmpx_gt_u32 exec, s, v0 and s_cbranch_execz keeps
its condition only if the compare can decide it, but UGreaterThan32 and
ULessThan32 needed both operands and v0 is a lane value. When the uniform
operand is 0 (or 0xffffffff on the other side) no lane can pass the compare,
so the walk can skip the block without the lane value.

UGreaterThan32 now yields false when its first operand is 0 or its second is
0xffffffff, and ULessThan32 when its first is 0xffffffff or its second is 0,
in the SRT interpreter and in the SRT tape alike; MayDecide keeps such a
condition when either operand is evaluable. Fully evaluable compares are
unchanged.

Destruction AllStars (PPSA02630) dispatches compute shader 0x200a220000 with
a thread count of 0 and leaves the V# in the skipped block stale (one
dispatch holds 00000000 00000000 00000000 ffffffff), which stopped it at
about 40 s with "buffer descriptor uses an unsupported type".

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 23:59:32 -04:00
Dean 924b18f59c Merge pull request #10166 from Felipebmaitan/feat/jobmanager-engine
fix(libSceJobManager): honor worker spin and persistence policies
2026-10-24 16:58:18 +13:00
Dean 8422cc2014 Merge pull request #10023 from slopggobblercobbler81/fix/recompiler-cache-path-separators
fix(recompiler): normalize shader cache paths across platform separators
2026-10-24 16:54:51 +13:00
Dean 83a25ceb71 Merge pull request #9105 from Retr0G28/fix/connect-port0-connected-dgram
fix(libkernel): disconnect a connected datagram socket on connect to port 0
2026-10-24 16:54:25 +13:00
Dean 559e4dc883 Merge pull request #9140 from xXPBSXx/fix/shader-cache-sources-test-timeouts
test(recompiler): give the shader cache source fixture room under load
2026-10-24 16:53:16 +13:00
Dean 3e9216663c Merge pull request #10286 from al3w0f205/test/npcommon-lwmutex-lock-coverage
test(libSceNpCommon): cover recursive lock in sceNpLwMutexLock
2026-10-24 16:52:49 +13:00
Dean a1b7093ae8 Merge pull request #10079 from edubox/feat/libc-nothrow-delete
feat(libc): export operator delete(void*, const std::nothrow_t&)
2026-10-24 16:52:22 +13:00
Himansh Raj 08b20bab74 Merge remote-tracking branch 'origin/main' into split/macos-build 2026-10-24 09:10:22 +05:30
Dean 68871895d4 Merge pull request #9256 from Dom3005/fix/windows-fcntl-append
fix(libkernel): change O_APPEND on a Windows file through fcntl
2026-10-24 16:37:06 +13:00
Dean dd04e33b38 Merge pull request #10363 from cadenasynyster/fix/windows-mkdirat-loop
fix(libkernel_sys): report ELOOP from mkdirat through a Windows symli…
2026-10-24 16:36:38 +13:00
Himansh Raj a01bcfaa66 Merge remote-tracking branch 'origin/main' into split/macos-build 2026-10-24 09:00:23 +05:30
frankea fabe448517 fix(libkernel): report the host zone's standard offset and daylight saving amount from sceKernelGettimezone
sceKernelGettimezone wrote {0, 0} for every zone. A PS5 on firmware
13.40 set to US Eastern returned tz_minuteswest -300 and tz_dsttime 60:
the standard offset in minutes east of UTC, without the summer time in
effect on the run date, and the zone's daylight saving amount in
minutes. Both now come from the host zone, through the same HostZoneAt
and HostDaylightAmount the calendar conversions use.

guest_freebsd_clocks checks five TZ settings (UTC0, IST-5:30, BRT+3,
EST5EDT, CET-1CEST) and the null pointer.
2026-10-23 23:27:29 -04:00
xXPBSXxandClaude Sonnet 5.5 e2dda5eba0 fix(libc): prefer a same-directory relinked module over nested prx folders
RelinkedModulePath looked in prx, sce_module and sce_modules before the
case-insensitive match in the module's own directory, so a stray nested file
could shadow a module next to the title. Check the directory of the module
first, then the nested folders, and match the nested names case-insensitively.

Tests: a same-directory module with a differently cased name wins over an
exact-case nested file, and a nested module is found case-insensitively.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-24 05:26:50 +02:00
notaxeltvandCursor c917d982b1 fix(libc): prefer nested prx/*.guest.prx for RelinkedModulePath
Unbound copies next to eboot concurrently LoadLibrary the same PE and leave Job0 with a null vtable; reuse the already-loaded nested guest module instead.

Co-authored-by: Cursor <[email protected]>
2026-10-24 05:26:50 +02:00
Dean e59364ea98 Merge pull request #9254 from milescoviello/test/interpolation-zero-ilogb
test(agc): return a zero cancelling coordinate before taking its exponent
2026-10-24 16:25:36 +13:00
Yunus Shaikh 847d3a1e19 test(agc): unwatch the heap copy ranges before checking their reasons
Earlier tests in the same process can leave 0x10000+0x20000 or 0x40000+0x10000 in the Windows tracker's coverage, and AddressCopyOverflow names a heap's reason from GuestMemory::Watched over its range, so the precondition and the reasons depended on test order. Both ranges are unwatched first; the reasons checked after them are unchanged.
2026-10-23 20:22:18 -07:00
Himansh Raj 388eeda7f8 Merge remote-tracking branch 'origin/main' into split/macos-build 2026-10-24 08:50:30 +05:30
frankea 5c19aa5e42 Merge remote-tracking branch 'origin/main' into fix/one-sample-ancillary-unsampled
# Conflicts:
#	docs/dev/debt/libSceAgcDriver.md
2026-10-23 23:17:55 -04:00
Dean 9c85790c9a Merge pull request #7465 from Dripl1x/codex/defer-small-host-imports
perf(agc): defer small host imports until first GPU use
2026-10-24 16:11:47 +13:00
Himansh Raj 6d3bd640c8 Merge remote-tracking branch 'origin/main' into split/macos-build 2026-10-24 08:40:24 +05:30
Dean cf46f9803a Merge pull request #8121 from milescoviello/fix/one-sample-color-iter
fix(agc): draw a PS_ITER_SAMPLE program once per pixel into a one-sample color target
2026-10-24 16:10:19 +13:00
Dean 7338a6a8f6 Merge pull request #9250 from milescoviello/fix/journal-loaded-entry-init
fix(agc): value-initialize a pipeline journal entry before decoding it
2026-10-24 16:09:51 +13:00
Dean 3f017b7370 Merge pull request #10296 from MarcZX10/fix/env-reference-utf8-output
fix(tools): make environment reports Unicode-safe
2026-10-24 16:09:25 +13:00
Dean 194859bf6c Merge pull request #9238 from milescoviello/fix/asan-unused-import-dependencies
fix(build): run guest_unused_import_dependencies without the ASan link order check
2026-10-24 16:08:59 +13:00
thuanquangandClaude 5b5dcaeaff fix(agc): keep a drawn linear target's results over a direct write's completion stamp
A dispatch that writes a resident linear target's memory directly through
a host import, and has completion work, stamps that memory a second time
when its batch completes. With the target's draws stored at completion
points, the completion can run inside the target's own store:
FlushPending moves the target to the flushing list and then waits for the
dispatch. StampKeepingNewerResults only kept block-tracked images still in
the pending list, so the second stamp made every draw recorded after the
dispatch look older than the dispatch, and the store dropped them all.
The keep rule now also covers targets with drawn results and images that
are already being flushed.

Co-Authored-By: Claude <[email protected]>
2026-10-24 10:04:45 +07:00
thuanquang bb58e7ddbd Merge fix/linear-target-completion-stores into fix/linear-target-import-creation 2026-10-24 10:04:45 +07:00
jacob6769andClaude Opus 5.5 0fed30252a fix(libSceLibreSsl): follow LibreSSL 2.5.4 and 4.0.0 for null digest buffers and SHA-512/t lengths
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 12:01:56 +09:00
frankea 36b5996910 test(agc): drop the checks that unimplemented one-sample depth states throw 2026-10-23 22:58:22 -04:00
frankea fc29c5a338 Merge remote-tracking branch 'origin/main' into fix/one-sample-ancillary-unsampled
# Conflicts:
#	core/libs/prx/libSceAgcDriver/Graphics/src/State.cpp
#	core/libs/prx/libSceAgcDriver/tests/Graphics.cpp
#	docs/dev/debt/libSceAgcDriver.md
2026-10-23 22:58:22 -04:00
thuanquang eefe6d1380 Merge main into fix/linear-target-completion-stores 2026-10-24 09:58:06 +07:00
Dean Galvin 18b13fbe64 Merge main into 9945 2026-10-24 15:49:35 +13:00
Dean Galvin 5ec0cdec84 Merge main into 9342 2026-10-24 15:49:35 +13:00
orezraeyandClaude Opus 5.5 c216a3b82d Merge main into fix/libc-strftime-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 23:46:23 -03:00
valenciana-nc a155c9e2ae test(agc): decouple descriptor diagnostics from unsupported paths 2026-10-23 20:46:16 -06:00
orezraeyandClaude Opus 5.5 3633e09abb Merge main into fix/libkernel-posix-thread-attr-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 23:44:53 -03:00
valenciana-nc 42424dd55e fix(agc): include descriptor words in vertex validation errors 2026-10-23 20:44:39 -06:00