Commit Graph
14017 Commits
Author SHA1 Message Date
Adrià 43cd8f4c47 Merge pull request #6856 from milescoviello/fix/dump-failing-capture
fix(agc): dump a failing shader capture's own request
2026-10-20 11:15:33 +02:00
Adrià a018148a8f Merge pull request #6817 from NumberGuan/codex/agc-shader-helper-timeout
test(agc): bound shader helper test runtime
2026-10-20 11:14:23 +02:00
Adrià da077b993b Merge pull request #6773 from XairRrR/fix/empty-screen-scissor
fix(agc): rasterize nothing for an attachment-free draw with an empty screen scissor
2026-10-20 11:14:16 +02:00
hypermistandClaude Opus 5.5 4b527adf05 feat(libc): implement vfscanf, vscanf, scanf, the wide stream printf family and vswscanf
vfscanf, vscanf and scanf scan through the same host path as fscanf;
vfwprintf, fwprintf and vwprintf format like wprintf and write to the
guest stream; vswscanf and vswscanf_s run the wide scanner on a va_list.
The names hash to the NIDs libSceLibcInternal exports.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
2026-10-20 22:13:02 +13:00
Maz 53ed35b362 fix(shader): skip unreachable flat SRT loads under a known branch
Capture evaluated every flattened scalar slot even when a clean scalar
branch skipped it, so an inaccessible direct user-data root refused the
draw. Record flat-slot uses on resource control-flow blocks and evaluate
only the reachable ones; keep refusing taken and unresolved paths.

Fixes #8272.
2026-10-20 13:11:24 +04:00
Adrià 77c18cefae Merge pull request #6903 from Zinebyte/fix/guest-unused-import-dependencies
fix(relinker): infer guest dependencies from referenced imports
2026-10-20 11:08:47 +02:00
Dean fce1fefe3b Merge pull request #6932 from MarcZX10/codex/videoout-xvfb-6899
ci: run Linux video output tests under Xvfb
2026-10-20 22:08:38 +13:00
Adrià 5b2654a28b Merge pull request #6771 from XairRrR/fix/pipeline-cache-version
fix(agc): keep the Vulkan pipeline cache file with its shader cache version
2026-10-20 11:07:49 +02:00
Adrià 38e04ad920 Merge pull request #6708 from milescoviello/fix/agc-export-without-targets
fix(agc): accept any fragment export where the draw has no color target
2026-10-20 11:07:44 +02:00
nekomancer01andClaude Opus 5.5 e4164098a8 docs(libSceRudp): state the poll gaps first and shorten the debt entry
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 20:07:28 +11:00
nekomancer01andClaude Opus 5.5 d2b9531517 fix(libSceRudp): match the Vita3K check order and reject negative poll ids
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 20:07:28 +11:00
nekomancer01andClaude Opus 5.5 680ba6bf29 feat(libSceRudp): implement the poll exports
Implement sceRudpPollCreate, sceRudpPollControl, sceRudpPollWait and
sceRudpPollDestroy with the PS Vita signatures and argument checks.
sceRudpTerminate removes the context from every poll and sceRudpEnd
destroys the polls and wakes their waiters.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 20:07:28 +11:00
akkadbakkad89 aaa6ae312b docs(debt): trim the libScePsml_debug entry under the length limit 2026-10-20 14:36:46 +05:30
akkadbakkad89 632c0f7737 feat(libScePsml): implement the MFSR query exports from the APR-EMU fakelib
scePsmlMfsrGetDispatchMfsrPacketSizeInDwords, scePsmlMfsrGetMipmapBias,
scePsmlMfsrSelectConfig, scePsmlMfsrRequestCapture and
scePsmlMfsrIsCaptureInProgress gain real signatures and semantics reversed
from the fakelib/libScePsml.sprx bundled with PPSA20397, which imports the
first three. The context records the input dimensions at creation so the
mipmap bias can be computed.
2026-10-20 14:33:30 +05:30
David e751166d23 fix(agc): pass --exclude-libs to the linkers that accept it 2026-10-20 13:03:24 +04:00
felekandClaude Opus 5.5 bb864e8acd docs(dev): name the memory budgets and the sleeping-display stop in the game testing guide
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01BywPXoZACVi8ALV4JKvuPZ
2026-10-20 11:02:27 +02:00
Adrià e9a5a0c849 Merge pull request #6772 from XairRrR/fix/storage-array-window
fix(agc): serve views of arrays past maxImageArrayLayers from their viewed slices
2026-10-20 10:55:09 +02:00
Adrià dcab2fe989 Merge pull request #6326 from JJenkx/fix/queued-raw-shader-reads
fix(agc): order raw shader reads after queued code writes
2026-10-20 10:52:56 +02:00
dantdmdarealguy 251ca1c100 fix(libc): report the file number of each readdir entry on Windows
readdir and readdir_r returned d_fileno 0 for every entry on Windows,
because MinGW's _wreaddir reports no inode. FreeBSD 11.4's
_readdir_unlocked (lib/libc/gen/readdir.c) never returns an entry whose
d_ino is 0, and d_fileno is the number lstat reports as st_ino.

