sceKernelReleaseDirectMemory and sceKernelCheckedReleaseDirectMemory returned the range to the
allocator before unmapping its views. The unmap waits for GPU leases on the views, and during
that wait another allocation could take the freed pages and map them while the old view was
still mapped and host-imported, so GPU writes through it landed in the new owner's memory.
Both calls now unmap the views first; the checked call still reports ENOENT for an unallocated
range before it touches any view.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
PlanBuilder::PatchReads emitted GetSrtResource and ReadConst at the end
of the block, then removed each with RemoveInstruction, which scans the
block from the front to find a value that is always at its end. Create
both values directly and insert them before the patched read, as
ResourceTracker's EmitBefore does. The SPIR-V is unchanged.
verifySrtReadPatching now checks that the flat read sits right before
the original read and the planning reference ends the block.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The remap mode stays a specialization constant and cache key input. Scale and
offset are two push words at byte 104, patched per draw, so draws that differ
only in depth range share one pipeline. The recipe, journal and serializer
carry the mode only.
The expected count in the failure message of the staged clear sampled
read test is Threads * 4u + SampleTexelBytes, a std::size_t, but was
formatted with %u. On LP64 hosts that is the only -Wformat warning in
the tree, and the message would print the wrong value.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
The player hands out the newest frame that is due and skips the ones
before it (Source.cpp), as a real-time player does, and the test movies
are one second long. Under load, when the test thread runs late, the
WebM case could receive fewer than its five required video frames, and
the playback case, which waited for eight frames and eight audio chunks
before pausing, could reach the end of the movie first and find the
player inactive while paused.
The playback case now pauses after two frames and two audio chunks,
still enough for its timestamp order check, and the WebM case requires
one decoded video frame; its audio, which is not skipped at normal
speed, still has to deliver two chunks.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
On Linux and macOS, fcntl and ioctl threw "descriptor N is neither a
file, a directory, a pipe nor a character device" for a host socket that
is not a guest socket. That is what a standard descriptor is when a
service manager connects it to its journal, or when a test runner starts
the process with a socket as stdin; guest_kernel_fcntl's standard input
check aborts then.
A socket is now its own descriptor kind. Its status and close-on-exec
flags go through the host as for a pipe end, FIONREAD asks the host,
record locks and read-ahead hints fail with EBADF as FreeBSD's
kern_fcntl fails them on a descriptor without a vnode, and O_ASYNC
throws as on a pipe.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Implement scePlayerSelectionDialogGetStatus and scePlayerSelectionDialogClose in libScePlayerSelectionDialog, matching the common dialog lifecycle convention across player dialogs, and add unit test coverage in GuestPlayerSelectionDialog.
This branch imports adjacent registered ranges that fill an aligned
power-of-two block as one import, so the copy check's source and
destination, mapped one after the other, became a single 128 KiB
import, and the source's protection change retired the destination
with it. Map them with an unmapped block between them, so each is its
own import and the check still shows that retiring one import leaves an
unrelated one in place.
Each case re-activates the test device's recorder, and the DCB submit re-activates the recorder of the second device it creates, so the cases no longer depend on the order they run in. PlaneFillCase checks that a plane fill before a UAV clear is overwritten by it and a plane fill after it wins.
Register unwind tables on Windows via configure_windows_unwind so that throwing stubs tested in GuestUserService can be caught without unhandled runtime_error aborting the test runner.