2.7 KiB
2.7 KiB
Modern Runtime Linux graphical continuation
Current checkpoint
Slice L0 completed at
66f114b258c0c37b51a7c0e04ca0d6441f4b1699.
The same AcDream.App now builds and publishes for linux-x64; there is no
Linux gameplay or renderer fork.
Canonical seams:
AcDream.Runtime.Platform.ApplicationPathSetowns XDG/Windows config, data, cache, plugin, screenshot, and diagnostic paths for graphical and headless hosts.AcDream.App.Platform.GraphicalHostPlatformServicesowns one startup OS, architecture, RID, native-dependency manifest, path set, and pacing factory.PlatformFramePacingWaiterFactoryselects the existing Windows high-resolution waitable timer or LinuxLinuxMonotonicFramePacingWaiter.- Linux waiting uses absolute
CLOCK_MONOTONIC+clock_nanosleep(TIMER_ABSTIME), retriesEINTR, does not busy-spin, and rejects use after disposal. - Windows legacy
%LOCALAPPDATA%\acdream\settings.jsonandkeybinds.jsonare copied only when the new roaming destination is absent. - bundled plugins are read beside the binary; user plugins are read from the portable data root. A successful bundled ID wins; a failed load does not reserve the ID.
Exact L0 evidence:
- Windows: Runtime 415, Headless 67, UI 543, App 3,736 / 3 skips, complete Release 8,799 / 5 skips.
- native Ubuntu/WSL: Runtime 415, Headless 67, UI 543, 14 L0 App tests.
- exact framework-dependent
linux-x64publish contains executable, managed closure, GLFW, OpenAL Soft, cimgui, shaders, and smoke plugin/manifest; directlddhas no unresolved dependency. - closeout:
docs/research/2026-07-27-slice-l0-platform-services.md.
Rollback:
git revert 66f114b258c0c37b51a7c0e04ca0d6441f4b1699
Next work — L1
Do not claim Linux graphical support merely from publish success. L1 must:
- start the exact package under the available X11 and Wayland sessions;
- capture OS/display/compositor/GPU/driver/OpenGL vendor, renderer, version, mandatory extensions, swap interval, refresh, DPI, and audio backend before renderer construction;
- create the OpenGL 4.3 core context and reject missing bindless texture or shader draw parameters with one actionable report;
- validate GLFW window/input callbacks, relative mouse/focus, framebuffer sizing, clipboard, and monitor facts;
- initialize OpenAL fail-open exactly as current Windows behavior permits;
- render a packaged smoke scene, capture a screenshot, and close with zero GL/OpenAL/window debt.
Historical test-only issue: two installed-DAT App tests still hard-code
C:\Turbine\Asheron's Call. They are not production blockers, but clean them
before claiming the complete App test suite on a clean Linux runner.