feat(render): Vulkan campaign V11 step 4 — retire GL from CI and gate scripts
Closes out the GL deletion by fixing the CI workflow and developer gate
scripts that still assumed a GL arm existed to compare against, build,
or select via ACDREAM_RENDER_BACKEND.
.github/workflows/headless-portability.yml: linux-graphical's "Verify
actionable unsupported-driver gate" step is deleted outright — it ran
the deleted `ui-studio` CLI verb (Studio was removed at Commit 1) to
prove the GL capability gate rejects Mesa's llvmpipe driver, and there
is no more GL capability gate for any driver to pass or fail. Its test
filter dropped two dead entries (GraphicalCapabilityRequirementsTests,
deleted at Commit 2; StudioWindowTests, already gone). Its package
contract check dropped the libcimgui.so assertion (ImGui's native
bridge, deleted at Commit 1). linux-vulkan's explanatory comment, which
described GL's rejection as the reason no cross-backend pixel diff runs
in CI, is rewritten to explain there is no GL arm left at all. Two dead
src/AcDream.UI.ImGui/** path triggers (that project no longer exists)
are removed from both the pull_request and push filters.
tools/run-backend-differential-gate.ps1 and its dedicated route file
tools/connected-backend-differential.route.txt are deleted: the whole
script's purpose was comparing a GL launch against a Vulkan launch of
the same route, and there is no second arm left to compare. Single-arm
regression checking already exists via run-offline-pixel-gate.ps1's
-Baseline mechanism.
tools/run-portal-churn-soak.ps1 is simplified rather than deleted: its
repeated-portal-churn methodology (within-arm capture comparison,
memory/entity/GPU trend analysis) has value independent of the
GL-versus-Vulkan question it was built to answer for issues #256/#257
before V11. -Backends now defaults to @('vulkan') alone; the doc
comments are rewritten from "step 0 discriminator, run before V11" to
an ongoing single-arm regression soak.
tools/run-offline-pixel-gate.ps1 drops its now-nonfunctional -Backend
parameter (ACDREAM_RENDER_BACKEND has read zero call sites since
RuntimeOptions.RenderBackend was removed at Commit 2 — passing -Backend
gl silently launched Vulkan anyway) along with its GL-escape-hatch
example and every comment that referenced the now-deleted differential
gate. tools/run-connected-world-lifecycle-gate.ps1,
tools/run-offline-vulkan-capture.ps1, and
tools/run-repeat-connected-gate.ps1 keep their (harmless, already
no-op) ACDREAM_RENDER_BACKEND set/clear lines but have their
now-inaccurate "escape hatch" / "GL run" comments corrected to state
plainly that the variable is unread and the line is kept only for the
historical record.
No .cs files touched; `dotnet build AcDream.slnx -c Release` unaffected
(0 warnings, 0 errors, matching the prior commit's build).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
7a0227c12e
commit
5852bdb877
8 changed files with 72 additions and 604 deletions
62
.github/workflows/headless-portability.yml
vendored
62
.github/workflows/headless-portability.yml
vendored
|
|
@ -13,7 +13,6 @@ on:
|
|||
- "src/AcDream.Headless/**"
|
||||
- "src/AcDream.App/**"
|
||||
- "src/AcDream.UI.Abstractions/**"
|
||||
- "src/AcDream.UI.ImGui/**"
|
||||
- "tests/AcDream.Core.Tests/**"
|
||||
- "tests/AcDream.Core.Net.Tests/**"
|
||||
- "tests/AcDream.Content.Tests/**"
|
||||
|
|
@ -35,7 +34,6 @@ on:
|
|||
- "src/AcDream.Headless/**"
|
||||
- "src/AcDream.App/**"
|
||||
- "src/AcDream.UI.Abstractions/**"
|
||||
- "src/AcDream.UI.ImGui/**"
|
||||
- "tests/AcDream.Core.Tests/**"
|
||||
- "tests/AcDream.Core.Net.Tests/**"
|
||||
- "tests/AcDream.Content.Tests/**"
|
||||
|
|
@ -153,7 +151,7 @@ jobs:
|
|||
dotnet test `
|
||||
tests/AcDream.App.Tests/AcDream.App.Tests.csproj `
|
||||
-c Release `
|
||||
--filter "FullyQualifiedName~LinuxMonotonicFramePacingWaiterTests|FullyQualifiedName~LinuxPlatformBoundaryTests|FullyQualifiedName~GraphicalHostPlatformServicesTests|FullyQualifiedName~GraphicalLegacyConfigurationMigratorTests|FullyQualifiedName~GraphicalWindowBackendSelectionTests|FullyQualifiedName~GraphicalCapabilityRequirementsTests|FullyQualifiedName~StudioWindowTests"
|
||||
--filter "FullyQualifiedName~LinuxMonotonicFramePacingWaiterTests|FullyQualifiedName~LinuxPlatformBoundaryTests|FullyQualifiedName~GraphicalHostPlatformServicesTests|FullyQualifiedName~GraphicalLegacyConfigurationMigratorTests|FullyQualifiedName~GraphicalWindowBackendSelectionTests"
|
||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
||||
|
||||
- name: Verify Linux package contract
|
||||
|
|
@ -165,7 +163,6 @@ jobs:
|
|||
test -f "$root/AcDream.App.dll"
|
||||
test -f "$root/libglfw.so.3"
|
||||
test -f "$root/libopenal.so"
|
||||
test -f "$root/libcimgui.so"
|
||||
test -f "$root/Rendering/Shaders/mesh_modern.vert"
|
||||
test -f "$root/plugins/AcDream.Plugins.Smoke/AcDream.Plugins.Smoke.dll"
|
||||
test -f "$root/plugins/AcDream.Plugins.Smoke/plugin.json"
|
||||
|
|
@ -183,45 +180,26 @@ jobs:
|
|||
--exclude='FramePacingWaiterFactory.cs' \
|
||||
--exclude='WindowsHighResolutionFramePacingWaiter.cs'
|
||||
|
||||
- name: Verify actionable unsupported-driver gate
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
root=artifacts/acdream-linux-x64
|
||||
report=artifacts/linux-x11-capabilities.json
|
||||
set +e
|
||||
ACDREAM_DISPLAY_PROTOCOL=x11 \
|
||||
xvfb-run -a "$root/AcDream.App" \
|
||||
ui-studio /tmp/not-needed \
|
||||
--mockup \
|
||||
--capability-report "$report"
|
||||
code=$?
|
||||
set -e
|
||||
|
||||
test "$code" -eq 4
|
||||
test "$(jq -r '.ActiveDisplayProtocol' "$report")" = X11
|
||||
test "$(jq -r '.Lifecycle.ShutdownComplete' "$report")" = true
|
||||
test "$(jq -r '.Lifecycle.OwnedWindowCount' "$report")" -eq 0
|
||||
test "$(jq -r '.Lifecycle.OwnedGlApiCount' "$report")" -eq 0
|
||||
test "$(jq -r '.Lifecycle.OwnedInputContextCount' "$report")" -eq 0
|
||||
jq -e '.SupportFailures | length > 0' "$report"
|
||||
|
||||
# Campaign V slice V9. The GL job above proves the unsupported-driver gate
|
||||
# fires on Mesa's software OpenGL; this one proves the Vulkan backend does the
|
||||
# opposite on Mesa's software Vulkan. lavapipe passes the capability gate that
|
||||
# llvmpipe-GL cannot, because mandatory GL_ARB_bindless_texture has no llvmpipe
|
||||
# implementation while every Vulkan feature acdream requires is core 1.3 or a
|
||||
# descriptor-indexing feature lavapipe implements. That makes this the first CI
|
||||
# job in the project's history that renders a frame.
|
||||
# Campaign V slice V9 built this job to prove lavapipe (Mesa's software
|
||||
# Vulkan) passes the capability gate: every Vulkan feature acdream requires
|
||||
# is core 1.3 or a descriptor-indexing feature lavapipe implements. That made
|
||||
# it the first CI job in the project's history to render a frame.
|
||||
#
|
||||
# NOT DONE HERE, deliberately: a GL-versus-Vulkan pixel comparison. Two
|
||||
# independent reasons, either of which alone is disqualifying. First, the GL
|
||||
# job never produces a frame at all: it asserts exit code 4, so there is no
|
||||
# left-hand side. Second, even if llvmpipe-GL could run, the probe harness
|
||||
# renders synthetic verification scenes rather than the world, and the world
|
||||
# needs retail DATs that CI does not have and cannot be given. The real
|
||||
# GL-versus-Vulkan differential is V7's, on the developer machine, against the
|
||||
# DATs, with both clocks pinned. See plan section 5.5.20.
|
||||
# Until Campaign V slice V11, linux-graphical (above) carried the mirror
|
||||
# case: llvmpipe (Mesa's software OpenGL) FAILING the capability gate,
|
||||
# because mandatory GL_ARB_bindless_texture has no llvmpipe implementation.
|
||||
# V11 deleted the GL backend entirely, so there is no more GL capability
|
||||
# gate for any driver to pass or fail — that job's "Verify actionable
|
||||
# unsupported-driver gate" step went with it. "Verify the forced-unsupported
|
||||
# gate exits 4" below is what now proves the exit-code-4 contract still
|
||||
# fires, forcing an unsupported VULKAN feature instead.
|
||||
#
|
||||
# NOT DONE HERE, deliberately: a GL-versus-Vulkan pixel comparison. It was
|
||||
# never viable in CI even before V11 — the probe harness renders synthetic
|
||||
# verification scenes rather than the world, and the world needs retail DATs
|
||||
# that CI does not have and cannot be given. The real GL-versus-Vulkan
|
||||
# differential was V7's, on the developer machine, against the DATs, with
|
||||
# both clocks pinned, before V11 deleted the GL arm it depended on.
|
||||
linux-vulkan:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue