Commit Graph
7981 Commits
Author SHA1 Message Date
orezraeyandClaude Opus 5.5 2d33e51c45 fix(libScePad): answer scePadOpen's user, index and port checks as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 15:58:45 -03:00
Claude 24bbc6d5f8 fix(libSceLibreSsl): leave the AES key untouched when key setup fails
AES_set_encrypt_key zeroed the whole schedule and set rounds before it
checked the key length, so a refused call changed the AES_KEY. As in
LibreSSL 2.5.4's aes_core.c, it now returns -1 or -2 before writing
anything and writes only the 44, 52 or 60 words the key length needs.

The test fills the key with a sentinel and checks, for both setup
functions, that refused calls leave all 244 bytes unchanged, that
AES-128 and AES-192 keep the 16 and 8 unused words, and that every
written word matches the FIPS-197 appendix A schedules and the
decryption schedules computed independently and with OpenSSL 3.0.13.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-23 18:56:08 +00:00
ntamas94andClaude Opus 5.5 d44c823834 feat(libSceJson2): implement sce::Json::Array::operator=
Copy the source array into this and return this, as the console does
(measured on a PS4 Pro, firmware 10.71). Knowledge is Power: Decades
imports it; the inventory stub threw NotImplemented.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 20:53:04 +02:00
HQasperandClaude Opus 5.5 c17591d425 feat(libSceLibreSsl): implement the low-level AES functions
AES_set_encrypt_key, AES_set_decrypt_key, AES_encrypt, AES_decrypt,
AES_ecb_encrypt, AES_cbc_encrypt, AES_cfb128_encrypt and
AES_ctr128_encrypt threw. They now follow LibreSSL's aes.h and its CBC,
CFB-128 and CTR mode code on the caller's 244-byte AES_KEY: key setup
returns -1 for null arguments and -2 for a key length other than 128,
192 or 256 bits, CBC pads a partial final block with the IV and writes
the whole block, CFB and CTR resume from *num, and the CTR counter
carries across all 128 bits.

The test checks the FIPS-197 appendix A and C vectors and the SP 800-38A
CBC, CFB-128 and CTR vectors, split across calls, in place and with
partial blocks.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-23 18:48:20 +00:00
Adrià 1e1ab77684 Merge pull request #8495 from yabanana/fix/borrowed-memory-regions
fix(shader): reject temporary owners for borrowed memory regions
2026-10-23 20:47:29 +02:00
thuanquangandClaude b6b5b80374 docs(shader): say that the f32 compares do not throw in f32 denormal modes 1 and 2
Co-Authored-By: Claude <[email protected]>
2026-10-24 01:45:52 +07:00
orezraeyandClaude Opus 5.5 dd27146c27 fix(libkernel): keep the TCP flag and IP receive options a PS5 accepts
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 15:45:11 -03:00
thuanquangandClaude 2e874e6a4b docs(debt): say that a raw compute program takes the live RSRC1 float mode
Co-Authored-By: Claude <[email protected]>
2026-10-24 01:44:52 +07:00
thuanquangandClaude f9b5b9767c docs(shader): drop the stale lavapipe skip from the 16-bit interpolation entry
Co-Authored-By: Claude <[email protected]>
2026-10-24 01:44:22 +07:00
thuanquangandClaude 3a8199606a docs(debt): say when agc_driver_f64_fma_subnormals skips
Co-Authored-By: Claude <[email protected]>
2026-10-24 01:44:20 +07:00
thuanquangandClaude 92579f545a docs(debt): correct two stale f64 denormal statements
The shader float mode entry said "Other f64 arithmetic does not model
these denormal controls". On main, v_add_f64, v_mul_f64, v_floor_f64,
v_ceil_f64, v_fract_f64, v_frexp_mant_f64, v_frexp_exp_i32_f64,
v_div_fixup_f64, the f64 compares and ds_min/max/cmpst_f64 read the
f16/f64 denormal field, and each has its own entry. The sentence now
names the f64 arithmetic whose translation still does not read it.

The v_floor_f64 entry said its modifier run used 16 of the 23 measured
values. The run's list holds 13 of them plus -1.5, 2.75 and 1 - 2^-53.

