Commit Graph
10630 Commits
Author SHA1 Message Date
frankea 53e4e8e796 fix(shader): run tessellation evaluation stages one lane per invocation on devices without subgroups there
MoltenVK and lavapipe leave the tessellation evaluation stage out of
subgroupSupportedStages, so the driver's shader validation refuses every
domain program that declares GroupNonUniform ("subgroup capability 61 is
unsupported for shader stage 4"). Gran Turismo 7 stops there on macOS at
the Used Car dealership.

The device target now records whether the tessellation evaluation stage
has subgroups. When it does not, tessellation evaluation programs outside
the mesh path get a host subgroup width of 1 and the one-lane rules that
vertex programs already use without vertex subgroups: the lane id is 0,
a ballot is the invocation's own bit, a shuffle returns the invocation's
value and an elect is true. Reads of other lanes still throw. Devices
with tessellation evaluation subgroups emit the same SPIR-V as before.
The request serialization moves to version 51.
2026-10-31 03:01:43 -04:00
MarcZX10 441a3eaef9 Merge remote-tracking branch 'upstream/main' into fix/pad-port0-connected-state 2026-10-31 06:53:56 +00:00
MarcZX10 3a03e58b31 Merge remote-tracking branch 'upstream/main' into fix/pad-port0-connected-state
# Conflicts:
#	core/libs/prx/libScePad/src/PadState.cpp
2026-10-31 06:53:37 +00:00
Adrià ddd99fdadb Merge pull request #13595 from kyon-eth/feat/jxr-parser-320-exports
feat(libSceJxrParser): declare callable exports
2026-10-31 07:48:33 +01:00
DeveshB-1 0043a78765 fix(libkernel_sys): return EFAULT from title workaround queries for invalid memory 2026-10-31 12:18:10 +05:30
Adrià 0f6143fecf Merge pull request #13594 from kyon-eth/feat/png-parser-320-exports
feat(libScePngParser): declare callable exports
2026-10-31 07:42:29 +01:00
Adrià 686299faa7 Merge pull request #13598 from MarcZX10/docs/debt-D14-1
docs(libkernel): sysctlnametomib returns ENOENT for four unanswered sysctl names
2026-10-31 07:42:21 +01:00
Adrià 6508cbf7b8 Merge pull request #13592 from kyon-eth/feat/gif-parser-320-exports
feat(libSceGifParser): declare callable exports
2026-10-31 07:41:24 +01:00
Adrià 833be4af8d Merge pull request #13579 from akkadbakkad89/np-cpp-web-api-title-imports
feat(libSceNpCppWebApi): declare title-imported exports and implement the Common machinery
2026-10-31 07:31:42 +01:00
Adrià 5a14a6c5d7 Merge pull request #13590 from MarcZX10/docs/debt-D1-3
docs(libSceAudio3d): PortAdvance on a full queue returns NOT_READY, it does not throw
2026-10-31 07:25:22 +01:00
JAB-devandClaude Sonnet 5.5 52be0d5b23 fix(libSceNgs2): read the PS5 sampler and custom filter params and run filter types 1 to 11
The sampler filter param (0x1000000a) and the custom filter param
(0x40001300) read their fields in a layout PS5 titles do not use, so a
low-pass was read as off. Both now use the SDK layout and filter types 1 to
11 as the PS5 module does: float coefficients, outputs in blocks of four
frames from the first frame of each render, clamps, level, masks, locations,
the error order, a zero history when the voice starts again, a history that
decays over zero input while a voice is paused, a restart from the first
block when a filtered voice is played again, and no tail past the render in
which a block voice ends. The PS4 library keeps main's 40-byte custom param.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-31 08:23:38 +02:00
hypermoist 4f6b5d1b5f Merge remote-tracking branch 'upstream/main' into feat/np-time
# Conflicts:
#	core/libs/prx/libSceNpCommon/PendingExportsRound7.cpp
#	core/libs/prx/libSceNpCommon/include/Api.hpp
#	docs/dev/debt/libSceNpCommon.md
2026-10-31 19:16:41 +13:00
hypermoist c5094d4235 Merge remote-tracking branch 'upstream/main' into feat/np-util-jid
# Conflicts:
#	core/libs/prx/libSceNpCommon/include/Api.hpp
#	docs/dev/debt/libSceNpCommon.md
2026-10-31 19:15:45 +13:00
akkadbakkad89andDevin 38004dd687 feat(libSceNpCppWebApi): declare title-imported exports and implement the Common machinery
Adds the exports imported by PPSA20397 and PPSA03530 that had no
provider: Matchmaking::V1, Matches::V1, SessionManager::V1,
UserProfile::V1, TitleCloudStorage::V1, InGameCatalog::V5 domain
surfaces and the Common template instantiations over their types.

IntrusivePtr, Vector, Iterator and Transaction members follow the
layouts already implemented for the earlier titles; API verbs,
factories and transaction entry points fail
SCE_NP_WEBAPI_ERROR_NOT_SIGNED_IN as a signed-out console does;
parameter bookkeeping succeeds without state; response accessors and
vector iteration throw since a failed request produces no response.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-31 11:39:09 +05:30
Flamefusion 2c540ba9d8 docs(libkernel): credit only OpenAGC with the sceKernelHasTrinityMode test
Backport's FINDINGS.md says sceKernelHasTrinityMode reads
hw.sce_main_socid; the masked comparison with 0x840fc0 it states is for
sceKernelIsTrinityMode. Only OpenAGC gives that comparison for
sceKernelHasTrinityMode, so the debt entry now credits Backport with the
sysctl read alone.
2026-10-31 11:16:52 +05:30
Nicolas GonzalezandClaude Opus 5.5 2c15fa59b4 fix(libc): keep write-watch fault-ahead inside the faulting page's 64 KiB block
libSceAgcDriver decides per 64 KiB block whether a pending storage image
keeps the CPU's bytes. A window that ran into the next block marked it
CPU-written and dropped the GPU results there (agc_storage_write_back,
agc_idle_publish_wait, array layer and depth plane tests).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 02:32:46 -03:00
Flamefusion 7b477b6d66 feat(libkernel): implement sceKernelHasTrinityMode for a base PS5
sceKernelHasTrinityMode returns 0, the answer of a base PS5, as
sceKernelIsTrinityMode already does. Two public readings of firmware
libkernel (OpenAGC for 11.60, Backport for 11.00 to 12.70) say it
compares hw.sce_main_socid with its low five bits cleared against
0x840fc0; the base PS5 SoC id recorded for sceKernelGetMainSocId,
0x840f80, fails that test. The prototype int (void) comes from the 23
calls in a UE5 title, each storing setne of the result in a guarded
static with no argument set up.

Titles import it from libkernel, but only the libkernel_sys placeholder
inventory exported it, as a throwing stub. The export moves to libkernel
next to sceKernelIsTrinityMode, and the inventory and its counts drop
the entry. guest_operation_mode checks the result.
2026-10-31 10:42:24 +05:30
Nicolas Gonzalez 7f90633bc9 Merge remote-tracking branch 'upstream/main' into perf/libc-write-watch-fault-ahead 2026-10-31 02:09:08 -03:00
Adrià 18f5949788 Merge pull request #13588 from MarcZX10/docs/debt-D1-1
docs(libSceAmpr, libSceAudioOut): correct two debt statements
2026-10-31 06:02:12 +01:00
Jack NielandandClaude Opus 5.5 8901150f8a feat(libwebrtc): implement rtc::TimeMillis and rtc::TimeMicros
Read the guest CLOCK_MONOTONIC in nanoseconds and divide down, as
WebRTC's TimeNanos and POSIX SystemTimeNanos do at both M127 and M134.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 21:32:19 -07:00
DariusandClaude Opus 5.5 11a85618e1 feat(libSceNKWebCdlgInjectedBundle): name WKBundleInitialize from its NID
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 06:21:16 +02:00
Adrià 0835ec8bdc Merge pull request #13576 from pushkarreddyy/fix/direct-memory-queries-efault
fix(libkernel): return EFAULT from direct memory queries for invalid memory pointers
2026-10-31 05:15:50 +01:00
Adrià 696215b704 Merge pull request #13556 from pushkarreddyy/fix/flexible-memory-queries-efault
fix(libkernel): return EFAULT from flexible memory queries and PRT aperture for invalid memory
2026-10-31 05:14:45 +01:00
Adrià d4627bad7b Merge pull request #13552 from pushkarreddyy/fix/system-version-efault
fix(libkernel): return EFAULT from system version queries for invalid memory
2026-10-31 05:10:40 +01:00
jbooba 2d84e169b7 docs: clarify cache and trace wall-time summaries 2026-10-31 00:10:39 -04:00
Adrià 69c43dd403 Merge pull request #13577 from pushkarreddyy/fix/login-efault
fix(libkernel): return EFAULT from getlogin_r and SetLogin for invalid memory pointers
2026-10-31 05:08:35 +01:00
Adrià bad19a5bd9 Merge pull request #13507 from pushkarreddyy/fix/sigwait-efault
fix(libkernel): return EFAULT from sigtimedwait, sigwaitinfo and sigwait for invalid memory
2026-10-31 05:07:32 +01:00
Adrià 2364892547 Merge pull request #13584 from MarcZX10/docs/debt-D8-1
docs(libSceSsl): pool exhaustion throws bad_alloc on AnyPS5, not SSL_ERROR_OUT_OF_MEMORY
2026-10-31 04:58:08 +01:00
DariusandClaude Opus 5.5 e78619f871 feat(libkernel_web): name 42 exports from their NIDs
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 05:55:54 +02:00
DariusandClaude Opus 5.5 e94685a30b feat(libSceNKWebKitRequirements): name 122 unknown exports from their NIDs
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 05:55:36 +02:00
MaxandClaude Opus 5.5 a3b689bfdf docs(libSceLibcInternal): record that the _Mtx helpers follow PS4 code
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 04:48:57 +01:00
Nicolas Gonzalez ba1bdc3bec Merge remote-tracking branch 'upstream/main' into perf/libc-write-watch-fault-ahead 2026-10-31 00:37:58 -03:00
zaryabzip 86652a4229 fix(libSceNpParty): check initialization first in the state, member and send calls
sceNpPartyGetState, GetStateAsUserA, GetId, GetMembers/A,
GetMemberInfo/A, GetMemberSessionInfo, GetMemberVoiceInfo and
SendBinaryMessage return NOT_INITIALIZED before sceNpPartyInitialize and
after sceNpPartyTerminate, and GetStateAsUserA refuses user -1, as a
firmware 13.42 run of the module shows.
2026-10-31 08:20:14 +05:00
KernelPanicNT 78c9c9127a feat(libSceNKWebKit): parse decimal numbers as WTF double-conversion
Implement the six WTF::charactersToDouble and WTF::charactersToFloat
overloads for Latin-1 and UTF-16 input and the four static
WTF::double_conversion::StringToDoubleConverter StringToDouble and
StringToFloat overloads for char and uint16_t input, following pinned
public WebKit. One parser follows StringToIeee: the number grammar, the
772-digit cut with a sticky digit, the exponent saturation and the
processed length. charactersToDouble and charactersToFloat add
toDoubleType's leading ASCII spaces and ok/parsedLength results, map
UTF-16 code units above 0x7F to 0 and round the float overloads through
double. StringToDoubleConverter reads the code units as they are, skips
no spaces and rounds StringToFloat directly to float as Strtof does.
Null characters with a nonzero length and a null processed length throw
where WebKit faults, a decimal exponent that leaves the range of
WebKit's int throws where WebKit overflows, and a UTF-16 charactersTo*
length above UINT32_MAX throws where WebKit's conversion Vector crashes.
2026-10-31 03:59:10 +01:00
Zain 02bcf26141 feat(libc): implement a64l, l64a, and l64a_r radix-64 integer conversions 2026-10-30 21:54:02 -05:00
Adrià e2df06e661 Merge pull request #13565 from KernelPanicNT/feat/nkwebkit-wtf-date-parsing
feat(libSceNKWebKit): parse legacy dates as WTF DateMath does
2026-10-31 03:47:56 +01:00
cocoa55andClaude Opus 5.5 16375634e3 fix(libkernel): spin and yield when a condition variable wait relocks its mutex
FreeBSD 11.4's _mutex_cv_lock takes the mutex back through
mutex_lock_common, so a woken waiter tries once, spins and yields by
the mutex's counts before it blocks. The wait here called the native
lock directly; it now goes through the same spin and yield path as
scePthreadMutexLock.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 22:47:35 -04:00
zaryabzip 91999d11d5 fix(libSceAudiodec.native): export GetAjmContext and UnregisterCodec from the native module only
On the console only libSceAudiodec.native exports sceAudiodecGetAjmContext
and sceAudiodecUnregisterCodec; libSceAudiodec does not. They move out of
the source shared by both libraries into the native module, and a new
test checks that libSceAudiodec no longer exports them.
2026-10-31 07:47:12 +05:00
pushkarreddyy 7923458a2b docs(libkernel): clarify signal wait debt contract per libthr and kernel 2026-10-31 08:16:23 +05:30
pushkarreddyy 76c0194553 docs(libkernel): record signal wait memory validation contract 2026-10-31 08:16:23 +05:30
pushkarreddyy 9c2a80ad0e docs(libkernel): record sequential write behavior in sceKernelGetPrtAperture 2026-10-31 08:15:41 +05:30
pushkarreddyy 1d14e08e6d docs(libkernel): record flexible memory queries and PRT aperture memory validation contract 2026-10-31 08:15:41 +05:30
pushkarreddyy f0879516b8 docs(libkernel): document direct memory query destination copyout fallbacks 2026-10-31 08:14:53 +05:30
MaxandClaude Opus 5.5 0e8a80443a feat(libSceLibcInternal): implement _Mtxinit, _Mtxlock, _Mtxunlock and _Mtxdst
_Mtxinit makes a recursive mutex named SceLibcI_<name> (SceLibcI without
a name) and returns 0, or 1 when the attribute or the mutex cannot be
created. _Mtxlock, _Mtxunlock and _Mtxdst return 1 when the pthread call
fails and 0 otherwise. shadPS4 and fpPS4 agree on both.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-31 03:44:45 +01:00
pushkarreddyy c4236a6594 docs(libkernel): clarify getlogin_r and setlogin debt notes 2026-10-31 08:14:25 +05:30
pushkarreddyy 5649f9ec92 docs(libkernel): document getlogin_r and setlogin pointer fault behavior 2026-10-31 08:14:24 +05:30
Nicolas Gonzalez 02fd67b405 Merge remote-tracking branch 'upstream/main' into perf/libc-write-watch-fault-ahead 2026-10-30 23:33:09 -03:00
zaryabzip 8f941d0364 feat(libSceAudiodec): read the Ajm ids with sceAudiodecGetAjmContext
sceAudiodecGetAjmContext takes a context and two optional outputs, as a
firmware 13.42 run of libSceAudiodec.native shows: a null context
returns 0x807F0002, otherwise the 32-bit ids at offsets 0 and 4 go to
the outputs that are not null and the call returns 0.
2026-10-31 07:28:44 +05:00
pushkarreddyy 05735027f8 docs(libkernel): keep system version queries debt entries within limit 2026-10-31 07:58:08 +05:30
zaryabzip 0e08e95853 feat(libSceRudp): answer flush, remote info and buffer status for unconnected contexts
sceRudpFlush, sceRudpGetRemoteInfo and sceRudpGetContextBufferStatus take
the argument lists and checks of a firmware 13.42 run of the real
exports. No context here ever connects, so flush and remote info return
NOT_ACCEPTABLE, as the run gave for created, bound and listening
contexts, and the buffer status writes zeros.
2026-10-31 07:26:15 +05:00