The Windows directory stream now reads the listing from the directory
handle with GetFileInformationByHandleEx(FileIdBothDirectoryInfo), so
each entry carries the file ID of the entry itself, symbolic links
included, without opening it. The ID is folded as stat and lstat fold
nFileIndexHigh:nFileIndexLow; the fold moves to WindowsDescriptor.hpp so
both libraries use it. rewinddir restarts the scan, telldir and seekdir
count entries as _wtelldir and _wseekdir did, and opendir fails with the
open error of the directory. A file system that lists no file ID gets a
nonzero number hashed from the name. Linux truncates the host inode to
32 bits as stat does instead of reporting 0 above 2^32.

guest_directory checks that every entry has a nonzero file number, that
the numbers of a file, a subdirectory and symbolic links to both equal
lstat's st_ino, that an entry created or removed while the directory is
open shows up after rewinddir, that a delete-pending entry no lstat can
open is still listed, and that seekdir returns the same number.
2026-10-20 03:52:39 -05:00
karthikeyaAnna c97e5e0338 fix(agc): back 1D depth comparison textures with 2D images
Back 1D and 1D-array depth comparison textures with 2D Vulkan images and views of height 1. Drivers such as AMD RADV reject 1D depth images (VK_ERROR_FORMAT_NOT_SUPPORTED). The shader recompiler maps 1D depth comparison samplers to 2D image descriptors, and pins the normalized vertical coordinate to 0.5 to sample the center of row 0 without hitting borders.
2026-10-20 14:21:58 +05:30
Zenodeon 823c6a55e1 test(agc): verify private remap coverage and remaining hints 2026-10-20 12:41:38 +04:00
Zenodeon c22ed36347 fix(agc): restore write-watch coverage for remapped pages 2026-10-20 12:41:38 +04:00
Adrià 35fa2bdd82 Merge pull request #6555 from Ondra97/codex/fix-decoder-buffer-lifetime
fix(decoder): release decoded pixels when allocation fails
2026-10-20 10:41:19 +02:00
Adrià 5c94d40bf6 Merge pull request #5942 from JJenkx/feat/ult-bound-condition-variables
feat(ult): implement creation-bound condition variables
2026-10-20 10:41:14 +02:00
Kovalev Vladislav 80024c48fd test(agc): serialize journal replay result capture 2026-10-20 14:40:12 +06:00
Adrià 3d54c5b2b2 Merge pull request #6448 from DavidSamir/fix/relinker-macos-empty-tls
fix(relinker): convert stack-guard and thread-pointer reads with an empty PT_TLS for macOS
2026-10-20 10:40:07 +02:00
Adrià 7faab0aea9 Merge pull request #4891 from dantdmdarealguy/feat/screenshot-hotkey
feat(agc,videoout): save the displayed frame as a PNG with a screenshot key
2026-10-20 10:40:02 +02:00
Adrià 5e7c618699 Merge pull request #6607 from jweidenh/codex/overlapping-rela-tables
fix(relinker): handle overlapping relocation tables
2026-10-20 10:38:40 +02:00
Kovalev Vladislav 08fe08fadc docs(agc): record remaining long pipeline cache path limits 2026-10-20 14:26:34 +06:00
Romans Pokrovskis 340f5784b0 fix(shader): normalize mapped cache entry and pack paths
(cherry picked from commit 0a3621bbbfd27bafb1ff5b97208eaf51ba90ccf0)
2026-10-20 14:26:33 +06:00
Romans Pokrovskis 56778c97d2 test(shader): exercise long-path mapped cache persistence
(cherry picked from commit 83ad99879035e1418a5fa500cf061b236ec0a867)
2026-10-20 14:25:57 +06:00
Dean 661f8b7171 Merge pull request #8059 from KernelPanicNT/fix/voice-not-init-codes
fix(libSceVoice): return the module's initialization errors
2026-10-20 21:20:54 +13:00
Kovalev Vladislav 2e4cae5840 fix(agc): normalize all pipeline journal file paths on Windows 2026-10-20 14:19:45 +06:00
Dean f9012eed0d Merge pull request #7080 from Rengundom/feat/trace-bench-fields
feat(trace): record host, title and per-frame benchmark data
2026-10-20 21:19:24 +13:00
Kovalev Vladislav 61fa2d2221 test(agc): cover long pipeline journal paths and external tails 2026-10-20 14:19:17 +06:00
Romans Pokrovskis 1481f03bbd test(shader): keep cache relative paths on one drive 2026-10-20 14:19:17 +06:00
Alex Callisaya a5ab12df24 fix(shader): support long Windows cache file paths 2026-10-20 14:19:17 +06:00
MarcZX100 acb8190919 fix(ci): accept variable startup logs in skip reports 2026-10-20 08:19:16 +00:00
MarcZX100 fb2949ab9f fix(ci): accept high-refresh startup logs 2026-10-20 08:19:15 +00:00
MarcZX100 23b2b1dc3e fix(ci): ignore ctest skip return code metadata 2026-10-20 08:19:15 +00:00
MarcZX100 fe1d9eae67 ci: run Linux video output tests under Xvfb 2026-10-20 08:19:15 +00:00
thuanquangandClaude Opus 5.5 a5e1f83417 fix(shader): keep the 24-bit factor reads of 16-bit multiplies
#7018 reads the low-half factors of v_mul_lo_u16 and v_pk_mul_lo_u16
as 24-bit fields because AMD's Windows driver stores the full 32-bit
product when it knows both factors fit in 16 bits. #7673's fold of
BitFieldUExtract(x, 0, n) into x removed those reads when the program
had masked the factors to 16 bits, so agc_driver_mul_lo_u16_high_half
failed again on that driver. The folder now keeps a field read that a
multiply uses.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 15:18:13 +07:00
Dean 587bb343e8 Merge pull request #8106 from juanpimg/feat/prx-declare-ps5-3.20-exports
feat(prx): declare the missing PS5 3.20 system exports
2026-10-20 21:13:30 +13:00
Dean efd5a4c7eb Merge pull request #8060 from KernelPanicNT/fix/logindialog-module-error-codes
fix(libSceLoginDialog): return the module's error codes and check the open param
2026-10-20 21:12:58 +13:00
thuanquangandClaude 1868043281 test(agc): skip only the device-dependent f64 denormal mode results
On a device whose target reports no f64 DenormPreserve, the f64
rounding and add/mul denormal mode tests skipped every mismatch in the
modes that keep f64 denormal inputs (1, 3 and no known float mode) and
checked modes 0 and 2 strictly. A recompiler regression in modes 1 and
3 never failed there, such as dropping the v_fract_f64 result flush
that only mode 1 shows, while mode 2 failed where a driver may flush a
denormal result of normal inputs (v_add_f64 and v_mul_f64 rows 4, 9,
11 and 15).