Co-Authored-By: Claude <[email protected]>
2026-10-24 01:43:29 +07:00
orezraeyandClaude Opus 5.5 062dc00385 fix(libkernel): join and leave multicast groups as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 15:38:52 -03:00
orezraeyandClaude Opus 5.5 802bcc8d61 fix(libkernel): share a port between SO_REUSEPORT sockets on the host
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 15:38:45 -03:00
Adrià 606999f3ab Merge pull request #7937 from DavidSamir/feat/libkernel-jit-shared-memory-macos
feat(libkernel): JIT shared memory on macOS hosts
2026-10-23 20:37:27 +02:00
JJenkx f4c543528e fix(agc): preserve pending depth for readable protected planes 2026-10-23 14:37:09 -04:00
orezraeyandClaude Opus 5.5 4aaa0dbf38 docs(libkernel): record that the other flexible map flags are accepted here
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 15:35:45 -03:00
Muhammad Wasif Ali WasifandClaude Opus 5.5 98df163cc6 fix(shader): widen LDS atomic fences to device scope on AMD's proprietary driver
The recompiler orders an LDS atomic, and the compare-exchange loop that
writes a byte or a halfword of LDS (ds_write_b8/b16), with a
workgroup-scope OpMemoryBarrier after the update. AMD's proprietary
Windows driver 32.0.21042.62 (Radeon 0x13c0, RDNA 2) compiles that
memory barrier to s_barrier, as the code objects in its pipeline cache
show. Such updates usually sit in branches that only some waves of a
workgroup take, so those waves execute extra s_barriers, which pair
with the other waves' barriers, and the other waves read LDS before it
is written. An OpMemoryBarrier is not an execution barrier and SPIR-V
allows it in non-uniform control flow, so the SPIR-V is valid; a
device-scope OpMemoryBarrier compiles to GL0 and GL1 cache
invalidations without s_barrier there.

