Files
MihawkandClaude Opus 5.5 6a47e3e551 Keep the last frame on screen across video reinits; recheck every core; fix FBNeo's screenshot
The black half-second on menu open/close, content close/load and video
reinits was the driver closing VideoOut with each swapchain and switching
the output 120 -> 60 -> 120 Hz. main.cpp now retains VideoOut
(../PS5_Vulkan 49679c9, ps5vk_display_retain) and releases it on quit.
Measured with a pad script (evidence/display-retention): menu handovers
7 ms instead of 297-344 ms, close content 280 ms and History 437 ms with
the previous image on screen instead of a blank panel and a mode switch;
0 black presents; quit restores the default mode.
/app0/ps5vk-no-retain.txt restores the old behaviour for comparison.

Every core rechecked at 119.88 Hz on the current driver
(evidence/core-recheck-current-driver): FCEUmm, Snes9x, mGBA (GBA .7z,
GB), FBNeo, Genesis Plus GX (MD, SMS, GG); 1,200 frames, exit
screenshot colours checked, audio errors=0, status 0.

FBNeo's screenshot crashed on a null call. Patch 0086: the scaler
allocated ~97 MB of intermediate frames a same-size conversion never
reads, failed beside FBNeo's 170 MB core, and the screenshot called an
unset converter. They are now allocated only for scaling, and a
conversion that cannot be set up fails the screenshot. Patch count
188 -> 193 (0086 is five edits).

Test aids: /app0/pad-script.txt (timed button presses), a crash report
in trace.txt (rip, rsp, return address, stack words; the console's
mcontext has rip at word 26 and rsp at 29) and the core base in the
loader's ready line, which together symbolised the FBNeo crash.

tools/verify.sh PASS (5 gates), 37 captures replay.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 21:08:02 -04:00

16 lines
1.0 KiB
JSON

{
"step": "display-retention",
"note": "RetroArch recreates its swapchain on menu open and close, close content and loading content. Before, each recreation closed VideoOut (restoring 60 Hz) and reopened it (selecting 119.88 Hz again): an output-mode switch and a blank panel every time (run B: 297-760 ms from the last present to the new swapchain, output opened each time). Retained, the same events keep the output, its mode and the previous image on screen (run A: menu 6-7 ms, close content 280 ms, run from History 437 ms, output kept every time, 0 black presents). Quitting releases it and restores the default mode (run C).",
"must_contain": [
"[ps5vk] swapchain handover: output kept, previous image on screen; 7.0 ms",
"display: VideoOut released with each swapchain (ps5vk-no-retain.txt)",
"[ps5vk] swapchain handover: output opened; 296.7 ms",
"[ps5vk] output: default mode restored",
"native quit: frontend status = 0"
],
"must_not_contain": [
"crash:"
],
"human_check": ""
}