Commit Graph
14017 Commits
Author SHA1 Message Date
TibixDev 4a04a78bfc fix(ngs2): decode ATRAC9 across streamed waveform blocks
Keep logical sample and skip counts across byte-only continuation buffers, assemble split superframes, and allow callbacks to refill, pause or reset the stream. Preserve decoded audio while waiting for input and reject truncated closed streams.

Validated with seven NGS2 tests, an ASan/UBSan streaming test build, and PPSA03747 repeatedly supplying continuation buffers during playback. Flag semantics follow the pinned KytyPS5 source documented in TechnicalDebt.md.

Written with AI assistance.
2026-10-10 00:50:23 +02:00
Celegans12 a3ca03e057 fix(videoout): remove duplicate VRR exports
The named VRR functions hash to LibwuIonIBw and kP2L8t3j-aM already.
Their explicit aliases therefore create second PE exports with the same
patched NIDs and prevent Windows builds from completing.

Keep the named function exports and remove their redundant aliases.
The NID patcher's duplicate-export validation remains unchanged.
2026-10-10 00:49:47 +02:00
TibixDev 1a0c999ac0 perf(memory): reduce repeated write-tracking range scans
Scan version stamps within contiguous leaves. On Linux, collect nearby
pages within queue epochs only after confirming full watched coverage.
Keep the requested range on Windows. Select the range before collection
and do not retry a failed walk.

Test sparse-leaf boundaries, write histories, partial unwatches and epochs.
Fedora 44 Release tests pass with default, disabled and shared caching.
Isolated upstream comparison reduces the saved collect replay by 11-12%.
Windows was not tested.

AI-assisted: yes.
2026-10-10 00:49:13 +02:00
Adrià c9d42619a6 Merge pull request #1292 from Celegans12/feat/agc-draw-null-srt
feat(agc): implement deferred faults for descriptors read through null SRT pointers
2026-10-10 00:48:27 +02:00
Adrià dfa8b4338f Merge pull request #1274 from CnRJay/fix/recompiler-descriptor-phi-web
fix(recompiler): split image reads whose descriptor is a web of SRT Phis
2026-10-10 00:44:00 +02:00
MarcZX100 622984257b test(agc): pin serialized user data size 2026-10-09 22:43:42 +00:00
MarcZX100 50f1f1aa84 fix(agc): read shader user data without tail padding 2026-10-09 22:43:42 +00:00
Adrià 5c26edf5dc Merge pull request #1267 from Celegans12/perf/shader-bda-span-reads
perf(shader): share the BDA dword span read between read sites
2026-10-10 00:43:40 +02:00
authurtabo-byte 035b675e6d fix(libkernel): initialize the full local-time conversion state 2026-10-09 15:43:24 -07:00
Adrià Franch ab658fcfb0 docs(technical-debt): state what raise does for each recorded signal 2026-10-09 23:42:52 +01:00
john.maiaandClaude Opus 5.5 e462d0602a refactor(libkernel): size the delivered signal handler table like the dispositions
Assisted by Claude Code.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01DwFnKjMxmwGDWiuYYf1v4D
2026-10-09 23:42:43 +01:00
john.maiaandClaude Opus 5.5 cfe4a277c4 feat(libkernel): implement sigaction
EVO-PLAYER (PPSA99039) v0.11.0 stops at sigaction once its earlier
imports resolve: it installs a crash handler for SIGSEGV, SIGBUS and
SIGABRT and a quit handler for SIGTERM, SIGINT and SIGHUP at start-up.

sigaction records the handler, flags and mask of signals 1 to 128 and
reports them back, with FreeBSD's EINVAL cases. signal shares the table
and records SA_RESTART, as FreeBSD's libc does. Plain handlers on the
signals signal already delivers run as signal handlers do; SA_SIGINFO
handlers and other signals are recorded only, and raise of such a
signal throws.

Assisted by Claude Code.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01DwFnKjMxmwGDWiuYYf1v4D
2026-10-09 23:42:43 +01:00
Adrià cb9734cd8a Merge pull request #1272 from Dextroid17/fix/relinker-dynamic-table-bounds
fix(relinker): bound the symbol and relocation table reads
2026-10-10 00:42:33 +02:00
john.maiaandClaude Opus 5.5 e4dcf3e6c0 fix(relinker): end the guest frame-pointer chain at the entry stub
The entry stubs called the title's entry with rbp left as the process
started it (0 on Linux) or as a loop counter left it (0 on Windows). The
title's start code pushes rbp, so the frame-pointer chain of its main
thread ended in a null frame pointer. Unreal Engine walks that chain to
capture call stacks (for an ensure, for example) and reads the return
address at [rbp + 8], so the walk read address 8 and crashed.

Both stubs now push a zero frame record (saved rbp 0, return address 0)
and point rbp at it before the call, so frame-pointer walks stop at the
entry. The Linux stub pushes it below the aligned stack pointer, keeping
the 16-byte alignment at the call. The Windows stub writes it into free
slots of its own frame at rsp+0x40.

