96 lines
4 KiB
Markdown
96 lines
4 KiB
Markdown
# 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.ApplicationPathSet` owns XDG/Windows config, data,
|
||
cache, plugin, screenshot, and diagnostic paths for graphical and headless
|
||
hosts.
|
||
- `AcDream.App.Platform.GraphicalHostPlatformServices` owns one startup OS,
|
||
architecture, RID, native-dependency manifest, path set, and pacing factory.
|
||
- `PlatformFramePacingWaiterFactory` selects the existing Windows
|
||
high-resolution waitable timer or Linux
|
||
`LinuxMonotonicFramePacingWaiter`.
|
||
- Linux waiting uses absolute `CLOCK_MONOTONIC` +
|
||
`clock_nanosleep(TIMER_ABSTIME)`, retries `EINTR`, does not busy-spin, and
|
||
rejects use after disposal.
|
||
- Windows legacy `%LOCALAPPDATA%\acdream\settings.json` and
|
||
`keybinds.json` are 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-x64` publish contains executable, managed
|
||
closure, GLFW, OpenAL Soft, cimgui, shaders, and smoke plugin/manifest;
|
||
direct `ldd` has no unresolved dependency.
|
||
- closeout:
|
||
`docs/research/2026-07-27-slice-l0-platform-services.md`.
|
||
|
||
Rollback:
|
||
|
||
```text
|
||
git revert 66f114b258c0c37b51a7c0e04ca0d6441f4b1699
|
||
```
|
||
|
||
## L1 implementation checkpoint
|
||
|
||
Canonical seams:
|
||
|
||
- `ACDREAM_DISPLAY_PROTOCOL=auto|x11|wayland` selects one immutable backend
|
||
before `Window.Create`.
|
||
- `GraphicalWindowBackendSelection` configures Silk's exact GLFW backend and
|
||
makes the packaged GLFW 3.4 native library win over older system installs.
|
||
- `GraphicalCapabilityRecord` captures platform, RID, display protocol, GL
|
||
identity/extensions/limits, framebuffer, input/window, audio, and terminal
|
||
ownership into one atomic report.
|
||
- `GraphicalGlFunctionProbe` actively 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=d3d12` reaches the AMD GPU and OpenGL 4.6, but
|
||
still lacks mandatory `GL_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:
|
||
|
||
```text
|
||
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.
|