docs(linux): park Slice L at L1 checkpoint

This commit is contained in:
Erik 2026-07-27 12:35:47 +02:00
parent 11501d52ca
commit 97a095d628
9 changed files with 275 additions and 39 deletions

View file

@ -0,0 +1,122 @@
# Slice L1 graphical capability checkpoint
**Date:** 2026-07-27
**Production commit:** `11501d52cad942850d88f83490710faf1d5cdf28`
**Status:** implementation complete; further Linux graphical work deferred by
the user on 2026-07-27. The supported physical-Linux driver matrix remains the
first gate when Slice L resumes.
## Scope
This checkpoint establishes the Linux/Windows graphical startup oracle before
renderer construction. It does not add a renderer fallback and does not change
gameplay or visual behavior.
`GraphicalHostPlatformServices` now owns an immutable GLFW backend selection.
`ACDREAM_DISPLAY_PROTOCOL=auto|x11|wayland` is consumed once before
`Window.Create`. The platform owner configures the exact
`GlfwProvider.UninitializedGLFW` instance used by Silk's window backend.
Silk 2.23 asks for `libglfw.so.3.3`, while its packaged multi-backend GLFW 3.4
asset is `libglfw.so.3`. The default native search order previously selected
Ubuntu's machine-global GLFW 3.3 before reaching the packaged 3.4 library.
Startup now prioritizes the application directory inside Silk's path resolver,
so X11/Wayland selection and package provenance are deterministic.
Before any renderer object is created, the client records:
- OS, RID, requested and active display protocol, GLFW backend/version;
- GL vendor, renderer, version, GLSL, context flags/profile, limits, and every
extension;
- default framebuffer color/depth/stencil/MSAA/sRGB facts;
- window, monitor, refresh, framebuffer/logical size, and input-device facts;
- audio request/availability/playback/disposal state;
- window/GL/input/audio ownership and terminal shutdown state.
Advertisement is not treated as proof. A balanced active probe executes:
- bindless texture handle, resident, and non-resident calls;
- a shader using `gl_DrawIDARB`/`gl_BaseInstanceARB` plus MDI;
- SSBO allocation and binding;
- a timer query;
- an sRGB color plus depth/stencil framebuffer;
- persistent coherent mapping whenever buffer storage is advertised.
Unsupported hardware receives one actionable report and exit code 4. The
Studio smoke defers native close until after `RenderStack.EndFrame`, so both
successful and rejected startup release every owned context resource before
the final report is atomically rewritten.
## Positive supported gate
Windows 11 Pro build 26200, AMD Radeon RX 9070 XT, driver
`32.0.31021.5001`:
- GLFW `3.4.0 Win32 WGL`;
- OpenGL `4.3.0 Core Profile Context 26.6.4.260624`;
- 240 Hz monitor, 1280 x 720 logical/framebuffer smoke;
- bindless, shader draw parameters, MDI, SSBO, timer query, sRGB
depth/stencil, and persistent coherent storage all actively pass;
- OpenAL Soft default device opens, accepts the 50 ms smoke wave, and disposes;
- the 1280 x 720 retained-UI mockup screenshot is visually intact;
- process exits 0 with zero owned window, GL, input, and audio resources and
`ShutdownComplete=true`.
## Linux backend and negative-capability gates
Package: exact framework-dependent `linux-x64` publish of
`11501d52cad942850d88f83490710faf1d5cdf28`.
Host: Ubuntu 24.04.3 LTS under WSL2 kernel
`6.6.87.2-microsoft-standard-WSL2`, WSLg X11 and Wayland endpoints.
Both explicit backends create an OpenGL 4.5 core context, expose one keyboard
and one mouse, capture their framebuffer/monitor facts, and identify the
packaged multi-backend GLFW 3.4:
| Protocol | Monitor | Renderer | Result |
|---|---|---|---|
| X11 | `XWAYLAND0`, 60 Hz | Mesa llvmpipe 25.2.8 | exit 4: bindless absent |
| Wayland | `weston rdp`, 60 Hz | Mesa llvmpipe 25.2.8 | exit 4: bindless absent |
| X11 + `GALLIUM_DRIVER=d3d12` | `XWAYLAND0`, 60 Hz | D3D12 (AMD Radeon RX 9070 XT), GL 4.6 | exit 4: bindless absent |
Each final report names only `GL_ARB_bindless_texture` as the mandatory
missing feature, preserves the complete capability record, and reports zero
window/GL/input/audio ownership with `ShutdownComplete=true`. This is the
intended mandatory-modern-renderer failure, not an accepted Linux driver row.
The Ubuntu graphical CI job now builds/publishes the App, runs the focused
platform/capability tests, checks the native package closure, and verifies the
same actionable X11 software-driver rejection under Xvfb.
## Automated gates
- graphical backend/capability/Studio focused tests: 29/29;
- App Release tests: 3,763 passed / 3 skipped;
- complete Release solution: 8,826 passed / 5 skipped;
- Release solution build: zero warnings and zero errors;
- Windows supported smoke: exit 0, screenshot present, all function probes
pass, audio playback submitted, all terminal ledgers zero;
- WSLg X11 and Wayland negative gates: exit 4, exact bindless diagnostic,
all terminal ledgers zero;
- concurrent two-account Linux headless process remained 2/2 in-world with
zero faults/reconnects/resource-envelope violations throughout the gates.
## Deferred L1 acceptance
Do not claim Linux graphical support from WSLg. L1 still requires at least one
physical supported Linux row and the committed driver matrix:
- AMD Mesa/RadeonSI X11 and Wayland;
- NVIDIA proprietary X11 and supported Wayland;
- Intel only when every mandatory capability is present.
On each supported row, rerun the packaged screenshot/input/audio/teardown
smoke. Only then close L1 and begin the connected L2 route. This work and
Slices L2L6 were explicitly parked by the user on 2026-07-27.
## Rollback
```text
git revert 11501d52cad942850d88f83490710faf1d5cdf28
```