Commit Graph
8546 Commits
Author SHA1 Message Date
Adrià FranchandClaude Sonnet 5.5 96c692c887 test(agc): expect 32-bit buffer atomics off a DWORD boundary to act on their containing dword
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-18 17:54:44 +02:00
Nahid DelicandClaude Opus 5.5 7e4ce1ab3d fix(shader): act on the containing dword for unaligned 32-bit buffer atomics
The RDNA2 ISA (8.1.7) ignores the two low address bits of dword or wider
non-formatted accesses in alignment mode DWORD. MXGP 26 (PPSA30839) sets
bits with buffer_atomic_or at odd byte offsets, which recorded an
unaligned BDA fault and dropped the atomic. A 32-bit buffer atomic now
acts on the dword that holds its address; 64-bit atomics off an 8-byte
boundary still fault.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 17:54:44 +02:00
Adrià 81cb863394 Merge pull request #6061 from wachi35676/fix/libc-drive-component-under-mount
fix(libc): keep a drive-letter component of a guest path under its mount on Windows
2026-10-18 17:51:46 +02:00
ps54allandClaude Opus 5.5 8545c23013 feat(shader): sample converted unorm images in the shader
10_11_11_UNORM (format 30) images are read and written through an
R32_UINT view, so the hardware sampler cannot filter them. image_sample
of a 2D or 2D array view now fetches the one or four texels at LOD 0,
decodes them and blends them in the shader, with bilinear weights on
the 8-bit grid, for point or bilinear filtering with wrap or
clamp-to-edge addressing.

A shader gets the converted sample mode only after a converted
descriptor reaches one of its sampled images: that capture throws
ConvertedSampleRequired and the driver prepares the program again
with GuestContext::convertedSamples.

The R10_G11_B11 float format is sampled natively since #7271 and keeps
its refusal on the converted path.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 17:43:35 +02:00
Adrià a0f3dc4014 Merge pull request #6091 from Ondra97/codex/fix-cond-canceled-signal
fix(libkernel): preserve condition signals across cancellation
2026-10-18 17:33:22 +02:00
Yunus Shaikh 71de590bd4 Merge main into fix/agc-sample-location-grid-exact 2026-10-18 08:29:13 -07:00
Adrià 9b6837704f Merge pull request #6014 from SandstromPL/fix/agc-msaa-enable-clear-depth-target
fix(agc): rasterize a multisampled depth target without MSAA_ENABLE at the pixel center
2026-10-18 17:26:06 +02:00
Adrià 4ed044d51c Merge pull request #6012 from EagleBearerYS/feat/videoout-performance-overlay
feat(agc,videoout): show an optional performance overlay with F10
2026-10-18 17:26:01 +02:00
Leonardo Feitosa 96770813c3 fix(agc): track DCC storage images with more than one mip as one unit 2026-10-18 12:25:46 -03:00
bl4nkTHEBUNKER 15af4e3fa7 feat(libSceSystemGesture): report primitive touch events from the pad reports
sceSystemGestureUpdatePrimitiveTouchRecognizer reads the pad reports the title
passes in and tracks every touch as a primitive, so the primitive event queries
report begin, active and end events with their pressed and current positions,
delta vector, delta time and elapsed time instead of reporting that no touch
input exists. sceSystemGestureGetPrimitiveTouchEventByPrimitiveID no longer
throws for a tracked touch.
2026-10-18 17:08:43 +02:00
Adrià 50fafac3d8 Merge pull request #5993 from Get-fix/ps4/param-sfo
feat(libkernel): read param.sfo when param.json is absent
2026-10-18 16:50:34 +02:00
Adrià 2da44a1873 Merge pull request #5918 from karimibrahim07/fix/libkernel-adopted-stack
fix(libkernel): report the precommitted stack of an adopted thread on Windows
2026-10-18 16:50:30 +02:00
Adrià e00260b6b3 Merge pull request #5994 from Get-fix/ps4/sce-module-code-extent
fix(relinker): stop module syscall scans at the PLT and skip the PS4 loader path
2026-10-18 16:45:24 +02:00
Karim Ibrahim 267cb56a0d fix(libkernel): report the precommitted stack of an adopted thread on Windows
An adopted thread (the main thread, or a host thread that calls
scePthreadSelf) reported its whole Windows stack reservation, and so
did sceKernelIsStack on a host thread before adoption. A relinked
executable reserves 0x210000 bytes for its main thread and commits the
top 0x200000, so the lowest 64 KiB of the reported stack hold only
reserved pages and Windows' guard pages. mprotect fails there, so
HotSpot in Java 25 LAN / DNS (PPSA99869) could not create the main
thread's stack guard pages ("Attempt to allocate stack guard pages
failed").

