mirror of
https://github.com/storytold/effectcraft.git
synced 2026-10-14 19:27:05 -04:00
On an ASUS G513QY (Radeon RX 6800M, Adrenalin 26.9.2, Windows 11) every launch died with STATUS_ACCESS_VIOLATION inside amdvlk64.dll, on a driver worker thread, a moment after the first frame: eframe shows the window it created hidden, the resulting resize re-creates the swapchain, and the driver crashes there (same offset on two driver versions, with the OBS/Steam/Epic Vulkan layers disabled, and with FIFO, immediate and latency-1 presentation). DirectX 12 and OpenGL open the window fine. A crash in a driver can't be caught, and the launch guard (#243) removed its marker at the first frame, so this looked like a successful launch every time and Window Graphics never switched. The marker now stays until the window has kept drawing for SETTLE (3 s) or the app quits normally before that; frame_drawn returns the time left and the app asks for a repaint then, so an idle window settles too. The notice, the Settings note and docs/preferences.md describe the new rule. Verified on that machine with a scratch settings folder: launch 1 (Vulkan) crashed and left the marker, launch 2 switched to OpenGL with the notice and closed with exit code 0, launch 3 stayed on OpenGL without the notice. Tests: effectcraft launch_guard a_launch_that_stops_after_its_first_frame_switches_the_next_to_opengl (a first frame then drop: the next launch gets GL and the notice; a normal quit in that time leaves no marker), and the existing test now asserts that the first frames don't settle a launch (marker present at SETTLE/2, gone at SETTLE). Co-Authored-By: Claude Fable 5.1 <[email protected]>