Commit Graph
20967 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 da6ace485f Merge pull request #9995 from StoneDC/feat/pad-irkey-and-virtual-device
test(libScePad): check unsupported Lotus IR and virtual-device exports throw
2026-10-24 07:32:09 +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
Adrià FranchandClaude Sonnet 5.5 de28243d26 fix(libSceAudioOut): clear sceAudioOutGetSystemState reserved fields
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-23 20:31:12 +02: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 542a610220 Merge pull request #8343 from DavidSamir/fix/relinker-windows-page-spanning-relocation
fix(relinker): accept a Windows base relocation that spans into the next page
2026-10-24 07:30:39 +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 12f7e1cd3f Merge pull request #9220 from roboterspinne/claude/new-session-2p8mgt
fix(relinker): reject link-time relocation types in executables
2026-10-24 07:27:45 +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 29896371ed Merge pull request #10072 from xXPBSXx/fix/guest-kqueue-ambient-stdin
test(libkernel): run the guest_kqueue standard input case on a null device
2026-10-24 07:26:08 +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
JJenkx 9092f2bb36 fix(agc): drop stale depth-plane results whose guest memory was unmapped 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
Filip Michalski bd4b30b079 fix(relinker): preserve wrapped EIP-relative GOT accesses 2026-10-23 20:16:52 +02:00
Filip Michalski 2cd0e5e488 fix(relinker): honor EIP-relative addresses in the control-flow graph 2026-10-23 20:16:52 +02:00
Filip Michalski 1e00b460b9 fix(relinker): reject LOCK-prefixed SIMD lowerings 2026-10-23 20:16:51 +02:00
Filip Michalski 62e1d3089c fix(relinker): reject unsupported extended program header counts 2026-10-23 20:16:51 +02:00
Filip Michalski b7aa2a8001 fix(relinker): honor the final REX prefix in call-site loads 2026-10-23 20:16:50 +02: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
milescovielloandClaude Opus 5.5 7333de6aee fix(agc): give a depth stencil copy's layout barrier both aspects
The depth sample reorder copies a D32S8 surface into an image of the
same format. When only depth is reordered, the copy's transition to
GENERAL named the depth aspect alone, which Vulkan does not allow for a
depth/stencil format without separateDepthStencilLayouts
(VUID-VkImageMemoryBarrier-image-03320). The barrier now names both
aspects of a format with stencil, as transitionLocated does; the copy
itself still moves depth only.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 18:11:42 +00:00
milescovielloandClaude Opus 5.5 53949c0775 test(agc): read the sample order tests' depth through a sampled copy
The sample order tests read a reordered depth surface by binding the
surface's own view as a sampled image. A multisampled depth surface that
is sampled through a shadow image is created without
VK_IMAGE_USAGE_SAMPLED_BIT, so that descriptor is invalid
(VUID-VkWriteDescriptorSet-descriptorType-00337). The tests now copy the
depth plane into an image of their own with sampled usage, as the
reorder pass itself does, and read that copy.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 18:11:32 +00:00
Adrià 77ec5cac91 Merge pull request #8432 from orezraey/fix/agc-diagnostic-dirs-wide-env
fix(agc): read capture output directories through the wide environment on Windows
2026-10-23 20:11:28 +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
Adrià d42c9617c8 Merge pull request #8340 from milescoviello/fix/share-identical-specialized-spirv
fix(shader): share the words of identical specialized modules
2026-10-23 20:08:22 +02:00
Yossi Yadgar d57411e9fe docs(debt): record the libSceGnmDriverForNeoMode shader packets, workloads and queries 2026-10-23 21:00:56 +03:00
Yossi Yadgar 762d6d9d23 test(libSceGnmDriverForNeoMode): check the shader register packets, workloads and queries 2026-10-23 21:00:49 +03:00
Yossi Yadgar f9def65d7d feat(libSceGnmDriverForNeoMode): report the Neo GPU clock and the off-chip tessellation buffer size 2026-10-23 21:00:49 +03:00
Yossi Yadgar b413842336 feat(libSceGnmDriverForNeoMode): create, begin and end workloads 2026-10-23 21:00:49 +03:00
Yossi Yadgar 376e95298f feat(libSceGnmDriverForNeoMode): set the CS shader registers with a modifier 2026-10-23 21:00:49 +03:00
Yossi Yadgar 53b7e74be1 feat(libSceGnmDriverForNeoMode): update the GS and HS shader registers 2026-10-23 21:00:49 +03:00
Yossi Yadgar c16e53f69a feat(libSceGnmDriverForNeoMode): update and set the PS shader registers 2026-10-23 21:00:49 +03:00
Yossi Yadgar c9d5bafd0f feat(libSceGnmDriverForNeoMode): update the VS shader registers 2026-10-23 21:00:41 +03:00
Adrià 65ac1d3b50 Merge pull request #8372 from JJenkx/fix/agc-verify-refreshed-stage-data
fix(agc): verify refreshed draw stage data
2026-10-23 19:59:09 +02:00