Repository navigation
fix(videoout): report GPU driver shutdown failure from the present thread at Shutdown - #1225
Conversation
|
Two things before this can go in:
|
|
Corrected. The first version of this comment was wrong. It said Tested on Windows 10 (19045), MinGW-w64 GCC 15.2.0 (WinLibs r7), Release, RTX 3060 Laptop (driver 616.92), merged onto
Tested with AI assistance (Claude Code). |
|
Thanks for the review, and to @popcoder565 for testing on Windows.
|
|
Windows data for the closed-port question, from a real title. ps5-doom (lowbit/ps5-doom v1.1.0, PPSA99666, GPL homebrew) ends a Exit code 0xc0000409, on Repro: relink ps5-doom's |
|
Thanks @LeandroLP23 for the ps5-doom data. That exit path is a closed port with a flip still queued, not the shutdown rethrow this PR fixes, and handling it widens the scope here, so it is in a separate PR: #1648. It cancels flips on a port the title closed instead of terminating, and builds on this one. It is untested with ps5-doom itself; if you can run |
|
I checked the failed run for head |
|
Thanks @MarcZX100 for tracing the CI failure. Fixed in 3a64184: On the overlap with #1575: this PR was opened first (2026-10-07) and now carries the same registration fix, so I leave the choice to the maintainers. I will adjust this one if they prefer #1575. |
|
Update to my Windows results: #1367 creates the VideoOut window with Setup: Windows 10 (19045), RTX 3060 Laptop (616.92), GCC 15.2.0 (WinLibs r7), Release. I tested #1648, which carries this PR's commits, merged onto
So the driver changes in this PR and #1648 work on Windows; only the offscreen registration fails since #1367. My earlier offscreen passes were on 73ac9ef, before #1367 merged. #1575 registers the same tests with How to handle it is your call. The AGC device tests return 77 (skipped) when they can't get a device. Dropping the offscreen driver on Windows works on a desktop, but the Windows CI runner has no Vulkan device. 🤖 Addressed by Claude Code |
|
Please rebase onto main and force-push instead of merging main in (eb899d0). Since #1367 the tests this registers with |
|
For the Windows offscreen failure, current |
…read at Shutdown presentLoop called AgcDriverShutdown outside its try block, so a stored worker failure rethrown there terminated the process. Store it in flipQueue->failure so VideoOutDriver::Shutdown rethrows it after the join. Register the lifetime, decode and controls modes of video_out_flip_tests in ctest.
…Windows Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
3a64184 to
ab5803a
Compare
…ram.json The offscreen SDL driver cannot create a Vulkan window on Windows since the VideoOut window uses SDL_WINDOW_VULKAN, so the tests that open a port now exit 77 (skipped) like the other display tests, unless ANYPS5_REQUIRE_DISPLAY is set. The tests also write app0/sce_sys/param.json, which AppMetadata now requires.
ab5803a to
2663699
Compare
|
Rebased onto main and force-pushed, no merge commit (2663699). The tests that open a port now exit 77 (skipped) when no Vulkan window can be created, as the AGC device tests do, and |
|
Native Apple M2 validation confirms the shutdown behavior addressed by #1225 and the closed-port cancellation follow-up #1648. Environment: Apple M2 / 16 GB, macOS 27.2 beta 3, Apple Clang 21 / SDK 27, bundled SDL compiled from source, MoltenVK 1.4.2. The local integration already included ARM64/macOS branch
The existing An independent subagent reran pending-close, reopen, controls and presentation successfully, and reviewed error preservation and the macOS conflict resolution. No new production fix was authored. No games, full suite, or visible-output checks were performed; presentation results establish flip state and pacing, not pixel correctness. AI-assisted validation using Codex. |
|
Thanks @krishalivaibhav for the Apple M2 validation: it confirms that |
|
Checked: build + full ctest on current main merged (551/551). |
What
Part of #1040.
VideoOutDriver::presentLoopcalledAgcDriverShutdown_nid_postfix()outside its try block. When the driver had a stored worker failure,Driver::Shutdownrethrew it on the present thread and the process terminated. The failure is now stored inflipQueue->failure, soVideoOutDriver::Shutdownrethrows it after the join, as the lifetime test expects.video_out_flip_testsis now built withBUILD_TESTINGand thelifetime,decodeandcontrolsmodes are registered in ctest withSDL_VIDEODRIVER=offscreen.Not included: the
reopenmode. ThereFailsets the queue-wide failure while the present loop runs and the loop terminates the process (0d29a0a). Should a flip on a closed port still kill the process, or stay a per-port failure as the test expects? The other six modes need aparam.jsonfixture.Tested
Linux, SDL offscreen, lavapipe:
video_out_flip_lifetime,video_out_flip_decodeandvideo_out_flip_controlspass. Without theVideoOutDriver.cppchangevideo_out_flip_lifetimeaborts.tools/check_conventions.py --base upstream/mainpasses. Not tested on Windows (availability of the offscreen SDL driver there is unverified).Checklist
main; no other open PR implemented the same functions when this was opened (fix(libSceVideoOut): propagate shutdown driver error and register flip tests #1575 was opened later and overlaps).mdfiles or images added to the repository