Commit Graph
7413 Commits
Author SHA1 Message Date
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
orezraeyandClaude Opus 5.5 4710aa2ac4 docs(libkernel): record flexible memory flag 0x8000 as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 13:54:48 -03:00
Maz 761af3c839 fix(shader): keep the pixel LDS debt note under the length limit 2026-10-23 20:53:28 +04:00
Maz 9ef24b1660 fix(shader): keep the pixel LDS debt note under the length limit 2026-10-23 20:53:27 +04:00
Maz aa77a5ba98 fix(shader): prefer device-local host-visible pixel LDS memory
Keep the NVIDIA-only pool mappable for the sticky overflow header while
preferring a device-local host-visible type when the driver exposes one.
2026-10-23 20:53:25 +04:00
Maz 40c7ff888c fix(shader): scale pixel LDS Function threshold by SM budget
Max measured a 4 GiB private-memory ceiling on a 4090; use
VK_NV_shader_sm_builtins so denser cards take the buffer path below 4096.
2026-10-23 20:53:24 +04:00
Maz 641a0a4173 fix(shader): check pixel LDS overflow when presents retire
Exhausted subgroups share slot 0 until the sticky flag is read; check it on present retire as well as WaitIdle, and cover two draws into one target.
2026-10-23 20:53:23 +04:00
mazen dba7f5466c fix(shader): keep a pixel LDS overflow until the GPU is idle
The slot counter is reset only after earlier fragment writes, and the overflow flag stays until WaitIdle. The storage buffer is limited to NVIDIA's proprietary driver, which is where the large function array does not finish.
2026-10-23 20:53:21 +04:00
mazen 287b149950 fix(shader): keep an unbounded pixel LDS array in a storage buffer
A Function array of 8192 dwords faults NVIDIA driver 617.42. The guest array stays that size, and each invocation gets its own region in a buffer.
2026-10-23 20:52:46 +04:00
orezraeyandClaude Opus 5.5 f334c156e1 fix(libkernel): keep socket buffer sizes and SO_NBIO as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 13:49:03 -03:00
Adrià b066e5cb77 Merge pull request #8145 from TheSovietWaffle/fix/recompiler-stencil-replay-readonly-bda
fix(recompiler): replay stencil exports of pixel shaders that only read through BDA
2026-10-23 18:46:24 +02:00
Adrià 0940da2424 Merge pull request #8070 from thuanquang/fix/table-call-wide-descriptor
fix(shader): link a table call whose V# is a slice of an s_load_dwordx8 or s_load_dwordx16
2026-10-23 18:40:11 +02:00
Adrià dd02cbf6f9 Merge pull request #8055 from thuanquang/fix/float-atomic-flush
fix(shader): flush the operands of image, buffer and global float atomics
2026-10-23 18:38:11 +02:00
milescovielloandClaude Opus 5.5 ad6a55121e fix(agc): read FMASK of up to 8 samples in every storage width
Since the synthetic FMASK mode was removed, a direct FMASK load reads
the stored word and only Fmask32_S8_F8 is accepted. A load from any
other FMASK format of up to 8 samples now reads the 8-, 16- or 32-bit
surface and expands it in the shader to 4 bits per sample, an index
past the fragment count reading 8 (unknown). One runtime image mode
handles every such format, reading the format from the descriptor at
run time or from a specialization constant.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 16:34:33 +00:00
orezraeyandClaude Opus 5.5 2aaf519eb7 fix(libkernel): check socket address families and lengths as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 13:30:58 -03:00
Adrià Franch d73dff01b6 Merge upstream/main into fix/agc-semaphore-memory-firmware 2026-10-23 18:30:57 +02:00
Hermes Agent a05ea75447 docs(libkernel): clarify unknown sysctl lookup behavior 2026-10-23 12:27:31 -04:00