A key bound to two actions triggers both. Since F9 is the built-in key
of ShowPadStatus, someone who moved Screenshot, TogglePerformanceOverlay
or another action to F9 also gets the controller status panel on each
press, and should rebind ShowPadStatus; the web configurator already
warns about shared keys.
The overlay section said the presentation does nothing for a hidden
panel. Each present and each video-out loop pass still takes a lock and
reads the clock to see whether the panel is wanted; with
ANYPS5_PAD_STATUS unset or 0 and no F9 press no controller state is
read, and the panel knows the controllers only from the first F9 press.
The supported-actions paragraph names ShowPadStatus, links the
controller status panel and adds it to the keyboard-only actions; the
default bindings table gets its F9 row.
The overlay section gains the panel: what a line shows (player slot,
controller type, SDL's battery class), that it is never permanent (4 s
after the last trigger), what triggers it (the ShowPadStatus key, and
with ANYPS5_PAD_STATUS=1 connects, disconnects, replacements and
battery drops), where it sits, that the system keyboard has priority,
and that battery readings depend on SDL, the operating system and the
controller.
DeviceMemoryType placed an image or device buffer in host memory up front
when VK_EXT_memory_budget showed the device-local heap without room, so the
texture-cache release that a driver refusal gets never ran. It now asks the
caches for the allocation plus the heap's overage first and keeps the
device-local type when they release that much, or when the budget read again
has room.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Say that it is off by default, what it asks for on Linux and macOS, that
GameMode's own configuration decides what changes, that Windows needs no
request, and how on, auto and invalid values behave.
A pipe write is atomic only up to PIPE_BUF, 512 bytes on macOS, so three threads writing 3 KB lines into one pipe interleaved before the copy read them.
State what the file receives and what it does not, that it is appended to
and has no size limit, the startup error for an unopenable path, line
atomicity and the ordering between the two streams, what a crash or kill
leaves, the cost of two threads and two pipes, the child-process and
load-exec cases, and that the Windows path was not run.
The relinker writes every Linux and macOS output with execute permission since ab94ee21d7, as the running section already says, so the --autorun row no longer attributes it to --autorun.
Names each required extension and feature, and the one message that a
GPU lacking them gets: the GPU, its driver and Vulkan version, every
missing item, the other devices ANYPS5_GPU can select.
Lists the forms that are replaced (paths, URLs, MAC addresses, the account,
host and home directory names) and warns that the values of the listed
variables are printed as set.
Says when it prints, that an invalid value stops the start, the order and
content of each section, what unavailable and the CPU check line mean, and
that the shader cache size counts at most 200000 files.
Explain ANYPS5_RUMBLE, which vibration paths it covers and which it leaves alone, and that it is a host-side comfort setting with no console counterpart.
A set-but-invalid value, including an empty one, a non-finite number, a
number outside -60 to 0 or trailing text, stops the title with an error
naming the variable and the value instead of silently keeping 0 dB. The
gain is parsed once when the AudioOut2 context is created, kept in the
context and passed to the mix loop, so the audio thread never reads the
environment.
The one-read rule is pinned end to end: a play that changes the variable
to a value that would stop the title after the context was created keeps
the parsed fold and never re-reads the environment.
Add APS5_PAD_SPEAKER_FALLBACK_DB for AudioOut2 controller-speaker ports
folded into the main mix when no controller speaker is present. The
default 0 dB keeps the existing unity mix; mute removes the fallback
copy so a title's own main-port copy is heard instead.
ReadCommitCharge reads /proc/meminfo outside Windows, and macOS has no
/proc, so it returns nothing there and page 2 leaves the commit part of
its COMMIT line out, as it does for any source the run doesn't have.
The statistics test required a reading on every system, and the page 2
sampler test required the first sample to hold one.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This reverts commit 780b33aea3, restoring the 13824 MiB direct memory pool.
With the pool at 12288 MiB, Astro Bot (PPSA21564) can no longer load its
level: DirectMemoryAllocator asserts "Can't allocate direct memory" for a
64 MB VideoPlayerTexture with 12228 of 12288 MB in use, then the process
faults about 26 s in (2 of 2 runs, RTX 4090, Linux, main cccdaa2734).
The same tree with only this merge reverted runs the full 150 s with no
direct memory assert (2 of 2 runs).
ReportAllThreads captures at most 128 other threads and prints how many
further threads were left out; the report did not list every thread of a
larger process.
GuestModuleBuilder keeps each module's directory relative to the module
parent under app0, as the Linux and Windows outputs do, so modules from
sce_modules, prx or a --module-dir do not land in app0/sce_module.
MacOsMachOPatcher::Patch discarded its lazyBinding argument, so a
module-free `--macos --lazy-binding` conversion exited 0 and wrote the
same eagerly bound Mach-O as a run without the flag. The Mach-O writer
puts every import in the LC_DYLD_INFO_ONLY bind stream and leaves the
lazy_bind stream empty, with no __la_symbol_ptr or stub helper, so the
macOS target cannot honour the flag. The patcher now throws "macOS
target does not support --lazy-binding", in the form of its
--windows-diagnostics check, so such a conversion exits 2 and writes no
output. Conversions with bundled modules were already refused by the
guest module builder.