Commit Graph
20967 Commits
Author SHA1 Message Date
hypermist 2bd2a875b2 Merge remote-tracking branch 'upstream/main' into feat/audioin-pad-embedded-mic
# Conflicts:
#	docs/dev/debt/libSceAudioIn.md
2026-10-22 15:14:15 +13:00
Izamaru 8203019289 fix(agc): release pipeline cache save temporaries after use 2026-10-21 23:12:54 -03:00
blu 9897260c6e Merge branch 'boykopovar:main' into pr/windows-reparse-non-link 2026-10-21 19:08:16 -07:00
Queuze 09efadc0fe fix(net): truncate TCP_NODELAY readback 2026-10-21 23:07:48 -03:00
hypermist 55de3d4572 Merge remote-tracking branch 'upstream/main' into feat/gamelivestreaming-program-info
# Conflicts:
#	core/libs/prx/libSceGameLiveStreaming/Export.cpp
#	core/libs/tests/GuestGameLiveStreaming.cpp
#	docs/dev/debt/libSceGameLiveStreaming.md
2026-10-22 15:04:34 +13:00
blu b9fcc11dd4 Merge branch 'boykopovar:main' into fix/libkernel-sys-link-follow-windows 2026-10-21 19:04:34 -07:00
blu be9d27e0d9 Merge branch 'boykopovar:main' into fix/agc-vertex-format-widen 2026-10-21 19:04:19 -07:00
blu 445a549d88 Merge branch 'boykopovar:main' into fix/agc-driver-frame-dump-wait 2026-10-21 19:04:09 -07:00
blu c08e752fef Merge branch 'boykopovar:main' into feat/libkernel-sigintr 2026-10-21 19:03:58 -07:00
blu b440d11cbb Merge branch 'boykopovar:main' into feat/libc-siginterrupt 2026-10-21 19:03:47 -07:00
blu 2a796cb447 Merge branch 'boykopovar:main' into feat/libc-num-get-objects 2026-10-21 19:03:38 -07:00
hypermist 9f6a71b6a5 Merge remote-tracking branch 'upstream/main' into feat/ajm-wvorbis-header-packet
# Conflicts:
#	core/libs/prx/libSceAjm.native/Export.cpp
#	docs/dev/debt/libSceAjm.native.md
2026-10-22 15:02:48 +13:00
Queuze a84d3c46c8 feat(net): expose stream and datagram protocol 2026-10-21 23:02:48 -03:00
Dean 8c26eac3cd Merge pull request #9459 from hugodearaujo/fix/netctl-starts-initialized
fix(netctl): start the library initialized, as titles find it
2026-10-22 14:52:02 +13:00
hypermist 1898466430 Merge remote-tracking branch 'upstream/main' into fix/libs-firmware-constants-4
# Conflicts:
#	docs/dev/debt/libSceHttpCache.md
2026-10-22 14:51:35 +13:00
Yunus Shaikh 99aeb0ac56 Merge main into fix/agc-rewatched-imports-compared-when-shared 2026-10-21 18:50:45 -07:00
hypermistandClaude Opus 5.5 e8abcba78f docs(agc): add the console's measured workload packet details
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-22 14:43:14 +13:00
hypermist bea151e189 Merge remote-tracking branch 'upstream/main' into feat/agc-acb-workload-packets
# Conflicts:
#	docs/dev/debt/libSceAgc.md
2026-10-22 14:43:07 +13:00
Dean df2569d2c5 Merge pull request #8008 from emirplus/fix-test-shader-cache-discovery
fix(tests): guard main and provide defaults in shader cache sources test
2026-10-22 14:42:48 +13:00
hypermistandClaude Opus 5.5 d1e66e95ca docs(libc): shorten the char16/char32 conversion entry
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-22 14:42:24 +13:00
hypermistandClaude Opus 5.5 d06dfb1caf fix(libc): stage wctomb_s and wcrtomb_s through _Getmbcurmax and pin their UTF-8 results
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-22 14:41:50 +13:00
Yunus Shaikh 55e93456b2 perf(agc): count template hits whose data bindings pair by number
With APS5_PROFILE_DRAW set, the [rescache] line now counts the template
hits that took a data refresh while the template held fewer bindings
than the shader (no image table binding of its own): the refreshes that
threw "template bindings disagree with the shader" before the bindings
were paired by binding number.
2026-10-21 18:39:33 -07:00
fablevoid a00adaa8c2 fix(agc): find a template's data bindings by binding number
A resource template keeps no binding of its own for an image table: the
build hands the shader's image table binding to the table stage. Its
binding list is therefore one shorter than the shader's, yet
DataWordsDiffer and refreshData paired the two lists by index and
required equal lengths. Every data refresh of a compute template whose
shader reads an image table threw "template bindings disagree with the
shader", and DataWordsDiffer reported different words for the shader the
template was built from.

