#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.
sceNetGetSockInfo returned 0 for a known socket and wrote nothing, so
callers read uninitialised bytes as the socket's endpoints. Monster
Hunter Wilds (PPSA24191) calls it after bind, connect and accept and
stores the local and remote address and port it reads back.
It now writes one 0xA0-byte record in the layout SharpProspero and
shadPS4 give: the socket id, the socket type, the local and remote
IPv4 address and port of the host socket in network byte order, the
SELF and NONBLOCK status flags, and the receive and send buffer sizes
sceNetGetsockopt reports for the socket. The other fields are 0. It
returns 1, the number of records written, and EINVAL for a null record
or an n below 1, as shadPS4 does.
An s below 0 lists the sockets as shadPS4 does: with a null record it
returns their number, otherwise it writes up to n records in socket
order and returns how many it wrote. Unlike shadPS4, which lists IPv6
sockets with zero addresses and ignores flags, an IPv6 socket fails
with EAFNOSUPPORT and is left out of the count and the list, and a
flags bit other than 0x40 fails with EINVAL. SharpProspero names 0x40
SockInfoTimeWait; closed sockets leave the table at once, so it lists
the same sockets. docs/dev/debt/libSceNet.md lists the fields left 0
and these differences.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
F12 (the new Screenshot input action) requests a capture of the next
presented display buffer. The presenter records it with the existing
APS5_DUMP_FRAMES GPU readback at full resolution, and the frame dump
writer thread encodes it with decoder_png into anyps5-screenshots/
beside the executable, or ANYPS5_SCREENSHOTS.
sceNgs2RackLock took the library's internal recursive mutex and kept it
until sceNgs2RackUnlock, and a render held the same mutex while it called a
voice's block-end or repeat callback. Every NGS2 call from another thread
waited behind either one. A title that takes one of its own locks while it
holds a rack lock (or inside the callback), while another of its threads
holds that lock and calls sceNgs2VoiceGetStateFlags, deadlocks.
A rack lock is now an owner and a depth on the rack, and only a render of
its system waits for another thread's rack lock. The voice callback runs
with the internal lock released (the lock depth is tracked per thread so it
is released fully and taken back after). A rack or system destroy waits
while another thread renders its system, as the callback window would
otherwise let it free what the render still walks.
Co-Authored-By: Claude Opus 5.5 <[email protected]>