Commit Graph
14017 Commits
Author SHA1 Message Date
Adrià Franch e1e6ae0e79 fix(agc): add libc PATH for agc_driver_unused_viewport_depth on Windows 2026-10-19 09:02:24 +02:00
gguerra26 538b63ef4c fix(agc): normalize unused viewport depth ranges
Use representable viewport endpoints only when the draw has no depth attachment and its pixel shader does not read PositionZ. Preserve XY coverage, clip-space mode, depth clamping, and validation of non-finite inputs.

Balatro (PPSA21402) reaches rendering on Apple M1 with MoltenVK after this change instead of stopping at VK_EXT_depth_range_unrestricted. Depth-dependent draws retain their original behavior.
2026-10-19 09:02:24 +02:00
Adrià 6b8228b2bf Merge pull request #6585 from Mouad-Scriptz-0/feat/libc-setw
feat(libc): export std::setw(int)
2026-10-19 09:02:04 +02:00
Adrià 977ee725b2 Merge pull request #6595 from MarcZX10/codex/ps4-relative-jump-tables-3093
fix(relinker): exclude trailing PS4 relative jump tables
2026-10-19 09:01:03 +02:00
Adrià 8693952ce5 Merge pull request #6583 from MarcZX10/codex/build-eligibility-single-node-6550
test(ci): reuse Node for build eligibility scenarios
2026-10-19 09:00:57 +02:00
Adrià c4d6dbeede Merge pull request #6574 from GalaxyGamingFR/fix/progress-history-calendar-labels
fix(progress_history): label axis dates on calendar days
2026-10-19 08:58:59 +02:00
Adrià 72aba1dff5 Merge pull request #6571 from klosixgaming-arch/fix/agc-cb-resolve-msaa-disabled
fix(agc): compare a CB resolve's sample count with the rasterizer onl…
2026-10-19 08:58:54 +02:00
Adrià 50a5b435f1 Merge pull request #6596 from ymatrix1/feat/rtc-missing
feat(libSceRtc): implement the remaining firmware exports
2026-10-19 08:57:02 +02:00
Emanuele b687368fac docs(libc): order the macOS unmappable range by macOS version
The range starts at 0x10_0000_0000 on macOS 26.5 and at 0xF_C000_0000 on
macOS 27. The M2 Max on macOS 27.2 shows the same start as the M4 Pro on
27.0.1, so the line lists the macOS version first and the chips only as
the machines it was measured on.
2026-10-19 08:55:20 +02:00
Adrià 64a9caa62d Merge pull request #6499 from parl0v/perf/keep-import-across-split
perf(agc): keep a host import across a split of its guest range
2026-10-19 08:54:36 +02:00
ionut27001 58d608c556 test(agc): give the flip store test the deadline its siblings use
agc_driver_flip_stores_small_results waits 2 s for the flip and the
stored texels. That window also holds the driver's start and the
compute program's compilation at dispatch, so on a loaded host the
flip arrives late and the test reports that it did not reach the GPU.
Wait 10 s, as the other execution tests do.
2026-10-19 09:54:08 +03:00
fogydes 80a987f01d fix(relinker): validate syscall scanner code section bounds and offset overflow 2026-10-19 12:23:54 +05:30
Adrià c1ca83479f Merge pull request #6566 from TheAggie/perf/agc-draw-fewer-allocations
perf(agc): fewer heap allocations per recorded draw
2026-10-19 08:53:07 +02:00
fogydes 5536aa8c0d fix(relinker): validate section header table bounds and reject overlapping sections 2026-10-19 12:22:43 +05:30
Adrià fdf64dba83 Merge pull request #6567 from SleglJan/pr/rewritten-set-variable-count
fix(agc): reuse a recycled descriptor set only for a table of its own size
2026-10-19 08:52:26 +02:00
Dean ea5b811341 Merge pull request #7489 from AlxcBTW/pr/barrier-batch
perf(agc): skip the staging, write-back and label-run leading barriers a covering barrier already orders
2026-10-19 19:51:53 +13:00
fogydes 93d3f89b51 fix(relinker): reject program header table overlapping the extra block 2026-10-19 12:21:35 +05:30
fogydes a7374e243e fix(relinker): validate resource section RVA and prevent section overlaps 2026-10-19 12:19:59 +05:30
fogydes 324a802fdf fix(relinker): validate relative relocation table bounds, dynamic tag variants, and slot targets 2026-10-19 12:18:40 +05:30
JJenkx c8d7e37f4c fix(agc): initialize point size and limits from SDK defaults 2026-10-19 02:48:17 -04:00
fogydes beb615fbec fix(relinker): resolve EIP-relative GOT accesses and guard target overflow 2026-10-19 12:17:17 +05:30
jweidenh 185fa96875 fix(relinker): handle overlapping relocation tables 2026-10-19 02:47:15 -04:00
fogydes 477f8a9cb8 fix(relinker): guard PLT compactor against displacement underflow and offset overflow 2026-10-19 12:15:52 +05:30
fogydes f36bdeba2b fix(relinker): guard base relocations against page boundary overflow and deduplicate entries 2026-10-19 12:15:00 +05:30
Yuri Olive 4d6942f1e6 feat(libSceNet): export missing firmware network interfaces 2026-10-19 08:42:01 +02:00
ShinMalphur fed4344c72 docs(libc): record secure string size assumptions 2026-10-19 13:11:36 +06:30
ShinMalphur cdd476fdfc test(libc): cover oversized secure string destinations 2026-10-19 13:11:17 +06:30
ShinMalphur 016f743c64 fix(libc): reject oversized secure string destinations 2026-10-19 13:11:00 +06:30
Adrià 7f596df48d Merge pull request #6550 from orishamir/fix/savedata-memory-journal
fix(libSceSaveData.native): write only the changed bytes of save-data memory
2026-10-19 08:39:54 +02:00
Werner ea58c903b0 fix(relinker): keep the PT_TLS zero fill out of memory when converting to Windows
WindowsTlsBuilder allocated the whole TLS block and thread control block
for .gtls, so a large p_memsz cost that much memory even though only the
p_filesz template is written. Store the template and reserve the rest as
the section's virtual size; the TLS directory still covers the whole
block, which the loader copies from the zeroed image.
2026-10-19 06:39:49 +00:00
Adrià 05b5d192fb Merge pull request #6309 from fogydes/feat/voicechat-firmware-exports
feat(libSceVoiceChat): export missing firmware voice chat interfaces
2026-10-19 08:38:57 +02:00
Adrià fcde2cf95c Merge pull request #6529 from al3w0f205/feat/agcdriver-quadlist-primitive
feat(libSceAgcDriver): support quad-list primitive type
2026-10-19 08:38:11 +02:00
Adrià dc54701e49 Merge pull request #6541 from wachi35676/fix/libc-fopen-random-device
fix(libc): read /dev/random and /dev/urandom through fopen
2026-10-19 08:38:06 +02:00
Adrià 22e59888ce Merge pull request #6467 from fogydes/feat/agc-driver-command-buffer-submit
feat(libSceAgcDriver): implement command buffer submission
2026-10-19 08:37:37 +02:00
Adrià 8b54728061 Merge pull request #6360 from hypermoist/fix/agc-gpu-indirect-dispatch-limit
fix(agc): check GPU-side indirect dispatch group counts against the device limit
2026-10-19 08:37:32 +02:00
Adrià 22410061d5 Merge pull request #6542 from wachi35676/fix/libkernel-windows-shared-file-mmap
feat(libkernel): map regular files with mmap on Windows
2026-10-19 08:37:27 +02:00
Adrià feb74b65c2 Merge pull request #6551 from yash27git/patch/Tessellation-Lowering
feat(shader): read hull inputs at a control point chosen by a select or phi
2026-10-19 08:31:08 +02:00
notaxeltvandCursor 07d9f409a4 fix(libSceNgs2): keep CalcListener basis when front and up are parallel
PPSA15552 passes matching front/up after a listener move; pick a perpendicular up hint instead of throwing so Dead Cells can keep running.