PS5LM Plus (PPSA99581, llama.cpp's Vulkan backend) drifted into
garbage on that driver with flash attention on. Its flash-attention
shader stores two halfwords to LDS in a branch that two of its four
waves take, inside the KV loop. The driver's code had 23 s_barrier for
the guest's 21; a replay of the dispatch differed from NVIDIA in 159
words, up to 1.7e38, and now has 21 and differs only in the last bit
of 9 words.

On that driver the fence is now device scope, which orders everything
the workgroup-scope fence did. Other drivers keep the workgroup scope.
The flag is part of the shader cache key, and agc_shader_replay takes
--device-scope-lds-memory-barriers to replay a request the way that
driver compiles it. The LDS update helper already fences, so the
second, identical fence after it in ds_min/max_f32 and the other
read-modify-write LDS operations is dropped.

agc_driver_lds_subword_store_branch stores a halfword to LDS in a
branch that waves 0-1 of four take, delays those waves and then
exchanges LDS slots across one s_barrier. Before, thread 64 read a
stale slot on the AMD driver; it passes on AMD and NVIDIA now.
agc_subgroup_barrier checks the driver quirk and that ds_write_b16,
ds_add_u32 and ds_max_f32 each emit one fence of the expected scope.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BM2kfDbr6MydxsfTckZJDR
2026-10-23 20:34:25 +02:00
Dean 7970ffbd08 Merge pull request #8910 from DoubleAAGuy/fix/libkernel-unknown-sysctl-enoent
fix(libkernel): return ENOENT for unknown sysctl names
2026-10-24 07:33:30 +13:00
Rookie c345ed42d2 feat(libSceCesCs): add the strict JIS X 0208 EUC-JP and Shift-JIS profiles
Implement sceCesUcsProfileInitEucJpX0208, sceCesUcsProfileInitEucJpX0208Ss2,
sceCesUcsProfileInitEucJpX0208Ss2Ss3 and sceCesUcsProfileInitSJis1997X0208.
The JIS X 0208 table is JIS0208.TXT, derived from the CP932 table without
rows 13 and 89-92 and with six cells changed. The EUC-JP variants add SS2
half-width katakana and SS3 JIS X 0212 as their names say. Cell 0x2140 and
the Shift-JIS single bytes 0x5C and 0x7E, where the sources disagree, throw.
2026-10-23 19:33:21 +01:00
Dean 0bf13e4bb9 Merge pull request #8631 from ntamas94/fix/rtc-ps4-limits
fix(libSceRtc): handle out-of-range time values as the PS4 does
2026-10-24 07:33:07 +13:00
Dean 278ec2d356 Merge pull request #8279 from mugurc/fix/libs-macos-build-main
fix(libs): build getifaddrs and two tests on macOS hosts
2026-10-24 07:31:38 +13:00
hugodearaujo 7b19b87f27 fix(libSceNgs2.native): accept a reverb voice with different input and output channel counts 2026-10-23 15:31:33 -03:00
Benjamin Cortez b0b7198b7a feat(libSceAudioOut): implement sceAudioOutGetSystemState 2026-10-23 20:31:12 +02:00
Dean 9e91d6bf61 Merge pull request #8546 from Retr0G28/fix/tzname-no-dst
fix(libc): leave tzname[1] as three spaces for a zone without daylight saving time
2026-10-24 07:31:04 +13:00
Dean 216e9a6f98 Merge pull request #9290 from thuanquang/fix/wcsncat-s-overlap-console-rule
fix(libc): reject a wcsncat_s copy only when its written and read ranges overlap
2026-10-24 07:29:30 +13:00
Dean ec5b89a5ec Merge pull request #9041 from HQasper/claude/project-thread-w0s18y-rand
feat(libSceLibreSsl): implement RAND and the CRYPTO allocator functions
2026-10-24 07:28:27 +13:00
Dean 2e5a125982 Merge pull request #9777 from JJenkx/windows/libc-atanf-msun
fix(libc): compute atanf with FreeBSD msun's algorithm, as titles' libc.prx does
2026-10-24 07:27:14 +13:00
Dean 98f6092ef0 Merge pull request #9107 from jacob6769/feat/ces-korean-big5-scalars
feat(libSceCesCs): implement the EUC-KR, UHC and Big5 scalar conversions
2026-10-24 07:26:39 +13:00
Dean f59f545b8a Merge pull request #8284 from mugurc/fix/tests-path-length-macos
fix(tests): skip the 1023-byte guest path check on macOS hosts
2026-10-24 07:25:45 +13:00
Dean b5329ade0d Merge pull request #9896 from savvaniss/feat/np-cusa03312-imports
feat(np): answer and declare the PS4 NP and trophy imports of CUSA03312
2026-10-24 07:25:12 +13:00
orezraeyandClaude Opus 5.5 1cf109240f fix(libkernel): check a sendto address length before its family as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 15:24:31 -03:00
Sam 61711fe10f Merge remote-tracking branch 'origin/main' into fix/agc-capture-skip-float-probe
# Conflicts:
#	core/libs/prx/libSceAgcDriver/Execution/src/VulkanDevice.cpp
2026-10-23 20:24:13 +02:00
orezraeyandClaude Opus 5.5 5d84d22c3c docs(libkernel): say which flexible map call the other flags were tried on
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 15:22:21 -03:00
JJenkx c13f8b94c1 test(agc): flush a stale depth plane whose guest memory is not mapped 2026-10-23 14:21:24 -04:00
thuanquangandClaude 016ee49f30 docs(agc): name the 10_11_11 and 2_10_10_10 variants that FORCE_DEGAMMA leaves unchanged
Co-Authored-By: Claude <[email protected]>
2026-10-24 01:20:27 +07:00
orezraeyandClaude Opus 5.5 122541c7a8 fix(libkernel): keep the SOL_SOCKET flags a PS5 accepts
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 15:20:17 -03:00
orezraeyandClaude Opus 5.5 29f717c607 fix(libkernel): keep TCP_MAXSEG and the TCP keepalive options as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 15:20:16 -03:00
orezraeyandClaude Opus 5.5 b776394b4f fix(libkernel): keep IP_TTL, IP_TOS and the multicast options as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 15:20:03 -03:00
orezraeyandClaude Opus 5.5 d8d03c2839 fix(libkernel): give the host the requested socket buffer and test the inherited sizes
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 15:16:09 -03:00
orezraeyandClaude Opus 5.5 9afaeff204 fix(libkernel): answer a zero-length recvmsg on an empty datagram socket
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 15:14:09 -03:00
Adrià a19e7f6fdc Merge pull request #7888 from mazen320/fix/pixel-function-lds-buffer
fix(shader): keep an unbounded pixel LDS array in a storage buffer
2026-10-23 20:12:31 +02:00
Adrià d2e42c334d Merge pull request #8429 from milescoviello/fix/fmask-narrow-formats
fix(agc): read FMASK of up to 8 samples in every storage width
2026-10-23 20:08:28 +02:00
Yossi Yadgar d57411e9fe docs(debt): record the libSceGnmDriverForNeoMode shader packets, workloads and queries 2026-10-23 21:00:56 +03:00
Adrià de0854b644 Merge pull request #8261 from thuanquang/fix/force-degamma-snorm-srgb-view
fix(agc): sample 8-bit SNORM textures through FORCE_DEGAMMA as their sRGB format
2026-10-23 19:57:15 +02:00
ntamas94andClaude Opus 5.5 8305168f39 fix(libc): answer strerror as the titles' libc.prx does
The libc.prx that PS4 titles ship (measured for CUSA04865 and CUSA12435 on a
PS4 Pro, firmware 10.71) names 0 "No error", 1 to 94 with the FreeBSD texts
(30 is "Read-only filesystem"), answers every other number, 95 and 96
included, with "error_code=0x%08x", and leaves errno alone. AnyPS5 returned
"No error: 0", named 95 and 96, answered "Unknown error: %d" and set errno
to 22. strerror_r and perror keep their wording; only the shared EROFS text
changes for them.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 19:19:40 +02:00
Adrià 4883171f9f Merge pull request #8283 from milescoviello/fix/msaa-dcc-cmask-fmask-only
fix(agc): leave a multisampled DCC target's CMASK unchecked without fast clears
2026-10-23 19:16:32 +02:00
Adrià e248d3ab24 Merge pull request #8180 from ntamas94/fix/agc-copied-writer-label-drain
fix(agc): store a label behind pending copied write-backs without draining
2026-10-23 19:16:19 +02:00
orezraeyandClaude Opus 5.5 3c943eb74c docs(libkernel): record select limits as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 14:14:51 -03:00
orezraeyandClaude Opus 5.5 a537c33096 fix(libkernel): answer zero-length datagram receives and recvmsg flags as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 14:09:47 -03:00
Adrià f57e4ef720 Merge pull request #8339 from DavidSamir/feat/agc-barycentric-rect-list
feat(agc): emulate barycentrics in rect-list draws
2026-10-23 19:01:47 +02:00