acdream/docs/research/2026-07-27-slice-l1-graphical-capability-checkpoint.md

5.3 KiB
Raw Blame History

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

git revert 11501d52cad942850d88f83490710faf1d5cdf28