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
|
|
@ -1,15 +1,15 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Campaign V slice V11 step 0: the #256/#257 discriminator, run on both backends.
|
||||
Repeated-portal-churn regression soak: memory growth and visual drift.
|
||||
|
||||
.DESCRIPTION
|
||||
Issues #256 (server-spawned signs and portals go invisible after repeated
|
||||
portal runs, while staying interactive) and #257 (working set grows to
|
||||
~1.5 GB over the same session) were both observed on the Vulkan backend in
|
||||
one long live session. Both filings demand the SAME discriminator, and both
|
||||
demand it BEFORE V11 deletes the OpenGL backend:
|
||||
|
||||
run the same repeated-churn route on GL and on Vulkan.
|
||||
Originated as Campaign V slice V11 step 0: the #256/#257 discriminator, run
|
||||
on both the GL and Vulkan backends before V11 deleted the former. Issues
|
||||
#256 (server-spawned signs and portals go invisible after repeated portal
|
||||
runs, while staying interactive) and #257 (working set grows to ~1.5 GB
|
||||
over the same session) were both observed on the Vulkan backend in one long
|
||||
live session, and running the same repeated-churn route on both arms told
|
||||
the campaign whether either bug predated Vulkan or was new to it:
|
||||
|
||||
growth / drift on BOTH arms -> a pre-existing publication or resource
|
||||
lifetime bug that the campaign merely
|
||||
|
|
@ -17,11 +17,17 @@
|
|||
growth / drift on VULKAN ONLY -> the new arm's resource lifecycle, and
|
||||
deleting its predecessor would destroy
|
||||
the only reference implementation that
|
||||
can answer the question.
|
||||
could answer the question.
|
||||
|
||||
After V11 the GL arm does not exist and this question costs far more to
|
||||
answer, which is why this script runs first and why its verdict can stop the
|
||||
slice.
|
||||
Campaign V slice V11 deleted the GL backend, so that specific
|
||||
before-and-after question can no longer be asked of any future bug — but
|
||||
the soak itself does not depend on having two arms. Comparing a fresh
|
||||
Holtburg capture against a much-later one from the SAME arm is still the
|
||||
closest automated instrument to what a user's long session actually shows,
|
||||
and the memory/entity/GPU trend analysis below never needed a second arm to
|
||||
begin with. -Backends now defaults to Vulkan alone; pass additional values
|
||||
only to compare arms that still exist (a future backend, a driver
|
||||
variant) — 'gl' is no longer a valid launch and the app ignores it.
|
||||
|
||||
WHAT IT MEASURES, per stop, per cycle:
|
||||
|
||||
|
|
@ -58,10 +64,10 @@
|
|||
determinism levers the differential gate forces are forced here for the same
|
||||
reason -- an unpinned sun or cloud sheet would swamp the signal.
|
||||
|
||||
NOT A PIXEL GATE. This script never compares the two backends to each other;
|
||||
that is run-backend-differential-gate.ps1's job and its thresholds are the
|
||||
campaign's. Here each arm is compared only with itself, and the verdict is
|
||||
about growth and drift.
|
||||
NOT A PIXEL GATE. This script never compares two backends to each other —
|
||||
even when -Backends names more than one arm, each is still compared only
|
||||
with itself. The verdict is about growth and drift within an arm, not
|
||||
parity between arms.
|
||||
|
||||
.PARAMETER Out
|
||||
Directory for both arms' logs, checkpoints, captures, samples and the verdict.
|
||||
|
|
@ -72,8 +78,8 @@
|
|||
warmup", and three stops per cycle makes 90 transits at the default.
|
||||
|
||||
.PARAMETER Backends
|
||||
Which arms to run, in order. Default gl then vulkan, so the arm under
|
||||
suspicion runs second and cannot be blamed for warming the machine.
|
||||
Which arms to run, in order. Default 'vulkan' alone — the only backend
|
||||
that exists since Campaign V slice V11 deleted the GL arm.
|
||||
|
||||
.PARAMETER ShotCycles
|
||||
Cycles on which Holtburg is captured. Default 1, 10, 20 and the last cycle.
|
||||
|
|
@ -89,7 +95,7 @@
|
|||
param(
|
||||
[Parameter(Mandatory = $true)][string]$Out,
|
||||
[int]$Cycles = 30,
|
||||
[string[]]$Backends = @('gl', 'vulkan'),
|
||||
[string[]]$Backends = @('vulkan'),
|
||||
[int[]]$ShotCycles,
|
||||
[int]$SettleMilliseconds = 6000,
|
||||
[int]$ShotSettleMilliseconds = 12000,
|
||||
|
|
@ -150,7 +156,7 @@ $stops = @(
|
|||
)
|
||||
|
||||
$lines = [System.Collections.Generic.List[string]]::new()
|
||||
$lines.Add('# GENERATED by tools/run-portal-churn-soak.ps1 -- the V11 step-0 discriminator.')
|
||||
$lines.Add('# GENERATED by tools/run-portal-churn-soak.ps1 -- the portal-churn regression soak.')
|
||||
$lines.Add("# $Cycles cycles x $($stops.Count) stops. Do not hand-edit; regenerate.")
|
||||
$lines.Add('')
|
||||
$lines.Add('wait world-ready 90000')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue