Commit Graph
12196 Commits
Author SHA1 Message Date
Aryan Sharma 5786a96283 fix(pad): report a press that ends before the next pad read
scePadReadState only returned the latest input, so a tap that began and ended between two reads was never reported. Latch the pressed buttons when input is published and fold them into the next ReadState.
2026-10-17 16:08:10 +05:30
Jan ŠléglandClaude Fable 5.1 39c23664bd fix(agc): let the storage image cache budget follow the heap's use like the sampled one
StorageTextureBudget gave the storage image cache a quarter of the VK_EXT_memory_budget
budget of the largest device-local heap (capped at TextureCacheBudget, never below 512 MiB)
whatever else the heap held, while SampledTextureBudget takes what that budget leaves after
the heap's other use. On a 10 GB card the storage cache kept 2024-2170 MiB into a level load
whose depth and render target allocations then failed with VK_ERROR_OUT_OF_DEVICE_MEMORY
with the heap at its reported budget where a run logged it.

The storage image budget is now what the reported budget leaves after the heap's use other
than the cached storage images, the unused part of the sampled textures' 2 GiB floor and an
eighth of the budget; the caps at a quarter of the budget and at TextureCacheBudget and the
512 MiB floor stay. The sampled budget still reserves TextureCacheBudget for the storage
cache, at least the storage cap, and the storage budget reserves the sampled textures alive,
so neither counts bytes the other may take; while the sampled textures alive stay within
their floor the sampled budget falls first, then the storage budget, and above it both fall
together. The budget line also prints when the storage image budget moves by more than a
tenth, with its previous value, and StorageTextureCacheBudget is exported for the execution
test.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-17 12:33:05 +02:00
Ondra97 a963820ce4 test(agc): isolate host import failure fixture sources 2026-10-17 12:29:13 +02:00
Alexej Szpevák 31cd0e2604 test(libkernel): check socket write event space shrinks and recovers
On a Unix stream socketpair the write event's data drops by at least the bytes sent while the peer has not read them, and comes back to the idle value once the peer drains them. Off Linux the test only checks that the value stays positive and never grows.
2026-10-17 12:28:11 +02:00
Alexej Szpevák f2d3980f5e fix(libkernel): report free send space for socket write events on Linux
A socket's EVFILT_WRITE and sceKernelAddWriteEvent reported the whole SO_SNDBUF in data, however much was already queued. FreeBSD 11.4's filt_sowrite reports sbspace, the space still free. On Linux the queued bytes from SIOCOUTQ are now taken off SO_SNDBUF. Windows has no query for the queued bytes and macOS is not wired up, so both keep reporting SO_SNDBUF; the debt entry says so.
2026-10-17 12:28:11 +02:00
Ondra97 c5bd6c7b38 fix(agc): reuse import allocation status during cleanup 2026-10-17 12:21:55 +02:00
Adrià 673f7406c5 Merge pull request #6103 from Zinebyte/fix/sem-timedwait-cancellation
fix(libkernel): cancel before acquiring a ready timed semaphore
2026-10-17 12:15:32 +02:00
mrfelekandClaude Opus 5.5 40f4506659 fix(libSceNgs2): let render skip a grain while another thread holds the system lock
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BywPXoZACVi8ALV4JKvuPZ
2026-10-17 12:15:01 +02:00
Ondra97 89bd3f19b6 fix(agc): publish host import handles only after creation succeeds 2026-10-17 12:14:15 +02:00
Alexej Szpevák 9ece094515 test(libkernel): cover F_GETLK against another process's record locks
The fcntl tests only ever held locks in the guest's own process, where FreeBSD's lf_blocks never reports a conflict, so the host lock path that answers F_GETLK was not exercised. A forked process now holds a read lock, a write lock and a write lock to the end of the file through the host. F_GETLK with F_UNLCK reports only the write locks, F_RDLCK the same and F_WRLCK the read lock, each with the owner's pid and SEEK_SET; F_SETLK over the read lock fails with EAGAIN, and nothing is reported once the owner exits.
2026-10-17 12:13:54 +02:00
Dean ca82d7d882 Merge pull request #6180 from MarcZX100/codex/fix-pixel-lane63-proof-budget-5398
fix(shader): budget pixel lane proof for NHL 26 replay
2026-10-17 23:07:55 +13:00
milescovielloandClaude Opus 5.5 c7849f8495 test(libkernel): check the timed locks against the holder's release, not elapsed time
The waiter took the lock only after the holder unlocked, but under load it
saw the holder's lock late and measured less than half the hold time.
The holder now sets a flag just before it unlocks and the waiter requires
it once its lock is taken.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 10:07:17 +00:00
Yunus Shaikh 3d42f60978 Merge branch 'fix/agc-sample-location-grid-fallback' into fix/agc-sample-location-grid-exact
The fallback branch's merge of main brings the single-sample scan entry
after the custom MSAA sample locations entry in the AGC debt file. Keep
it after this branch's version of that entry.
2026-10-17 03:05:00 -07:00
Yunus Shaikh 7b3826a42d Merge main into fix/recompiler-once-per-pixel-sample-inputs
main d7262bd6d6 adds the single-sample scan entry after the custom MSAA
sample locations entry in the AGC debt file. Keep it after this
branch's version of that entry.
2026-10-17 03:04:20 -07:00
Yunus Shaikh cebbd414eb Merge main into fix/agc-sample-location-grid-fallback
main d7262bd6d6 adds the single-sample scan entry after the custom MSAA
sample locations entry in the AGC debt file. Keep it after this
branch's version of that entry.
2026-10-17 03:04:15 -07:00
Alexej Szpevák 41ec785705 fix(libkernel): answer F_GETLK with F_UNLCK on Linux and macOS
fcntl threw for F_GETLK with an F_UNLCK request on the hosts that use POSIX locks, as Linux's F_GETLK rejects that type. FreeBSD 11.4's kern_fcntl accepts it and lf_getlock reports the first overlapping lock that lf_blocks lets conflict: another owner's lock, one of the two being a write lock. For an F_UNLCK request that is exactly another owner's write lock, the same set an F_RDLCK request finds, so the host is asked with F_RDLCK and the reply is written back as for the other types.
2026-10-17 12:00:21 +02:00
Adrià d7262bd6d6 Merge pull request #5915 from SandstromPL/fix/agc-single-sample-scan-multisampled-depth
fix(agc): rasterize a single-sample scan into a multisampled depth target at the pixel center
2026-10-17 12:00:13 +02:00
akkadbakkad89 418d385c96 test(agc): cover Intel single-queue devices in recorder fixtures 2026-10-17 10:00:04 +00:00
Adrià fce6353052 Merge pull request #6026 from leorossi2005/feat/voiceqos-endpoints
feat(libSceVoiceQoS): implement endpoints and connections to unblock
2026-10-17 12:00:03 +02:00
Alexej Szpevák 5433b32b7d fix(libc): return the open error from fopen_s instead of ENOENT
fopen_s returned ENOENT for every failed open, including an invalid mode, a directory opened for writing and the loop and long-name cases. C11 K.3.5.2.1 only asks for a nonzero value; Microsoft's CRT, which shares Dinkumware's library, returns errno. fopen_s now returns the errno fopen set.
2026-10-17 11:52:14 +02:00
Alexej Szpevák 8806043613 fix(libc): translate the host errno of a failed freopen
freopen closed the stream and returned the host's errno from the failed reopen as is, with the same Linux numbers for a symlink loop or an over-long name as fopen had. It now passes it through GuestErrnoFromHost_nid_no_patch.
2026-10-17 11:51:32 +02:00
Alexej Szpevák dc324d3d5f fix(libc): translate the host errno of a failed fopen
fopen left the host's errno in place when the host open failed, so on Linux a symlink loop reached the title as 40 and an over-long name as 36, which are EMSGSIZE and EINPROGRESS on FreeBSD. GuestErrnoFromHost_nid_no_patch maps the host value to FreeBSD 11.4's: 1 to 34 are shared except EAGAIN (35), and ELOOP, ENAMETOOLONG, ENOTEMPTY, EDQUOT, EOVERFLOW and EDEADLK get their FreeBSD numbers; anything else is EIO.
2026-10-17 11:51:00 +02:00
danielcadev 27ded2c4d1 fix(agc): keep small device buffers in the small pool tier 2026-10-17 04:39:56 -05:00
Dean bf20538169 Merge pull request #7053 from inmert/fix/relinker-macos-libc-for-libkernel
fix(relinker): list libc.prx with libkernel.prx in macOS executables
2026-10-17 22:32:23 +13:00
Alexandros Pournaras 4b656882ba fix(libSceNet): store SO_ONESBCAST in sceNetSetsockopt 2026-10-17 11:29:25 +02:00
Aryan Sharma 7e89abbab0 test(libc): backtrace tests call the _nid_postfix exports
The sceLibcBacktrace implementations were renamed to the _nid_postfix
convention on this branch, so the test declarations must match.
2026-10-17 14:56:56 +05:30
Aryan Sharma ec832e0bcb fix(libc): limit sceLibcBacktraceSelf to Linux and test its record layout 2026-10-17 14:56:56 +05:30
Aryan Sharma ce57c2d799 feat(libc): implement sceLibcBacktraceSelf on Linux
PPSA28997 (IL2CPP) calls sceLibcBacktraceGetBufferSize and
sceLibcBacktraceSelf. On Linux the host call stack is captured with
backtrace and each frame is resolved to its module and offset with
dladdr, then written as a linked list of frame records. The record
layout is inferred and listed in TechnicalDebt. Windows throws.
2026-10-17 14:56:56 +05:30
David Sera 38551363fd test(agc): skip the emulated color compare clamp cases without MinLod
The offset cases compile `image_sample_cb_cl_o`, whose LOD clamp the emitter
reaches only through the device's `shaderResourceMinLod`; without it the
emitter refuses the shader (the gate #388 left in place). The test had no
capability guard, so on such a device every one of those cases failed at the
first of them, `point, wrap with negative offsets`, instead of skipping them
as `ImageSampleLodClamp` and `ImageSampleBiasA16` already do.

Found on llvmpipe (Mesa 25.0.7, Debian 13), which lacks the feature that
lavapipe reports from Mesa 25.2.8: `agc_driver_emulated_color_compare` and
its `_srgb_decode` variant both failed. The other cases still run; the note
names the cases that were skipped.
2026-10-17 12:26:38 +03:00
Adrià 501f740529 Merge pull request #6074 from notaxeltv/feat/libc-aligned-new-ppsa34015
feat(libc): allocate through operator new with align_val_t
2026-10-17 11:26:33 +02:00
Adrià 05f6541e48 Merge pull request #6087 from notaxeltv/feat/libc-locale-classic-ppsa34015
feat(libc): export locale::classic (PPSA34015)
2026-10-17 11:26:28 +02:00
AlxcBTW a58a709116 fix(agc): compare moved dispatch buffers at their build-time clamped size
A read-only V# the build clamps (size above the descriptor range limit cut to the
mapped end, stride overhang cut to the allocation end) was compared with the template
by its raw size, so an unchanged buffer counted as moved, was refused over the limit
and the dispatch rebuilt every time; a moved one with an overhang was snapshotted past
the allocation end. The build and the move proof now take the range from one function
(ShaderResources::guestBufferBytes), compare clamped with clamped and snapshot the
clamped range.

