Commit Graph
5577 Commits
Author SHA1 Message Date
Dean 0d21b1dea4 Merge pull request #683 from nicolasabosch/feat/homebrew-runtime-exports
feat(libs): implement homebrew libc and kernel runtime exports
2026-10-06 16:27:09 +13:00
Nicolas Abosch 4a43d433e0 fix(agc): defer remaining periodic profiling reports 2026-10-05 23:41:18 -03:00
Nicolas Abosch 9c4b4d701c fix(agc): write profiling reports off GPU workers 2026-10-05 23:36:25 -03:00
Dean b10f570189 Merge pull request #787 from NahuelGenchi/fix/agc-host-stage-barriers
fix(agc): include the host stage in barriers that name host accesses
2026-10-06 15:14:58 +13:00
Dean ded277c3ef Merge pull request #779 from NahuelGenchi/fix/pixel-valid-mask-helper-kill
fix(shader): keep helper invocations out of the pixel valid mask kill
2026-10-06 15:14:17 +13:00
Dean 15cc3b7347 Merge pull request #663 from adriadam10/feat/div-omod-scale
fix(shader): apply clamp on v_div_scale_f64 and accept omod on the f32 division steps and v_div_scale
2026-10-06 15:13:36 +13:00
Dean 06cb7b86da Merge pull request #765 from khasinski/fix/f32-source-modifiers-bits
fix(shader): apply f32 abs and neg source modifiers on the sign bit
2026-10-06 15:12:53 +13:00
Akhil MoolaandClaude Sonnet 5.5 be6705e977 feat(libc): export std::_Fiopen as unimplemented
PPSA21564 and PPSA21567 import std::_Fiopen (NID vYWK2Pz8vGE), the only libc
NID the host libc lacks. Without it the executable fails to load against
the host libc when the title's own libc.prx is left out of the guest
conversion, which is how the Linux runs of PPSA21564 avoid the libc.prx
binding crash. The values of the open mode and the meaning of the
protection argument are unknown, so the export throws when called; it was
never called in a 300 s run of PPSA21567.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_014A3UgWDUxE1EeHyVZm6tiN
2026-10-05 20:06:18 -06:00
Nicolas Abosch e5191ebf13 fix(agc): reuse validated raw compute snapshots 2026-10-05 22:52:03 -03:00
Nicolas Abosch 41cd420cc6 feat(agc): support version initialization and raw compute programs 2026-10-05 22:47:38 -03:00
Nicolas Abosch e96e9c18cc fix(relinker): map module name aliases to declared dependencies 2026-10-05 22:47:35 -03:00
Nicolas Abosch bf0ee4019d fix(relinker): bind Windows imports to their declared modules 2026-10-05 22:43:25 -03:00
Nicolas Abosch 7789c0a57b feat(libs): implement homebrew libc and kernel runtime exports 2026-10-05 22:40:16 -03:00
011010 7edf5d2ec2 fix(relinker): derive ZF from the subtraction in ALU execution tests
The cmp-equal execution case computed ZF from the untouched destination operand instead of the comparison result, so the self-check took the failure path and the Windows CI job failed with exit code 8. Derive ZF from the real subtraction for sub/cmp and from the real sum for add.
2026-10-05 19:39:50 -06:00
Chad 89465f122f Merge remote-tracking branch 'upstream/main' into feat/http2-cookie-box
# Conflicts:
#	docs/dev/TechnicalDebt.md
2026-10-05 20:23:49 -05:00
Chad 03afdb55bb Merge remote-tracking branch 'upstream/main' into feat/libkernel-sendmsg-recvmsg
# Conflicts:
#	core/libs/prx/libkernel/Unimplemented.cpp
2026-10-05 20:23:13 -05:00
Chad f2427b1a24 Merge remote-tracking branch 'upstream/main' into feat/agc-driver-resource-queries
# Conflicts:
#	docs/dev/TechnicalDebt.md
2026-10-05 20:22:12 -05:00
ChadandClaude Opus 5.5 8cfe87bd16 build(libSceAgcDriver): register the image_msaa_load test apart from other pending tests
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 20:21:50 -05:00
Chad e18722e499 Merge remote-tracking branch 'upstream/main' into feat/image-msaa-load 2026-10-05 20:20:55 -05:00
ChadandClaude Opus 5.5 ebe0515180 feat(libSceAppContent): answer add-content mounts without installed content
No additional content is installed, so sceAppContentAddcontMount returns
SCE_APP_CONTENT_ERROR_NOT_FOUND with the mount point untouched, and
sceAppContentAddcontUnmount finds no mount to release. A missing label
or mount point is a parameter error. The library gets its own
CMakeLists for the new guest_appcontent test.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 20:19:09 -05:00
ChadandClaude Opus 5.5 5a321471c2 feat(libSceHttp2): implement cookie boxes and requests without a content length
sceHttp2CreateCookieBox hands out an id from the library's handle
counter, sceHttp2SetCookieBox binds one to a template or request, and
sceHttp2CookieFlush succeeds: no request reaches the network, so no
cookie is ever stored. sceHttp2SetRequestNoContentLength is accepted
like sceHttp2SetRequestContentLength. The library gets its own
CMakeLists for the new guest_http2 test.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 20:16:49 -05:00
Dean fe98276fb0 Merge pull request #786 from NahuelGenchi/fix/agc-buffer-int64-atomics-feature
fix(agc): enable shaderBufferInt64Atomics for 64-bit buffer atomics
2026-10-06 14:15:44 +13:00
Dean 6136e52110 Merge pull request #785 from NahuelGenchi/feat/kernel-futimes
feat(libkernel): implement futimes
2026-10-06 14:15:34 +13:00
Dean aa22e43932 Merge pull request #784 from NahuelGenchi/feat/kernel-fchmod
feat(libkernel): implement fchmod and sceKernelFchmod
2026-10-06 14:14:52 +13:00
Dean 901ddfd1f8 Merge pull request #783 from adriadam10/feat/net-resolver-get-error
feat(libSceNet): implement sceNetResolverGetError
2026-10-06 14:14:10 +13:00
ChadandClaude Opus 5.5 a74f282359 feat(libSceIme): report the closed IME panel
sceImeOpen is not implemented, so the IME panel is never open.
sceImeClose, sceImeSetCaret, sceImeSetText and sceImeSetTextGeometry
return SCE_IME_ERROR_NOT_OPENED, checking the panel before their
arguments, as sceImeKeyboardGetInfo does for the keyboard.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 20:14:09 -05:00
Dean 8235eda149 Merge pull request #769 from adriadam10/feat/font-writing-line
feat(font): implement writing lines
2026-10-06 14:13:27 +13:00
Dean b8a98c9502 Merge pull request #582 from CnRJay/feat/agc-predication
feat(agc): implement packet and range predication and the predication sizes
2026-10-06 14:12:46 +13:00
Dean 8afcf7203f Merge pull request #653 from Celegans12/feat/audioout2-12-channel-ports
feat(audioout): implement 12-channel AudioOut2 ports
2026-10-06 14:12:36 +13:00
ChadandClaude Opus 5.5 d4b01b72c0 feat(libkernel): accept PTHREAD_PROCESS_SHARED barrier attributes
The PS5 kernel follows FreeBSD 11, whose libthr accepts process-shared
barriers. Guest code runs in a single process, so a process-shared
barrier synchronises the same threads a private one does; the attribute
is stored and reported back by getpshared.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 20:11:20 -05:00
ChadandClaude Opus 5.5 77550ab731 feat(libkernel): implement sendmsg and recvmsg
Both take the FreeBSD msghdr (48 bytes, iovecs of a pointer and a 64-bit
length) and run on the host sockets: sendmsg gathers the iovecs and sends
through sendto, recvmsg receives into one buffer and scatters it. A
datagram longer than the iovecs is cut and reported with MSG_TRUNC, also
on Windows where recvfrom fails with WSAEMSGSIZE. More than 1024 iovecs
fail with EMSGSIZE. No ancillary data is ever received, so recvmsg
clears msg_controllen; sending control data throws.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 20:10:13 -05:00
ChadandClaude Opus 5.5 5d99f135d7 feat(libSceAgcDriver): answer the resource registration queries
Registration of owners and resources fails with
RESOURCE_REGISTRATION_UNAVAILABLE, so no handle is ever valid: the owner
and resource getters, sceAgcDriverSetResourceUserData,
sceAgcDriverRegisterGdsResource, sceAgcDriverFindResourcesPublic,
sceAgcDriverUnregisterAllResourcesForOwner and
sceAgcDriverGetDefaultOwner return the same error.
sceAgcDriverUnregisterWorkloadStream mirrors the accepting
RegisterWorkloadStream. No capture, trace or submit validation ever runs,
so their status queries report false.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 20:07:28 -05:00
ChadandClaude Opus 5.5 e263402296 feat(shader): implement image_msaa_load
Decode MIMG opcode 0x80 on 2D MSAA and 2D MSAA array images with a
single-bit dmask and return four dwords: the selected component of the
fragment named in the address and the three that follow it. Each fragment
is read with its own image fetch, adding the fragment step to the packed
address dword so a16 layouts keep working.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 19:56:34 -05:00
Celegans12 4b0119426b feat(voiceqos): accept app type 0x10000000 in sceVoiceQoSInit
sceVoiceQoSInit accepted only app type 0x20000000 and threw for every
other value. PPSA26344 v1.008 passes 0x10000000 at both of its call
sites, so its initialization threw.

