Commit Graph
7963 Commits
Author SHA1 Message Date
Adrià 98541c674e Merge pull request #2853 from alfalfa-star/feat/npwebapi2-request-timeout
feat(npwebapi2): implement sceNpWebApi2SetRequestTimeout
2026-10-14 12:49:48 +02:00
Adrià 29f4891e21 Merge pull request #5696 from gjonn/hdr-pq-display-buffers
feat(agc): present BT.2100 PQ display buffers on an SDR output
2026-10-14 12:49:21 +02:00
Jan ŠléglandClaude Opus 5.5 d34564be4a perf(agc): bind a sparse descriptor heap's committed run in place from its import
A descriptor heap that a shader binds whole while only the pieces from its
base are mapped (a sparse heap) is copied on the CPU for every build that
binds it unless a mirror serves it. The sparse heap mirror takes a heap whose
needed extent lies in one releasable registered range. A heap mapped piece by
piece, each mapping its own allocation and the pieces back to back from the
heap's base, is several registered ranges, so every build copied its mapped
run again.

Such a region is now bound in place from an import of that run: an import
already covering it, the run's own import, or one joined over exactly the run
(#4517). This applies to any sparse heap no mirror took, including under
APS5_NO_LEASE_MIRROR or APS5_NO_SPARSE_HEAP_MIRROR. A join is made only for a
region that starts at a registered range, once the previous bind of that
address saw the same last mapped byte: a heap that grows between every two of
its binds keeps the copy, and one bound more often than it grows is joined
again after each growth. Joins stop after 64 per joined run base, with a
message: the heap is then bound in place while an existing import covers its
run and copied otherwise. The records go with their range. The region's descriptor and BDA ranges end at the import's end, which
covers the mapped run and the last view, as the copy does. A region whose
mapped part does not start at its base, with a view past the run, written by
its shader, or whose run is not imported is copied as before. A direct
region whose import ends before it outside this path still fails in
Descriptor, as before.

A set over such a region stays reusable: DirectRegions and InPlaceReads name
the region up to its import's end, so the import's serial proves it, and a
reuse also requires the heap to be mapped exactly up to that end
(CutRegions), checked whenever the imports or the registry changed, so a
mapping past the cut makes the set miss. DirectRegions also refuses a set any
of whose regions bound in place no longer holds the import found at its base
(a later join in the same build retired it); this applies to every region
bound in place.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:42:01 +02:00
Dean 3e577edac2 Merge pull request #5160 from nikowolf123/fix/shader-lds-private-subword-stores
fix(shader): update per-invocation LDS without atomics
2026-10-14 23:30:37 +13:00
Dean 6ade14f52d Merge pull request #5679 from moong15/fix/agc-save-guest-bytes-before-untracked-results
fix(agc): save the guest bytes of units without a write generation when results land outside the write watch
2026-10-14 23:28:44 +13:00
Adrià 2a99157640 Merge pull request #4812 from AlxcBTW/feat/trace-summary-interval
feat(agc): add APS5_TRACE_SUMMARY_EVERY for summary lines of a long session
2026-10-14 12:24:56 +02:00
mrfelek dd7d649c36 feat(agc): storage image access to depth planes through a 2D array view from a later slice
A storage view of the depth plane that starts above slice 0 was refused. The
layered storage image already spans slices 0..last, and the view starts at its
base slice, so the refusal is dropped and only the slices from the base slice to
the last are copied in and out. The base slice joins the cache key.

DepthStorageDispatch stores through a view from base slice 2 and checks the
other slices stay untouched; it fails without the change.
2026-10-14 12:13:52 +02:00
Mehran e9c98900e7 fix(agc): bind a V# past the range limit by the memory behind it 2026-10-14 13:09:59 +03:00
Dean c654b199bd Merge pull request #5049 from eljackjoestar-cmd/codex/scalar-buffer-descriptor-fields
fix(shader): ignore unused descriptor fields for scalar buffer loads
2026-10-14 23:06:33 +13:00
Dean Galvin 52813787cf fix(libkernel): defer raises while a thread holds the address-wait lock on Windows 2026-10-14 23:03:06 +13:00
simonbronkandClaude Opus 5.5 378ac61788 fix(libSceConvertKeycode): ignore the state bit 0x4000000 RE Engine titles pass
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:02:20 +02:00
JJenkx b009318423 docs(shader): place traversal debt in existing Build section 2026-10-14 06:01:45 -04:00
JJenkx fd192b20cc docs(shader): place traversal debt with the component 2026-10-14 06:01:25 -04:00
JJenkx 8ed0bc395d perf(shader): avoid redundancy traversal map copies 2026-10-14 06:01:00 -04:00
Romans Pokrovskis c8b3a37533 feat(agc): emulate default eight-sample dithered alpha coverage 2026-10-14 12:58:43 +03:00
Dean 7963f16d12 Merge pull request #5514 from ps54all/feat/libsceappcontent-addcont-delete
feat(libSceAppContent): export sceAppContentAddcontDelete
2026-10-14 22:57:30 +13:00
Dean 56429064fc Merge pull request #5226 from ErenYeager1836/carry/libSceSsl-connection-calls
feat(libSceSsl): add the connection calls
2026-10-14 22:55:56 +13:00
simonbronkandClaude Opus 5.5 ddf5e146e1 docs(debt): list sceHttp2WebSocketSetPingTimeout
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 11:49:12 +02:00
Yunus Shaikh b37a8c295a chore(relinker): move the --frame-red-zone debt entry off a line another open PR changes 2026-10-14 02:48:40 -07:00
Oleksandr SierovandClaude Opus 5.5 84bb450d48 feat(libkernel): EVFILT_VNODE on macOS through the host kqueue
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 10:48:35 +01:00
Dean 115dc95784 Merge pull request #5347 from MathiasDevelopes/codex/pr-agc-stencil-clear-state
fix(agc): initialize stencil control and reference masks
2026-10-14 22:48:14 +13:00
Dean c3bad39372 Merge pull request #5434 from milescoviello/fix/relinked-module-name-case
fix(libc): find a relinked module whose name differs in case
2026-10-14 22:41:23 +13:00
Dean 5744094e79 Merge pull request #5506 from codingreapermaps/feat/agc-z64kbx-color-targets
feat(agc): render into SW_64KB_Z_X color targets
2026-10-14 22:40:55 +13:00
Dean 318f237602 Merge pull request #5258 from JAB-dev/perf/unwind-info-cache
perf(libkernel): cache the unwind tables and image name per module on Windows
2026-10-14 22:39:58 +13:00
Dean 1a40d3d81f Merge pull request #5013 from p3n1cillin/claude/select-pipes
feat(libkernel): select on pipes on Windows
2026-10-14 22:39:38 +13:00
Dean 21da4061be Merge pull request #5413 from mariusyo07/feat/audioout2-disable-chat
feat(libSceAudioOut): implement sceAudioOut2DisableChat
2026-10-14 22:38:41 +13:00
eljackjoestar-cmd aa2abf801b fix(shader): ignore unused descriptor fields for scalar buffer loads 2026-10-14 22:38:13 +13:00
Dean 64380313b5 Merge pull request #5521 from codingreapermaps/feat/agc-alpha-coverage-without-color
fix(agc): alpha-to-coverage from a 32_AR MRT0 export without a color target
2026-10-14 22:37:55 +13:00
eliasbruno124-dev b737308eed fix(ssl): retain loaded certificate authorities 2026-10-14 22:34:22 +13:00
Alexej Szpevák 8e812f4b73 fix(relinker): report RIP-relative operands of far indirect CALL and JMP
DecodeInstruction returned before reading the ModRM of FF /3 and FF /5,
so a far CALL or JMP through a RIP-relative pointer had no RIP-relative
displacement. A stub that moved such a JMP copied the displacement
without relocating it.

The decoder was compared with iced-x86 (AMD decoding) over 3.99 million
encodings: every opcode of the legacy, 0F, 0F38 and 0F3A maps under 34
prefix combinations and the VEX 0F, 0F38 and 0F3A maps, each with 48
ModRM forms. Apart from this, it agrees on length, RIP-relative offset,
control flow kind and branch target for every valid Zen 2 instruction
except near branches with a 66 prefix, recorded as technical debt, and
kernel-only returns, which it treats as sequential.

Add the comparison's metadata as cases: one RIP-relative encoding per
opcode, map and immediate size, every FF /r form, and the branch forms
with their flow kind and target. The existing cases check lengths only;
a loop or jrcxz decoded as an unconditional jump passed the whole suite.
2026-10-14 11:33:59 +02:00
Dean 0b97f8b9f5 Merge pull request #3664 from alfalfa-star/feat/linux-wayland
feat(videoout): use native Wayland on Linux
2026-10-14 22:32:26 +13:00
Romans Pokrovskis c393e720af test(shader): require exact invalid buffer descriptor refusals 2026-10-14 12:26:01 +03:00
Romans Pokrovskis 5a71b313c4 test(shader): exercise mixed buffer descriptors on Vulkan 2026-10-14 12:26:01 +03:00
Alexandros Pournaras 5a0d74d1f8 style(libSceCesCs): reorder functions 2026-10-14 12:20:58 +03:00
David 69715e8393 docs(debt): record that the guest environment starts empty 2026-10-14 13:15:53 +04:00
Alexandros PournarasandClaude Sonnet 5.5 4941c586cd feat(libSceCesCs): declare sceCesRefersUcsProfileCp1250
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-14 12:04:43 +03:00
Dean 2dbb729b78 Merge pull request #5738 from oneandonlydean/revert/5608
Revert "fix(libSceVideoOut): export unknown Onimusha import NID" (#5608)
2026-10-14 21:58:37 +13:00
Dean 2582ec1193 Merge pull request #5309 from hugodearaujo/feat/agc-sparse-dmabuf-import
feat(agc): import shared ranges above 64 MiB as sparse buffers over udmabuf chunks
2026-10-14 21:50:50 +13:00
Dean Galvin 6b4d3c8ae6 Revert "fix(libSceVideoOut): export unknown Onimusha import NID" (#5608)
The export turned YNw9Xk5iNWo from an unresolved import into a stub that throws. Dreaming Sarah (PPSA02929) calls it during start-up and now aborts with "YNw9Xk5iNWo not implemented" about 2 s in. Reverting until the function is implemented.
2026-10-14 21:40:28 +13:00
Kikoarl 40e2019756 feat(ngs2): support custom submixer rack UserFx module 0x1d
Accept SCE_NGS2_CUSTOM_MODULE_ID_USER_FX (0x1d) on custom submixer racks alongside UserFx2 (0x1f). When configuring a custom rack voice, support voice control parameter SCE_NGS2_CUSTOM_VOICE_PARAM_USER_FX (0x40001d00) to install custom submixer UserFx callbacks with user data. Run legacy UserFx callbacks during custom voice rendering and update sample presence flags accordingly.

Fixes runtime abort in Void Terrarium (PPSA03061):
  terminate called after throwing an instance of 'std::runtime_error'
    what(): NGS2: custom module id 0x1d is not implemented
  FATAL: abort() (SIGABRT)

Closes #5055
2026-10-14 10:04:34 +02:00
Claude f5d856d85e test(libkernel): take the summer time amount from the C runtime on Windows
A TZ variable does not set the UCRT's _dstbias, so after the system zone
of a CI runner without daylight saving it stays 0.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_017iLxaSz4qjmirfqKZdhVQk
2026-10-14 07:56:03 +00:00
p3nicillinandClaude Opus 5.5 435be9905d feat(libSceIme): open a panel-less IME fed by the host keyboard
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 08:49:04 +01:00
Dean 1209d37072 Merge pull request #5705 from oneandonlydean/feat/host-cpu-check
feat(libkernel): stop at start-up on a host CPU without the PS5's extensions
2026-10-14 20:47:35 +13:00
Dean 327249d4e9 Merge pull request #5028 from nikowolf123/perf/structurizer-attempt-budget
perf(recompiler): iterate structurizer fixpoints in post-order and bound shared merge splitting growth
2026-10-14 20:45:02 +13:00
Dean eac1e26e29 Merge pull request #4926 from nikowolf123/feat/structurizer-complete-fallback
feat(recompiler): structure every control-flow graph the structurizer refuses
2026-10-14 20:44:09 +13:00
Dean 5ee94cf571 Merge pull request #4201 from Celegans12/feat/agc-tessellation-relative-patch-data
feat(agc): rebuild the hull's relative patch index when it is used as data
2026-10-14 20:39:33 +13:00
Maz eb1b9eca96 fix(agc): return 0 for out-of-range sceAgcInit without table lookup
Pointer-shaped calls match the #4808 console probe (success, no writes); selecting table 13 for those values was unsupported.
2026-10-14 11:38:52 +04:00
mazen 4832bd825c fix(agc): clamp sceAgcInit versions above 13 inline 2026-10-14 11:30:49 +04:00
mazen 9d412df7b5 fix(agc): fall back out-of-range sceAgcInit versions to table 13
Pointer-shaped NID kW3GLb7QfPg calls from public homebrew succeed on console; returning an error left those titles failing init after #4835.
2026-10-14 11:30:49 +04:00
Dean Galvin 83a268a867 feat(libkernel): stop at start-up on a host CPU without the PS5's extensions
Titles run natively, so a host CPU without an extension that compiled Zen 2 code uses faults with an illegal instruction deep inside a title (#3719: SHLX, BMI2). libkernel now reads CPUID and XCR0 when it loads on Linux and Windows, logs the host CPU's extensions and throws, naming the CPU and the missing extensions, before any title code runs.
2026-10-14 20:29:57 +13:00