An overlay without a descriptor set is refused like one that could not be made, and
recording one throws instead of binding the template's set.
2026-10-17 11:23:47 +02:00
Azaluz 9b29e696c1 fix(agc): keep nonbinding import probes from pinning buffers 2026-10-17 12:22:39 +03:00
Adrià FranchandClaude 5e87aaed47 fix(main): retry temp dir cleanup in loadexec_arguments on Windows
Run 39019245350 (main f05fc7d953) failed loadexec_arguments with WinError 5 on
unlinking guest_loadexec_host.prx in TemporaryDirectory cleanup: the exited
guest process still held the module briefly. #7038 does not touch it (0 of 25
earlier main builds failed). Retry the removal for up to 10 s.

Co-Authored-By: Claude <[email protected]>
2026-10-17 11:13:41 +02:00
inmert f91e53d595 fix(relinker): list libc.prx with libkernel.prx in macOS executables 2026-10-17 14:06:01 +05:30
thuanquangandClaude Opus 5.5 e5cc0bc0ff feat(shader): translate packed f16 in the f16 denormal modes that flush
v_pk_add/mul/fma/fmac/min/max_f16 threw in f16 denormal modes 0-2. On
RDNA2 (gfx1031) bit 6 clear flushes each denormal input lane to a zero
of its sign, and bit 7 clear flushes an add result below 2^-14 and a
mul or fma result whose exact value rounded to 11 significant bits
with an unbounded exponent is below 2^-14, as the scalar forms do;
min/max flush only their inputs. Packed f16 still throws for f16
rounding other than nearest even.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 21:23:10 +13:00
Dean adb0e7a8cb Merge pull request #7040 from thuanquang/fix/fma-mix-f16-input-flush
fix(shader): flush v_fma_mix_f32 f16 sources by the f16 denormal field
2026-10-17 21:21:53 +13:00
Dean bf0bec93ff Merge pull request #7041 from thuanquang/fix/div-fixup-f64-input-flush
fix(shader): flush v_div_fixup_f64 src1 and src2 by the f64 denormal field
2026-10-17 21:21:49 +13:00
Dean 660cf7b215 Merge pull request #7001 from MarcZX100/codex/fix-viewbytes-range-6999
fix(agc): cover unaligned guest buffer views
2026-10-17 21:21:45 +13:00
Yunus Shaikh a6ff397acc Merge main into fix/agc-shutdown-pool-threads
main's 81e3db853c counts each device's active library builds
(activeBuilds), so ClearPipelineLibraries waits for them. Keep it
beside this branch's joinable worker and stopping flag, which replace
started.
2026-10-17 01:01:48 -07:00
Yunus Shaikh 7539ba6116 Merge branch 'perf/agc-host-import-aligned-blocks' into perf/agc-remember-evicting-refusals 2026-10-17 01:01:31 -07:00
Yunus Shaikh e60ca87228 Merge branch 'perf/agc-host-import-aligned-blocks' into perf/agc-host-import-blocks 2026-10-17 01:01:30 -07:00
Yunus Shaikh f03efaeb48 Merge main into perf/agc-host-import-aligned-blocks
main 52798f71d5 declares ExistingHostImportFor next to HostImportFor
(#6892). Keep it beside this branch's HostImportFor, which takes a
requester.
2026-10-17 01:01:03 -07:00
Dean 52798f71d5 Merge pull request #6892 from tibzejoker/perf/resident-linear-targets
perf(agc): linear color targets over imported memory get a resident image
2026-10-17 20:52:24 +13:00
Dean 7a2435edee Merge pull request #6814 from MarcZX100/codex/agc-library-prebuild-replacement-race
fix(agc): drain library prebuilds before device replacement
2026-10-17 20:52:21 +13:00
Dean a60ac1fbed Merge pull request #7034 from thuanquang/fix/f16-fma-denormal-flush
fix(shader): flush v_fma_f16 family denormals by the f16 denormal field
2026-10-17 20:52:18 +13:00
Dean 3b10c7ef09 Merge pull request #4288 from 014-code/fix/spirv-optimizer-memory-4166
fix(shader): bound SPIR-V scalar replacement
2026-10-17 20:35:30 +13:00
Dean acca883e0b Merge pull request #3557 from karanvora2599/perf/shader-native-scalar-f16
perf(shader): compute scalar f16 add, sub and mul with native f16 math
2026-10-17 20:35:26 +13:00
Dean 17cfb1f4cb Merge pull request #7031 from thuanquang/fix/f16-pack-denormal-flush
fix(shader): flush v_cvt_pkrtz_f16_f32 and v_pack_b32_f16 f16 denormals
2026-10-17 20:22:25 +13:00
Dean 8a2a2ee78f Merge pull request #7030 from thuanquang/fix/div-fixup-f16-input-flush
fix(shader): flush v_div_fixup_f16 src1 and src2 by the f16 denormal field
2026-10-17 20:22:21 +13:00