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]>
- strtof, strtold, wcstof and wcstold return -0.0 when nothing converts
after a minus sign, unless the next character starts an inf or nan
spelling; strtod, wcstod and atof keep +0.0.
- strtof, strtold, wcstof and wcstold leave errno alone for hexadecimal
text that overflows or underflows.
- strtod and wcstod set ERANGE for hexadecimal text whose value lies
below the smallest subnormal and rounds up to it.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
A geometry program with VGT_GS_OUT_PRIM_TYPE 0 (point list) was refused
as an unsupported output assembly, halting Cocoon (PPSA08766) on boot
with "VGT_GS_OUT_PRIM_TYPE other than a triangle strip, or a line strip
from a geometry program, is unsupported".
Each primitive export of an NGG point-list geometry program outputs one
point whose vertex index is stored directly in PrimitivePointIndicesEXT,
so the mesh module now declares OutputPoints with PrimitivePointIndicesEXT
for it when outputPrimitiveSize is 1. The point primitive export extracts
the 9-bit vertex index from the packed primitive export word and stores
it to the output array. A subgroup gets up to maxVertices points, with
provoking vertex 0 and point raster primitive topology.
Tested with Cocoon (PPSA08766) which now progresses past pipeline
creation and initial frame draws into gameplay.
AI-assisted: yes. Written with AI assistance and reviewed by me.
wcstombs_s ends without error when a character does not fit a limit
below the capacity, as the console's does; wcsrtombs_s still reports
ERANGE there. Both paths became reachable with UTF-8. wcsftime keeps
returning 0 for a null buffer, and the debt entries that described the
single-byte locale now describe the UTF-8 one.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
Both threw. They now take no arguments and return 0x804E0801 while the
library is not initialized and 0 otherwise, as shadPS4's PS4 versions
do; that not-initialized code is the one prosper reads for
sceVoiceStart, and RPCS3's PS3 calls make the same check. Like
sceVoicePausePort they change no reported state: VitaSDK documents that
pausing every port keeps buffered data and the reported port state, and
nothing here processes port data.
guest_voice calls both before sceVoiceInit and after sceVoiceEnd
(0x804E0801), and twice each with ports open, where GetPortInfo still
reports the same type, state and frame size.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The title allocates, maps and releases about 48 direct-memory blocks per frame.
Each allocation created a pagefile-backed section and each release closed it.
A released section whose pages were never stored to (resident pages keep their
data in private memory and saved buffers, not in the section) is still blank,
so up to 256 such sections of at most 16 MiB, 256 MiB in total, are kept by
size and handed to the next allocation of that size instead of a new
CreateFileMappingW. APS5_NO_DIRECT_MEMORY_SECTION_POOL keeps the old behaviour.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
sceVideodec2GetPictureInfo writes the decoder's own picture layout. For a
VP9 decoder it now writes the 88-byte VP9 layout that
sceVideodec2GetVp9PictureInfo returns, instead of throwing. Mortal Shell 2
(PPSA34008) calls the generic query with that structure for its intro
movie. HEVC pictures still throw.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Kernel and native-library writes into guest pages the write watch left read-only fail with EFAULT on macOS and ERROR_NOACCESS on Windows (#7473). State the rule where contributors look and point the macOS write-watch debt entry at it.
An address-based compute build bound its written V# elements in place in
the host imports of the cached address space, and its BDA table sent the
same addresses there, so every access went over PCIe. A written element
inside one import region now becomes a region of its own, staged like any
written element (copy-in, device-local shadow, copy-back), and
AddressRanges cuts the import's table entry around it so pointers into
the element reach the shadow as its descriptor does. resolveOverlays
keeps a cluster only when it lies inside one direct import region, is
stagingEligible and is crossed by no in-place range or own region.
Dispatches under APS5_BDA_STAGING_MIN_THREADS (512) threads keep the
imports; APS5_NO_BDA_STAGING=1 turns it off. Test: agc_bda_staging.
The copy-back trade-off of staged elements is listed as technical debt.
AI-assisted: yes