When everything above the bottom allocation granule is committed
read-write, the host stack is now reported from there, as created
guest threads report only their committed stack. Other host stacks
keep the whole range. The committed-pages walk is shared with
StartNativeThread and throws when VirtualQuery fails.
2026-10-18 16:24:10 +02:00
slopggobblercobbler81 0029bddb55 fix(libSceAppContent): return NOT_MOUNTED for invalid download mount point
Return SCE_APP_CONTENT_ERROR_NOT_MOUNTED instead of throwing APS5_INVALID_ARG_EX when a mount point other than /download0 is passed to sceAppContentDownloadDataFormat or sceAppContentDownloadDataGetAvailableSpaceKb, aligning with sceAppContentTemporaryDataFormat. Check null mount_point in sceAppContentDownloadDataGetAvailableSpaceKb with SCE_APP_CONTENT_ERROR_PARAMETER.
2026-10-18 16:12:23 +02:00
ionut27001andClaude Opus 5.5 213a741eb2 fix(libkernel): match inet_ntop and inet_pton padding and null pointers as measured on a PS5
Measured from a payload process on a PS5 (firmware 12.70), where
__inet_ntop/__inet_pton and the plain inet_ntop/inet_pton exports
resolve to the same functions:
- inet_ntop follows an AF_INET6 result with zero bytes up to size (sizes
  4 to 65536 sampled) and never writes past size; AF_INET writes only the
  text and its NUL.
- An unsupported family returns EAFNOSUPPORT first, even with null
  pointers.
- A null source or text raises SIGSEGV during the call, before the size
  is checked; here it throws instead of returning EFAULT.
- A null destination is reached only after the size check and the text
  parse: ENOSPC for a size that is too small, 0 for text that does not
  parse, and SIGSEGV (a throw here) otherwise.
The test pins the measured inet_pton and inet_ntop rows, including all
inputs the existing assertions use. The text-form debt entry is replaced
by one that records what a payload process measured (the text forms, the
order of the checks and the padding) and what is still assumed: the
sizes that were not sampled, sizes above 65536, and a title process.
inet_ntoa_r calls __inet_ntop, so a null inet_ntoa_r buffer with room
for the text now throws, and a null buffer that is too small sets ENOSPC
instead of EFAULT; the libSceLibcInternal debt entry says so.

AI-assisted: yes

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 17:02:40 +03:00
Slick Daddy 536fef3228 fix(libc): format %p the way the console's libc does
The console's libSceLibcInternal.sprx (measured on firmware 12.70 in
#7549) prints %p as bare lowercase hex without a 0x prefix, prints 0 for
a null pointer, ignores #, + and the space flag, counts only the digits
towards the width, pads with spaces on the left (on the right for - and
with zeros for 0 when there is no precision), treats the precision as
the minimum number of digits, prints nothing for a null pointer under
%.0p, and accepts the l length. FormatPointer instead followed FreeBSD
and printed 0x..., which is what a title does not see on hardware.

