A depth plane with the 64 KiB Z swizzle reloads the units the guest
wrote (SyncFromMemory) when its surface is bound as a depth target, but
sampling the plane through the surface skipped that check and read the
host image. A title that copies depth into the plane with a buffer copy
and samples it before drawing into it again read the depth from before
the copy.
PPSA05684 copies its depth pre-pass into a second depth target with a
buffer copy kernel and samples that copy at once to build the
half-resolution depth its volumetric fog and dust read; only later does
it bind the target. The fog used the previous frame's depth, so a
silhouette followed every moving character through fog and dust.
Sampling a single-sample plane through its surface now runs the same
reload first. agc_driver_depth_plane_sampling gains a case that draws a
plane, writes the guest memory under it and samples it; it reads the
drawn depth without the change.
AI-assisted: yes
An S# with FORCE_UNNORMALIZED and TRUNC_COORD was refused. TRUNC_COORD
is already accepted and not applied for normalized coordinates; the
unnormalized path now does the same, and the debt entry covers both.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
CMake writes a launcher that sets environment variables as a leading
`cmake -E env NAME=VALUE ... <launcher> <compiler>`, as the AGC
execution tests' ccache launcher does. check_compile took cmake for the
compiler, inserted -fsyntax-only before -E and dropped -E as a
preprocessing option, so every such source failed with
"CMake Error: Unknown argument". Keep the env prefix (NAME=VALUE,
--unset=, --modify and --) and rewrite only the command after it;
reject its other options and a prefix without a command.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
On Windows, sceKernelRaiseException threw for a thread created suspended
and not resumed yet. FreeBSD libthr starts such a thread with signals
blocked and restores its mask on resume, so the signal stays pending and
is delivered on that thread once it runs.
The raise is now recorded in the thread's pendingException with a
compare-exchange, and the thread exchanges it for -1 when it leaves the
creation wait and delivers it to itself before its start routine. Both
sides use one atomic, so a raise racing a resume is either taken by the
thread or, after it started, delivered as for a running thread. Raises
while pending are merged, as for a standard signal.
guest_pthread_create_suspended now runs the deferred-delivery case on
every host, with a second raise while the thread is suspended.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
On a PS4 firmware 10.71 console, libSceNgs2.sprx answers
sceNgs2VoiceGetState with 0x804A0054 for a state size below 4 before it
resolves the voice and 0x804A0300 for an invalid voice, and
sceNgs2VoiceGetStateFlags writes 0 and returns 0x804A0300 for an invalid
voice. The libSceNgs2 target now does the same; libSceNgs2.native keeps
the PS5 module values.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Follow FreeBSD 11.4's __opendir2: __DTF_READALL or __DTF_SKIPREAD
returns NULL with errno unchanged, and every other value opens the
directory as opendir does, since the remaining flags only act on union
mounts and whiteout entries.
A new entry next to the FORCE_DEGAMMA entry. shadPS4 converts the filtered texel of every non-sRGB format to linear and fpPS4 documents the bit as applied after filtering regardless of format; here a forcing sampler reads the texture through its sRGB view, so the conversion happens before filtering, for formats that are not sRGB and not on a fixed list. PS4 (GCN) behaviour only; nothing is claimed about the console.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Measured as a payload process on a device, dlsym on the dlopen handle
returns null for the 17 libSceMetadataReaderWriter names already listed
as not exported, while the other 22 names in Export.cpp resolve. The same
holds for the four Initialize, ReadMetadata, WriteMetadata and
ExtractThumbnail names in libSceGvMp4Parser and libSceJpegParser, whose
Finalize names resolve.