Evidence: a title stopped once its pipelines came from the cache with
"compute shader 0x80003c7100: AGC graphics: template bindings disagree
with the shader". The shader listed 9 bindings (guest buffers, three
guest image arrays, the fault buffer, the flattened SRT, the sampler
table, the image table map and the image table at 260); the reused
template held 8, without binding 260.

Both functions now look up the template binding of each data binding by
its binding number.

Tested: agc_driver_graphics builds a compute template from an image
table map, an empty image table and shader data, checks that its own
words compare equal, refreshes it with other words, and checks the data
buffer and the compare afterwards. Without the change it fails with "a
template's own words differ from the shader that built it".

Cherry-picked from fable-void's 7bb699b85c; conflict in tests/Graphics.cpp resolved to main's image table ABI: the test's header no longer sets HeaderImageSlots, a word main's ABI does not have (main keeps HeaderElementBase at that index), and its mock context gets the image table limits main's imageTableAllocationTests sets (image table capacity and sampled images per set and per stage, 2 each), since main refuses image tables on a context without them.
2026-10-21 18:39:32 -07:00
Evgeniy KazarinandClaude Opus 5.5 a1cee90f52 test(agc): keep the map-failure memo test on a range imported at map time
importMappedFailureGenerationTests (#8802) maps a single 64 KiB range and
expects ImportMappedRanges to try its import. Ranges of 64 KiB are now left
to their first GPU use, so the probe saw no allocation. The fixture maps
128 KiB as one window, which is still imported at map time.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 09:35:19 +08:00
Evgeniy KazarinandClaude Opus 5.5 e0764b9e14 test(agc): map-time import tests for ranges of 64 KiB left to first GPU use
The import-requester test now counts the map requester on a 128 KiB range
and asserts that a 64 KiB range is not imported at map time and is imported,
for the access requester, at its first use. The over-budget map test maps
128 KiB so it still reaches the budget check.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-22 09:35:19 +08:00
Evgeniy Kazarin 789a5f686f perf(agc): defer small host imports until first GPU use 2026-10-22 09:35:19 +08:00
Yunus Shaikh a644459114 feat(hmd): report no VR2D session without a headset
Nothing runs in VR2D without a headset, so sceHmdInternalIsGameVr2d,
IsMiniAppVr2d, IsCommonDlgVr2d and IsCommonDlgMiniAppVr2d return false,
the answer the console gives to the same four queries in libSceHmd2.
2026-10-22 01:34:36 +00:00
Yunus Shaikh 8e462a6bcc feat(hmd): refuse distortion and 2D VR command queries without a headset
sceHmdOpen never issues a handle without a headset, so the distortion
correction, wide-near correction and 2D VR command queries, and their
sceHmdDistortion* export aliases, answer as the other handle queries:
NOT_INITIALIZED before sceHmdInitialize and HANDLE_INVALID after it,
leaving the command buffer unwritten.
2026-10-22 01:33:53 +00:00
hypermist 193d3c000d Merge remote-tracking branch 'upstream/main' into fix/libc-utf8-multibyte 2026-10-22 14:30:27 +13:00
Dean 94fbb8cea8 Merge pull request #8025 from emirplus/fix-pr-overlap-markdown-links
fix(tools): recognize markdown links and pull request URLs in pr_overlap dependencies
2026-10-22 14:24:04 +13:00
hypermist 7ef7653590 Merge remote-tracking branch 'upstream/main' into fix/audioout2-mastering-state
# Conflicts:
#	docs/dev/debt/libSceAudioOut.md
2026-10-22 14:20:02 +13:00
hypermistandClaude Opus 5.5 962b88a9e1 fix(libSceNpCommon): parse sceNpStrToInt32 through a 64-bit integer on every host
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-22 14:18:58 +13:00
Queuze 4e7559ae9a fix(libSceNet): reject nonpositive socket buffers 2026-10-21 22:06:30 -03:00
xXPBSXxandClaude Sonnet 5.5 6b2be773aa docs(debt): say "several titles" in the storage image refusal entry
A fourth title reached the refusal on another GPU and OS (reported on the
PR), so the entry no longer names a count.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-22 03:01:05 +02:00
Yunus Shaikh d2c46d96bb perf(libc): count private collect calls only in the collect test
The private collect counted its GetWriteWatch calls and pieces on every
call, under the mappings mutex, for agc_private_collect to read. They
are now compiled only where APS5_COUNT_MAPPING_QUERIES is set, as the
address-space query counter is: agc_private_collect_tests sets it, and
the runtime's Collect updates no counter. libc's GuestArenaCollectWork
export, which nothing calls (the test reads its own WindowsMappings),
is removed.

Adapts fable-void's 2760ad808.
2026-10-21 17:59:56 -07:00
Yunus Shaikh 4d57a206c7 test(libc): check private collects against a region query under APS5_VERIFY_DIRECT_COLLECT
A private collect read from the allocation map makes no query, so it
can't see memory that code bypassing WindowsMappings changed inside a
recorded allocation. A page decommitted in place there is the case it
can't catch: GetWriteWatch still succeeds over it, so the collect
reports no writes where a query would have refused the range.

With APS5_VERIFY_DIRECT_COLLECT set, each such collect also queries its
span's regions, and Collect throws, naming the span and the switch, when
GetWriteWatch succeeded over memory that is no longer committed
private. ENVIRONMENT.md lists the switch.

windows_write_watch_verify_direct (the same test binary with
--verify-direct, the switch set) collects a recorded private allocation,
checks its write is still reported, decommits one page in place and
requires the next collect not to succeed. Without the check the collect
succeeds.

Adapts fable-void's 2760ad808.
2026-10-21 17:59:12 -07:00
Yunus Shaikh f06ae46d67 fix(libc): return false from a private collect over memory released behind the mappings
Collecting private guest writes from the allocation map trusts the
extent the mappings recorded and calls GetWriteWatch without a query.
When memory in that extent was released by code that bypasses
WindowsMappings, the call fails and Collect threw "collect
private guest writes". Before the map, the query found the memory no
longer committed private and Collect returned false, which its callers
already handle.

A failed GetWriteWatch now queries the region at the cursor. If it is
no longer committed private memory, Collect returns false as before;
otherwise the failure is still fatal.

windows_write_watch releases a collected private allocation with
VirtualFree behind the mappings, then collects it again: it must return
false without throwing. Without the query it throws.

Adapts fable-void's 2760ad808.
2026-10-21 17:58:42 -07:00
fablevoid 13a4e881cf perf(libc): read private write watches per allocation without a query
Collecting guest writes over private memory asked VirtualQuery for every
region before reading its write watch, and a region ends at every
protection change, so each 16 KiB piece cost two system calls and an
allocation with several protections was read in several parts. The hot
sweep reads every unguarded private page at every ordering point, so
this cost was paid per hot page per dispatch.

The mappings now keep the extent of every private allocation they make
(added when a placeholder is replaced, erased on release) and collect
one GetWriteWatch per allocation from that map. A write watch read
cannot span two allocations, so pieces committed one by one still take
one read each; the query per piece is gone and the reported pages are
unchanged.

Tested: built; the new agc_private_collect test (256 MiB of 16 KiB
pieces with scattered writes returns the same pages as a reference
read, at most one system call per piece; one allocation in five
protection regions takes one call) fails before (32768 calls for 16384
pieces) and passes after (16384). The new hot-sweep case of
agc_driver_residency_dispatch_work fails before (51324 calls over 25660
pieces with 256 hot runs, about 1500 us per dispatch) and passes after
(25660 calls, about 1160 us). 47 residency, write-watch, guest-memory,
address-space and shared-write tests pass.
2026-10-21 17:58:26 -07:00
Queuze 63be1c0cf5 feat(libSceNet): read reuse and broadcast flags 2026-10-21 21:56:25 -03:00
Yunus Shaikh a2e0bf19e6 perf(libc): count address-space queries only in the write-watch test
The VirtualQuery counter that windows_write_watch_tests reads is now
compiled only into that test, through APS5_COUNT_MAPPING_QUERIES, so
the runtime's WindowsMappings::query does no atomic update per query.
2026-10-21 17:53:39 -07:00
Ondra97 29eab421d9 chore(libSceFreeType): isolate orientation integration points 2026-10-22 02:45:51 +02:00
Ondra97 6f9b6bad1f feat(libSceFreeType): implement outline orientation 2026-10-22 02:41:48 +02:00
Yuri Olive 232cf9373b Merge remote-tracking branch 'origin/main' into feat/appinstutil-missing-exports
# Conflicts:
#	docs/dev/debt/libSceAppInstUtil.md
2026-10-21 21:38:15 -03:00
Joacoorandom 23e59095e8 test(tools): cover repeated pad timeline capacity boundaries 2026-10-21 21:30:41 -03:00
orezraeyandClaude Opus 5.5 da0ed3b5c3 Merge main into fix/net-utilities-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 21:25:51 -03:00
zaryabzip c13218735e feat(libSceNpTus): create TSS title contexts in the TUS context table
sceNpTssCreateNpTitleCtxA creates a context like sceNpTusCreateNpTitleCtxA,
and sceNpTssCreateNpTitleCtx checks its NpId and service label first, as
shadPS4 does; both share the TUS table, its 32-context limit and its
requests.
2026-10-22 05:25:26 +05:00
Queuze f70cbc62b5 test(libSceNet): check keepalive inheritance 2026-10-21 21:18:53 -03:00
SwagandClaude Opus 5.5 ca32e706e8 feat(libSceLibreSsl): implement the per-thread error queue
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 20:15:46 -04:00
Queuze e8d989b6c0 feat(libSceNet): expose socket type and listen state 2026-10-21 21:11:41 -03:00
Queuze d805762120 feat(libSceNet): support SO_KEEPALIVE 2026-10-21 21:09:42 -03:00