FormatPointer now prints the digits alone, the narrow Windows formatter
accepts %lp, and Linux routes %p and %lp to the guest formatter instead
of glibc, which prints the FreeBSD form and (nil) for a null pointer.
The wide family still refuses %lp, because the console's swprintf was
not measured with it; it returns -1 as it does for any other conversion
the formatter rejects. The debt note records the pointer cases the
console was not measured with and what the Linux routing means for a
format that mixes %p with a refused conversion.
2026-10-18 16:59:34 +03:00
mrfelekandClaude Opus 5.5 5e0deae1f4 docs(libSceNgs2): note that a setup inside the voice callback clears it
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BywPXoZACVi8ALV4JKvuPZ
2026-10-18 15:56:37 +02:00
Dean a62c724c38 Merge pull request #6135 from DavidSamir/fix/videoout-cursor-exports
feat(libSceVideoOut): export the hardware cursor functions as not implemented
2026-10-19 02:54:55 +13:00
Dean 6bef39cb44 Merge pull request #6122 from fdfawef324/claude/mc-agc-event-write-streamout
feat(agc): accept SAMPLE_STREAMOUTSTATS events without a destination in EVENT_WRITE
2026-10-19 02:54:48 +13:00
capmare 8489e74f89 docs(libSceFontFt): pin the shadPS4 link to a commit 2026-10-18 15:29:08 +02:00
Maz e79cf0f754 fix(libkernel): stop O_NOFOLLOW from opening a Windows directory junction
lstat reports the junction as a symbolic link, but open with O_NOFOLLOW still opened the target.
2026-10-18 17:19:02 +04:00
mugurc f347461351 feat(libSceSystemService): LoadExec on macOS hosts
sceSystemServiceLoadExec found its own executable through /proc/self/exe
and replaced the process with fexecve after close_range, none of which
macOS has, so on macOS every call except "exit" threw. On macOS:

- the running executable's path comes from _NSGetExecutablePath, resolved
  with std::filesystem::canonical, as libSceNpEntitlementAccess and
  libSceFont already do;
- the target must be an x86-64 Mach-O executable (MH_MAGIC_64,
  CPU_TYPE_X86_64, MH_EXECUTE) that the user may run;
- macOS has no fexecve, so the process is replaced by path with
  posix_spawn and POSIX_SPAWN_SETEXEC; POSIX_SPAWN_CLOEXEC_DEFAULT closes
  every descriptor but the standard streams, as close_range does on Linux;
- before the replacement the exit starts and the shutdown callbacks run
  (LibcStartExit, then LibcRunShutdown), as on Linux, so guest threads
  that call a stopped library wait instead of unwinding;
- descriptor 2 gets the host standard error back before the replacement,
  as on Linux, and guest_system_load_exec_standard_error runs on macOS.