Co-authored-by: Cursor <[email protected]>
2026-10-19 08:29:47 +02:00
MarcZX10 55a3eeb074 fix(agc): retain shader memory region vectors 2026-10-19 06:27:51 +00:00
Adrià Franch 6093e8c49e docs(np-tus): add technical debt for libSceNpTus 2026-10-19 08:27:08 +02:00
Luis Gerardo Aguilar 8cf212a9d8 feat(np-tus): add libSceNpTus with offline title user storage
Titles that import libSceNpTus failed to load because the library did
not exist. Title contexts and requests are tracked, arguments are
validated, and every storage operation completes as signed out, matching
how libSceNpManager reports PSN.
2026-10-19 08:26:59 +02:00
MontyMcK b378541e79 fix(libSceHmd2): report the PS VR2 runtime as unavailable again
Since #7323 sceHmd2Initialize succeeds and sceHmd2Open returns a handle,
so PPSA01317 runs its PS VR2 set-up and aborts on
sceHmd2ReprojectionQueryBufferSizeAlign, which is not implemented
(reported in #6350). AnyPS5 has no PS VR2 or PC VR support, so
initialization returns libSceHmd's UNSUPPORTED_FEATURE (0x81110016)
again, as before #7323, and titles skip their VR set-up. sceHmd2Open
then returns NotInitialized. The reprojection size queries stay
unimplemented.

Refs #6350
2026-10-19 19:25:30 +13:00
Adrià b44d0127d8 Merge pull request #6545 from Get-fix/ps4/relinker-init-array-without-size
fix(relinker): treat DT_INIT_ARRAY without DT_INIT_ARRAYSZ as empty
2026-10-19 08:22:06 +02:00
MarcZX100 a56f40b8ef test(ci): reuse node for build eligibility scenarios 2026-10-19 08:21:53 +02:00
Karan Vora 2907ca6cac fix(agc): take RADV's fill-memory kernel as a buffer fill
RADV initializes and fast-clears DCC keys with its fill_memory compute
kernel, which stores through a global address. Run as an ordinary
dispatch, its stores name no range. The DCC key tracking therefore saw
a key fill only once it had landed in guest memory, which could be
after later writes to the surface had already been recorded.

vkQuake (PPSA99010) hits this on every item pickup:
- the scene renders into a second color buffer;
- RADV's UNDEFINED -> GENERAL barrier fills color buffer 0's keys with
  DCC_CLEAR_0000;
- a screen-effects compute pass writes color buffer 0;
- the UI pass draws on color buffer 0.
The keys landed while the UI pass was being recorded. The refresh took
them for a clear made after the compute pass, dropped its results and
cleared the image to black. For the length of the pickup flash the
scene was black, with only the HUD drawn.

The fill HLE now matches the 16-byte variant of the kernel as a fill of
min(threads * 16, user[4] + 16) bytes. The kernel takes its address in
user[2..3], its largest store offset in user[4] and its value in
user[5]. A key fill through it is handled where it is in the command
stream.
2026-10-19 08:21:36 +02:00
ionut27001andClaude Opus 5.5 ae662c873d fix(libc): parse NaN payloads in strtod as measured on a PS5
In a payload process on a PS5 (firmware 12.70), the strtod and wcstod
of libSceLibcInternal.sprx keep the payload of a NAN(...) sequence,
read as FreeBSD 11's gdtoa hexnan reads it, under the quiet bit and
with the sign. strtof, wcstof, strtold and wcstold return the positive
default quiet NaN whatever the sign and the sequence, and consume a
sequence of letters, digits and underscores up to its closing
parenthesis. Here every NaN lost its payload, and strtof and strtold
kept the sign.

The model reproduces the 64 NaN inputs that p11, p14, p27 and p33
measured, including blanks and other characters inside the parentheses
and unterminated sequences, and the test now pins them. It also pins
two p71 cases measured through strtod: nan(1 2), and "nan( " followed
by NUL and ")". In hexnan, a blank after a payload digit, while a
32-bit word of the payload is still free, starts a blank skip that has
no NUL check, so when only blanks follow up to the terminating NUL the
console reads past it (p71); that case throws here. A blank right after
"nan(" is skipped with a NUL check, and the console stopped at the NUL
there.

AI-assisted: yes

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 09:20:41 +03:00
Adrià 06a750df70 Merge pull request #6293 from fogydes/feat/video-recording-firmware-320-exports
feat(libSceVideoRecordingP): export missing firmware 3.20 video recording interfaces
2026-10-19 08:19:41 +02:00
Jota 5937ef03ef fix(agc): wait for an image another thread is storing before a host read
FlushPending moves the overlapping images from the pending list to the
flushing list and stores them under the GPU mutex. A FlushPending or a
flush hook on another thread for the same range found nothing pending and
returned while the store was still running, so the host read saw guest
memory before the store; the queue-idle store hits this with any host read.

When an overlapping image is being stored and this thread does not hold
the GPU mutex, take it and check again until no overlapping image is left
being stored, and report the range as stored so the hook syncs the
recorded store.

Fixes #7744
2026-10-19 06:18:44 +00:00
Adam Franke 2798e6a6fd fix(libSceSsl): follow the codes and defaults measured on a PS5 (13.40)
Every unverified point of the libSceSsl debt entry was measured on a PS5 on
system software 13.40 with a ps5-payload-dev payload against a TLS 1.2 test
server presenting leaves issued by the test fixture root. The code follows the
console where it differed: initial verify options 0x25 with the date checks
off, bits outside 0x3F rejected, the verify callback called with the context
id and the bitmask of failed checks and re-run from every later call after a
negative return, sceSslRead flags 0 reading until the requested length,
streams that end without close_notify reading as 0, resets reported with the
libSceNet codes, receive timeouts as SSL_ERROR_WANT_POLLIN, a fatal alert
ending the transport, sceSslClose as a repeatable no-op before the handshake,
read and write before connect running the handshake, SSL_ERROR_INVALID_ID for
unknown or deleted handles and terminated contexts, sceSslSetMinSslVersion
accepting 2 to 5, an empty ALPN list rejected, long attribute names from
sceSslGetNameEntryInfo and sceSslGetSerialNumber leaving the caller's length.
The debt entries record the measured values and what stays unmeasured.
2026-10-19 02:12:30 -04:00
Adrià 63e4a63804 Merge pull request #6538 from TheAggie/perf/agc-dma-prefetch-keeps-pipeline
perf(agc): a DMA_DATA prefetch keeps the draw pipeline
2026-10-19 08:11:46 +02:00