PPSA15657 crashed in its stack walk at the title screen in about half of
its runs.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_0134RWCyiyydJBbfKz8g9Bwe
2026-10-09 23:42:31 +01:00
john.maiaandClaude Opus 5.5 f70d2bdf87 fix(agc): name the reason when /dev/udmabuf cannot be opened
On Linux, shared direct memory is imported through /dev/udmabuf (#943).
Many distributions create it as root:kvm 0660, so a user outside the
kvm group cannot open it. The ranges are then copied instead of
imported, and GPU stores through FLAT/GLOBAL addresses to them fail
with "BDA access failed": DOOM PPSA99666's compute presenter falls back
to its CPU scaler. The only trace was "failed at open /dev/udmabuf
(-1000072003)", a Vulkan result that hides errno.

Print the open error once, with the fix for EACCES, and document the
requirement in USAGE.md.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-09 23:42:31 +01:00
authurtabo-byte 9c292fd939 fix(shader): reserve heap space for sixteen sampler pairs 2026-10-09 15:40:51 -07:00
Adrià 464203cea8 Merge pull request #1265 from popcoder565/perf/bda-store-byte-loop
perf(recompiler): loop the BDA byte stores and written-page probes
2026-10-10 00:40:50 +02:00
Dean 3e3290dc03 Merge pull request #2360 from Aerovity/ci/labels-skip-existing
ci(labels): create unforced labels only when they are missing
2026-10-10 11:39:22 +13:00
Adrià a00165da9e Merge pull request #1252 from MathiasDevelopes/feat/recompiler-native-f16-rte
feat(recompiler): convert f32 to f16 natively when the device rounds 16-bit floats to nearest even
2026-10-10 00:39:15 +02:00
MarcZX100 89661f8f5d test(agc): isolate optional geometry register cases 2026-10-09 22:38:09 +00:00
MarcZX100 f8c237b1ac test(agc): cover missing hull output register 2026-10-09 22:38:09 +00:00
MarcZX100 e94f0c8f63 test(agc): verify optional geometry output register 2026-10-09 22:38:09 +00:00
MarcZX100 35c0baef20 fix(agc): accept unused geometry output register 2026-10-09 22:38:09 +00:00
Adrià FranchandClaude e4a911fcd3 test(agc): use raw buffer descriptors in the v_fma_f64 subnormal test
With OOB_SELECT 0 and stride 0 every access is out of range now that the
buffer bounds follow OOB_SELECT, so the shader never read or wrote.

Co-Authored-By: Claude <[email protected]>
2026-10-10 00:38:04 +02:00
Adrià FranchandClaude b2961b702c docs(debt): v_fma_f64 subnormals measured, f64 denormal flush not read
Co-Authored-By: Claude <[email protected]>
2026-10-10 00:38:04 +02:00
Adrià FranchandClaude 1dcdca1498 test(agc): pin v_div_fmas_f64 with VCC set on subnormal operands and results
Expected values measured on RDNA2 (gfx1035) with the HW oracle at IEEE=0
and IEEE=1, f64 denormals kept.

Co-Authored-By: Claude <[email protected]>
2026-10-10 00:38:04 +02:00
Nahuel Genchi a12ddaa905 fix(shader): round v_fma_f64 once for subnormal operands and results
A subnormal operand sent v_fma_f64 to a separate multiply and add, and a
subnormal result was rounded twice: once to 53 bits in the scaled domain
and again by the power-of-two rescale. Both differ from IEEE 754
fusedMultiplyAdd in the last bit.

Subnormal operands are now widened by 2^64 and enter the exact path with
their exponent lowered by 64. The exact path keeps the sign of the residual
between the 53-bit result and the exact sum; when the result lands on a
midpoint of the subnormal grid it is moved one ulp towards the exact sum
before the single final rounding. Normal results are rebuilt by setting
the exponent, so only a subnormal result rounds. v_div_fmas_f64 shares the
path.
2026-10-10 00:38:04 +02:00
Adrià 3692f56f09 Merge pull request #1249 from Raghav314/fix/relinker-guest-hash
fix(relinker): write a bucketed hash table for Linux guest modules
2026-10-10 00:37:47 +02:00
Dean 4623971a17 Merge pull request #2244 from swagdotsh/fix-agc-visual-demo
fix(agc): restore the standalone visual demo
2026-10-10 11:37:00 +13:00
Dean 860b82600a Merge pull request #1369 from MarcZX100/test/getcwd-zero-buffer-einval
test(libc): cover getcwd zero-size buffer
2026-10-10 11:36:50 +13:00
MarcZX100 38baacad0c fix(tools): write overlap reports as UTF-8 2026-10-09 22:36:26 +00:00
Adrià e66180f1bb Merge pull request #1972 from babyhuey/feat/libc-inet-addr
feat(libc): implement __inet_addr
2026-10-10 00:35:34 +02:00
Adrià 09a3462eca Merge pull request #1192 from ps54all/feat/libkernel-posix-rename
feat(libkernel): export the POSIX rename
2026-10-10 00:34:32 +02:00
Dean 8fd2f4c412 Merge pull request #1778 from MarcZX100/codex/docs-fork-workflow-approval
docs(contributing): document CLI for manual Build runs
2026-10-10 11:33:25 +13:00
Dean 96ce3acdd0 Merge pull request #1028 from Dextroid17/ci/guard-against-new-skips
ci: fail when a test skips that the job's device is not expected to skip
2026-10-10 11:33:15 +13:00
Adrià 27965d8ae7 Merge pull request #1170 from MichonGoddijn231849/fix/dcc-keys-fill-over-aliased-images
fix(agc): a fill of a surface's DCC keys is a key fill over other images' memory
2026-10-10 00:32:43 +02:00
esatturanandClaude Opus 5.5 9c95d4810e fix(ajm): decode an ATRAC9 run's whole input and follow gapless segments
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 01:29:58 +03:00
Adrià c6e3aa767b Merge pull request #1146 from alfalfa-star/perf/agc-draw-snapshot-budget
perf(agc): keep draw snapshots of storage buffers up to 1 GiB
2026-10-10 00:25:31 +02:00
Joey Fisher 6b41cf4dbf fix(shader): lower the packed pixel ancillary extracts when a masked copy blocks the whole word 2026-10-09 16:25:28 -06:00
Raihan Abdul MajidandClaude Opus 5.5 e768d97949 fix(kernel): keep the file offset in Windows AIO reads and writes
Each Windows AIO request is an overlapped ReadFile/WriteFile at the
request's offset, which on a synchronous handle also moves the
descriptor's file pointer; on the console AIO transfers leave it alone.
The requests now go through the positioned path sceKernelPread and
sceKernelPwrite use (NativePositioned in Stdio.cpp, exposed as
NativePositioned_nid_no_patch), which restores the pointer afterwards.
Negative offsets still fail with EINVAL before the transfer.

GuestAio sets the offset to 2 before a write batch and checks it is
still 2 after. TechnicalDebt records that a concurrent read or write on
the same descriptor can see the moved pointer in between, as for the
pread family.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01UTjpbMX7BUFMZZaxJE98zV
2026-10-10 00:22:22 +02:00
Adam Stachowicz 95073bc45a ci(release): match PR CI Vulkan and Windows SSL setup
Install lavapipe on Linux release builds and set ANYPS5_REQUIRE_VULKAN and GALLIUM_OVERRIDE_CPU_CAPS for ctest so GPU execution tests run instead of skipping. Scope SSL_CERT_FILE to Windows winlibs download and CMake configure steps only so Linux FFmpeg fetch is not broken. Leave release ctest as a single strict run.
2026-10-10 00:20:59 +02:00
Adrià 64fe743995 Merge pull request #1080 from alfalfa-star/feat/videoout-window-icon
feat(videoout): use sce_sys/icon0.png as the window icon
2026-10-10 00:16:44 +02:00
Adrià fc063cff85 Merge pull request #1074 from alfalfa-star/feat/agc-graphics-int64-atomics
feat(agc): accept 64-bit atomics in graphics shaders when the device enables them
2026-10-10 00:14:56 +02:00
Adrià a0d96ac0b4 Merge pull request #552 from Pouare514/feat/stubgen-tool
feat(tools): generate Export.cpp skeletons from missing NIDs
2026-10-10 00:14:40 +02:00
Adrià 2d537f13bb Merge pull request #1073 from alfalfa-star/feat/agc-uint16-color-export
feat(agc): accept UINT16_ABGR color exports into unsigned integer targets
2026-10-10 00:13:23 +02:00
Adrià fa899a3468 Merge pull request #1857 from hikazey/feat/msync
feat(libkernel): implement msync
2026-10-10 00:12:20 +02:00
Saranxzi e06c459534 test(libkernel): cover virtual query after partial unmap
Carry over the direct mmap regression from PR #2267. The live-extent implementation is already present in the preceding commits.
2026-10-09 22:11:35 +00:00
MichonandClaude Opus 5.5 d8b1ad71d8 fix(recompiler): lower the ancillary word only where every reader extracts a modelled field
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-10 00:11:23 +02:00
MichonandClaude Opus 5.5 9905f5ddd7 feat(recompiler): pixel ancillary word used whole
A use of the packed ancillary VGPR other than a constant field extract (the word passed through a
select before its sample number is extracted) reads the word rebuilt from the sample number (bit 8)
and the render target index (bit 16). Extracts of other bits straight from the word stay refused, and
the refusal now names the uses.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-10 00:11:13 +02:00
MarcZX100 eb1e6b22a9 test(libkernel): assert virtual query lease ordering 2026-10-09 22:10:33 +00:00