4 KiB
Modern Runtime Linux graphical continuation
Current checkpoint
Slice L0 completed at
66f114b258c0c37b51a7c0e04ca0d6441f4b1699.
Slice L1's implementation checkpoint landed at
11501d52cad942850d88f83490710faf1d5cdf28.
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
L1 implementation checkpoint
Canonical seams:
ACDREAM_DISPLAY_PROTOCOL=auto|x11|waylandselects one immutable backend beforeWindow.Create.GraphicalWindowBackendSelectionconfigures Silk's exact GLFW backend and makes the packaged GLFW 3.4 native library win over older system installs.GraphicalCapabilityRecordcaptures platform, RID, display protocol, GL identity/extensions/limits, framebuffer, input/window, audio, and terminal ownership into one atomic report.GraphicalGlFunctionProbeactively validates bindless texture, draw-parameters plus MDI, SSBO, timer query, sRGB/depth/stencil FBO, and persistent coherent buffer behavior before renderer construction.- Unsupported contexts exit with code 4 and a precise report. No legacy renderer or fabricated fallback is introduced.
- Studio screenshot shutdown is deferred until the completed render frame; accepted and rejected startup paths both report zero terminal ownership.
Evidence:
- native Windows 11 + AMD Radeon RX 9070 XT: every active GL probe passes, OpenAL submits playback and disposes, the packaged smoke frame is intact, and terminal ownership is zero;
- WSLg X11 and Wayland: packaged GLFW 3.4 and protocol selection are correct,
but llvmpipe lacks mandatory
GL_ARB_bindless_texture; - WSLg with
GALLIUM_DRIVER=d3d12reaches the AMD GPU and OpenGL 4.6, but still lacks mandatoryGL_ARB_bindless_texture; this is a WSLg/Mesa capability limit, not an acdream package-resolution defect; - App tests pass 3,763 / 3 skips; the complete Release suite passes 8,826 / 5 skips;
- checkpoint:
docs/research/2026-07-27-slice-l1-graphical-capability-checkpoint.md.
Rollback:
git revert 11501d52cad942850d88f83490710faf1d5cdf28
Deferred continuation
Do not claim native Linux graphical support from WSLg. Run the exact
linux-x64 package on a physical Linux AMD RadeonSI or supported NVIDIA
driver under the available X11/Wayland sessions. It must pass the same
capability report, packaged smoke frame, input/window/audio checks, and
zero-debt shutdown. The user deferred this physical-driver gate and Slices
L2–L6 on 2026-07-27. L2 has not started; resume at the physical L1 gate.