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
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.
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]>
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.
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.
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.
#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]>
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]>
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]>
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]>