122 lines
5.3 KiB
Markdown
122 lines
5.3 KiB
Markdown
# 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 L2–L6 were explicitly parked by the user on 2026-07-27.
|
||
|
||
## Rollback
|
||
|
||
```text
|
||
git revert 11501d52cad942850d88f83490710faf1d5cdf28
|
||
```
|