A launch without arguments keeps the Linux execv path, which macOS has.
guest_system_exit finds its own executable the same way on macOS.
2026-10-18 16:05:07 +03:00
Dean 385ed71f2c Merge pull request #7368 from CrimsonMac/fix/device-lds-mixed-width-atomics
fix(shader): use 64-bit buffer atomics for device-memory LDS
2026-10-19 01:51:59 +13:00
Adrià FranchandClaude afe2141a7c ci(pages): deploy only when the site or the progress changes
Co-Authored-By: Claude <[email protected]>
2026-10-18 14:40:02 +02:00
lakhantheboss a605f94732 fix(savedata): return parameter error on null arguments in setParam 2026-10-18 18:06:26 +05:30
Dean Galvin bb2ab91841 Merge branch 'main' into 6445 2026-10-19 01:25:59 +13:00
milescovielloandClaude Opus 5.5 91a9e5608e docs(libkernel): note the FIONREAD count of a host datagram socket
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 12:22:56 +00:00
Dean 6efb7261b5 Merge pull request #7140 from AlexOfTheForest/fix/listen-backlog-data
fix(libkernel): report the accept queue length for a listening socket's read event
2026-10-19 01:21:56 +13:00
Dean dce6a3ed4e Merge pull request #6492 from Pipodi/fix/resource-cache-released-textures
fix(agc): drop resource-cache entries that hold released sampled textures
2026-10-19 01:21:52 +13:00
aspct3434andClaude Opus 5.5 2a45c85ac1 feat(libc): scan %p in swscanf and swscanf_s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 16:16:16 +04:00
Yunus Shaikh ca7ea10d30 docs(environment): add the rows for the performance overlay switches 2026-10-18 05:09:14 -07:00
Yunus Shaikh 790fe18183 docs(environment): add the rows for the image table reuse switches 2026-10-18 05:07:16 -07:00
Yunus Shaikh 54f2cf31b1 Merge main into perf/shader-image-table-reuse-v3-pr 2026-10-18 05:06:50 -07:00
Romans Pokrovskis 28a4397434 docs(dev): correct periodic trace summary interval units 2026-10-18 15:06:20 +03:00
Dean 0d078f75d3 Merge pull request #7089 from pushkarreddyy/fix/agc-driver-buffer-descriptor-reserved-bit
fix(libSceAgcDriver): normalize reserved bit 30 in guest buffer descriptors
2026-10-19 00:51:55 +13:00
Alex ColliniandClaude Sonnet 5.5 7b3098714e docs(agc): keep the title name out of the released-textures debt entry
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-18 13:42:27 +02:00
Alexej Szpevák b40e0bfb80 fix(libkernel): report the accept queue length for a listening socket's read event
A read event on a listening socket took its data from FIONREAD, which a listening socket refuses on Linux, so kevent and sceKernelAddReadEvent reported 0 connections while saying one was ready. FreeBSD 11.4 gives a listening socket filt_solisten, which reports so_qlen, the completed connections waiting for accept. Ready now checks SO_ACCEPTCONN and on Linux reads a TCP listener's accept backlog from TCP_INFO, where tcp_get_info puts it in tcpi_unacked; with no host call for the count (Windows, macOS, a listener that is not TCP) it reports 1, the lower bound the readiness already implies.
2026-10-18 13:35:15 +02:00
Yunus Shaikh 364fb665c1 docs(shader): note that selected image-table records merge past the image and pair limits 2026-10-18 04:33:39 -07:00
Dextroid17 c81cfce7cf docs(environment): say APS5_SRGB_SHADER_DECODE=copy samples 8 and 8_8 sRGB through the copy 2026-10-18 07:27:41 -04:00
Dextroid17 192a37d026 test(agc): force the sRGB sample copy with APS5_SRGB_SHADER_DECODE=copy 2026-10-18 07:27:15 -04:00
Dextroid17 97354b7fd1 docs(debt): sRGB 8 and 8_8 textures read an RGBA8 sRGB copy 2026-10-18 07:27:15 -04:00
Lberonio 9de7cfd9f4 docs(agc): clarify flip latch clearing condition 2026-10-18 14:26:35 +03:00
Scramblrrrr 0a7cb2fca1 docs(videoout): list the SDR environment override 2026-10-18 08:18:22 -03:00
Scramblrrrr 482894b0dc Merge remote-tracking branch 'origin/main' into codex/videoout-force-sdr-main 2026-10-18 08:17:45 -03:00
Dean 3e3e8b9050 Merge pull request #7374 from thuanquang/fix/mesh-last-provoking-vertex
fix(agc): draw geometry programs with the last provoking vertex
2026-10-19 00:13:37 +13:00
Dean 721f29c7e1 Merge pull request #7487 from DavidSamir/fix/shader-barycentric-tessellation-clip-moltenvk
fix(shader): keep clip distances in the blocks between the barycentric tessellation stages
2026-10-19 00:13:33 +13:00
Dean 7a2e4a4e7f Merge pull request #7476 from EagleBearerYS/fix/agc-settle-rewatch-live-images
fix(agc): keep a settled import compared while a storage image overlaps it
2026-10-19 00:13:29 +13:00
Dean f55ccad7c9 Merge pull request #6078 from 011010/feat/env-reference
feat(tools): add the APS5_* and ANYPS5_* environment reference and check it
2026-10-19 00:12:57 +13:00
pushkarreddyy c3c400a6f8 fix(libSceAgcDriver): normalize reserved bit 30 in guest buffer descriptors 2026-10-18 16:38:59 +05:30