A result is now skipped only when its expected value changes if the
device flushes f64 denormal inputs, results or both, and only until the
device shows that it keeps them: when the run without a known float
mode, which uses the native instructions, matches every row, the other
modes are checked strictly.

Co-Authored-By: Claude <[email protected]>
2026-10-20 15:04:34 +07:00
Dean 7d876ad3ba Merge pull request #7949 from slider/feat/libkernel-fchflags
feat(libkernel): implement fchflags
2026-10-20 21:02:26 +13:00
thuanquangandClaude a8f47b3322 test(agc): remove the large cache file test directory when the test fails
runLargeFileWrite writes a 2 GiB pipelines.bin into a randomly named
temporary directory, and only the passing path removed it. A failing
require after the write and the 200 s hang limit (std::_Exit) left the
file behind, and the two skips left the empty directory. A local Cleanup
now removes the directory when the function returns or throws, and the
hang path removes it before std::_Exit and prints the error when it
cannot, as on Windows while the write still holds the file open.

Co-Authored-By: Claude <[email protected]>
2026-10-20 15:01:18 +07:00
Dean a3c956a2f3 Merge pull request #8265 from LeoFeitosa/revert/dcc-mip-block-units
revert(agc): track DCC storage images with more than one mip as one unit
2026-10-20 21:00:27 +13:00
thuanquangandClaude 36b30824e0 test(shader): check that s_subvector_loop_begin tests an empty exec mask with one compare
agc_spirv_subvector_loop_begin recompiles the exec-kept program of
agc_driver_subvector_loop at wave64 in both robustBufferAccess2 modes and
requires exactly one branch on (exec_lo | exec_hi) == 0 and none on
exec_lo == 0 && exec_hi == 0. It needs no GPU, so CI fails if the begin
instruction goes back to two compares. The program moves to
SubvectorLoopFixture.hpp so both tests use one copy.

Co-Authored-By: Claude <[email protected]>
2026-10-20 14:59:55 +07:00
Ethan Barcus a8e06fb008 Merge branch 'main' into feat/trace-bench-fields 2026-10-20 02:57:23 -05:00