Host logging opens its own FILE on the saved descriptor. The guest FILE stays on the replaced descriptor, so guest printf, puts and fprintf still reach the pipe.
sceAgcAcbSetWorkloadsActive, sceAgcAcbSetWorkloadComplete and
sceAgcAcbSetWorkloadStreamInactive build the same packets as the DCB calls,
and sceAgcDcbSetWorkloadStreamInactive writes a 9-dword IT_NOP with the
stream id, the size of the console's user-data packet. The debt entry now
records the console layout read from libSceAgcDriver.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RbLgECLQ2bpDM7oe2urGZK
Follow FreeBSD 11's do_sem_wait and do_sem_wake (COMPAT_FREEBSD9/10) on
a struct _usem: a wait sets _has_waiters, returns at once while _count
is non-zero and otherwise sleeps on the semaphore's queue; a wake clears
_has_waiters when one waiter is left and releases one waiter.
Co-Authored-By: Claude Haiku 5.5 <[email protected]>
On RDNA 2, an S# with TRUNC_COORD 0 rounds the scaled coordinate to 8
fractional bits, ties to even, and one with TRUNC_COORD 1 truncates it,
for point and bilinear filters. The S# decoder ignores the bit, and
AMD's Windows driver truncates for nearest samplers and rounds for
linear ones, so a TRUNC_COORD 0 point sample just below a texel edge
reads the texel below it. The code comment said the bit moves texel
selection by half a texel at most; the debt entry records the measured
rule instead.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
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.
The initial import of a multisampled DCC target required its CMASK to be
uniformly 0xcc or the fully expanded code. When CB_COLOR_INFO enables
COMPRESSION but not FAST_CLEAR, the CMASK only holds FMASK compression,
which picks the fragment each sample reads, and a uniform DCC clear sets
every fragment to the clear color. The CMASK is then not checked, and the
target imports as the DCC clear.
METAL GEAR SOLID 4's launcher (PPSA18194) opens its Master Book on a
2-sample 1920x1080 target whose DCC reads as the 0000 clear and whose
CMASK holds stale bytes, with FAST_CLEAR off. It stopped there.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
macOS fails a host path of 1024 bytes or more with ENAMETOOLONG, and the
host form of a guest path is the root directory followed by the guest
path, so a guest path of 1023 bytes, which FreeBSD accepts, fails there
under any root directory. guest_path_name_length skips that check on
macOS, and a debt entry for guest path names gives the macOS limit.
#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]>
Report the host IPv4 DNS servers of the interface sceNetCtlGetInfo
uses, through a helper libSceNetCtl exports, and return their count.
The signature and layout follow the OpenOrbis musl resolver and Net.h.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The blocked-destination case checks a different file, so an in-place
rewrite passed it. The earlier case is back beside it: a directory at
<name>.tmp makes the write fail, and the previous aps5-bench.json.gz must
be unchanged. It is left out of Windows builds, where the
std::ios_base::failure thrown inside the MinGW ofstream did not unwind to
the test's catch.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Rewrite the debt entry added by #7381 so it opens with what is
unverified (RDNA2 gfx1031 only, wrap addressing only), keeps the
Z_FILTER difference, and lists everything that still throws: the
other sample forms, gathers, image_get_lod and image_get_resinfo,
and the three samples of a T# selected from an image table, of a T#
also loaded with DIM 2D_ARRAY, and of an 11_11_10_UNORM,
11_11_10_UINT or depth-bits T#. The entry goes from 1286 to 898
characters.
Co-Authored-By: Claude <[email protected]>
Initialize, register a request callback, start, stop and terminate keep the
library's state with its errors; no companion device connects, so
sceCompanionHttpdGetEvent always returns NO_EVENT and the callback is never
called. The response builders are declared and throw.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Three recent changes use what only Linux has, so libc and two tests no
longer compile on macOS:
- The AF_LINK entries that getifaddrs lists on Linux use linux/if_link.h,
netpacket/packet.h, sockaddr_ll and rtnl_link_stats, and were built on
every host but Windows. They are now built on Linux only: macOS lists
the IPv4 and IPv6 addresses as before, as Windows does, and the
interface test checks the AF_LINK entries on Linux only.
- The NetCtlAp test loops over a braced list without including
<initializer_list>, which libc++ does not pull in through the test's
other headers.
- The import block test backs its 16 KiB views with memfd_create. The
views case is now built on Linux only; macOS runs the case without
views, as Windows does.