Accept 0x10000000 as a second known app type. Its meaning is unknown,
so the constant is named after the value, and it is handled like
0x20000000; the block stays unused. A null or empty block, a second
initialization and every other app type still throw.

guest_voice_qos_tests now takes the app type as its argument and runs
in ctest once per accepted value, because sceVoiceQoSEnd still throws
and one process can initialize only once.
2026-10-06 02:42:33 +02:00
Celegans12 e5b7427c75 feat(shader): accept every SDWA selector on v_mov_b32
v_mov_b32_sdwa threw 'VOP1 SDWA destination selector ... is not
supported' when a byte source (src0_sel BYTE_0..3) met a partial
destination (dst_sel BYTE_0..3 or WORD_0/1): the VMovB32 rule allowed
only WORD and DWORD sources there. Every src0_sel, src0_sext, dst_sel
and dst_unused combination is now accepted. Translation already follows
RDNA2 for all of them (applyBitSourceModifiers, writeRawU32): the
selected field is zero- or sign-extended, and the result's low bits go
to the dst_sel field with the other bits zeroed, sign-extended above
and zeroed below, or preserved. Reserved selectors, dst_unused 3, and
neg/abs on sub-dword sources still throw.

agc_driver_sdwa_move_selectors runs all 294 combinations as wave32 and
wave64 on the GPU, plus the in-place byte broadcast under a partial
exec mask, which is not checked on subgroups narrower than 32 lanes,
as in the other EXEC-masked execution tests. agc_vop1_sdwa_move_decode
checks the decoded operands and the reserved encodings.
2026-10-06 02:35:42 +02:00
Dean 9cafa33f94 Merge pull request #658 from NumberGuan/codex/fix-net-inet-ntop-errors
fix(net): report address text buffer errors to the guest
2026-10-06 13:29:03 +13:00
Dean cdb2707ad2 Merge pull request #686 from Pouare514/fix/direct-memory-release-clears-mappings
fix(libkernel): drop direct mappings when physical backing is released
2026-10-06 13:28:21 +13:00
Dean 021e4573ce Merge pull request #668 from ThisIsAkill/fix/agc-emulated-color-compare-main
fix(agc): emulate comparison sampling of color textures in the shader
2026-10-06 13:27:39 +13:00
Dean 489fcdca7e Merge pull request #638 from khasinski/fix/f32-omod-exponent-scale
fix(shader): apply f32 output modifiers on the exponent bits
2026-10-06 13:26:56 +13:00
Dean bd8aa57775 Merge pull request #698 from merwie/fix/relinker-guest-absolute-symbols
fix(relinker): accept absolute symbols in guest modules
2026-10-06 13:19:30 +13:00
Dean 356435fe68 Merge pull request #753 from Celegans12/feat/shader-structurize-loop-early-exit
feat(recompiler): structurize loops whose exits reach different program ends
2026-10-06 13:18:48 +13:00
Dean 3bfa6e4fc4 Merge pull request #764 from Celegans12/feat/agc-dcc-a2r10g10b10-clear
feat(agc): encode the DCC clear codes of A2R10G10B10 color targets
2026-10-06 13:18:06 +13:00
Dean 3e9bcee7b9 Merge pull request #756 from CnRJay/feat/amm-prt
feat(libs): implement the AMM PRT commands
2026-10-06 13:17:24 +13:00
Dean 5cc58621a9 Merge pull request #749 from CnRJay/feat/amm-remap-protect
feat(libs): implement the AMM remap, multimap and protection changes
2026-10-06 13:17:14 +13:00
Dean ece9990d89 Merge pull request #748 from CnRJay/feat/amm-core
feat(libs): implement the AMM map, map direct and unmap commands and the APR map region
2026-10-06 13:16:31 +13:00
Dean 633459b09c Merge pull request #672 from NahuelGenchi/fix/linux-guest-export-namespace
fix(relinker): keep host prx references out of guest modules on Linux
2026-10-06 13:15:49 +13:00
Nahuel Genchi 786178bd4e fix(agc): include the host stage in barriers that name host accesses 2026-10-05 21:01:18 -03:00
Nahuel Genchi e0346f5823 fix(agc): enable shaderBufferInt64Atomics for 64-bit buffer atomics 2026-10-05 20:57:22 -03:00
Celegans12 799aaf5c2f feat(audioout): implement 12-channel AudioOut2 ports
sceAudioOut2PortCreate threw for 12-channel ports, which PPSA26344
creates as its two 7.1.4 float beds (data format 0xc00).

Each accepted layout (1, 2, 6, 8 or 12 channels, float or int16) now
folds into the stereo mix through a coefficient table: centre, side,
back and top front channels at -3 dB, top back channels at -6 dB into
the front, LFE dropped. Zero coefficients are skipped, so NaN or Inf on
a dropped channel does not reach the mix. Ports of 3, 4, 5 or 7
channels, which were mixed as L/R, now throw, as do other counts and
formats with any of bits 12-31 set. The assumed format fields,
channel order and coefficients are listed in TechnicalDebt.

The new audio_out2_port_layouts test checks each layout's fold, float
and int16, and the formats that throw.
2026-10-06 01:54:27 +02:00
Dean cb33f858c0 Merge pull request #766 from Kikoarl/feat/s-scratch-load
feat(shader): implement S_SCRATCH_LOAD_DWORD, S_SCRATCH_LOAD_DWORDX2 and S_SCRATCH_LOAD_DWORDX4
2026-10-06 12:52:17 +13:00