perf(streaming): reserve destination reveal capacity

Join destination scheduling to the canonical reveal generation, protect its share across every typed frame-budget dimension, and prevent stale work from clearing a replacement reservation. Remove forced incomplete materialization and project retail's centered portal wait cue while the authored tunnel remains active.

Tests: Release build clean; 91 focused reservation/reveal tests; full solution 8,158 passed, 5 skipped.

Co-authored-by: Codex <noreply@openai.com>
This commit is contained in:
Erik 2026-07-24 19:39:23 +02:00
parent 98f1ac8934
commit 2ff8f844b0
33 changed files with 870 additions and 230 deletions

View file

@ -717,10 +717,16 @@ single-consumer peek/read source so the update thread prices a result before
adopting it. `StreamingController` is the sole scheduler: it admits through the
typed meter into reusable destination/control/unload/Near/Far FIFOs, preserves
exact reference identity and retry position, rejects stale generations, and
executes every class through the same meter. Priority changes order, never the
executes every class through the same meter. The canonical reveal generation
supplies one exact destination cell/radius reservation; the meter protects its
configured share across time, completion admissions, retained CPU bytes,
entity operations, requested GPU bytes, and GL-retirement admissions. A
completion retains the reveal generation that classified it, so a stale
completion or teardown cannot consume or clear a replacement generation's
reservation. Priority changes order and reserved share, never the global
budget. Lifecycle artifacts publish worker and per-class backlog, retained
bytes/age, yields, oversizes, overruns, and pending publication/retirement
facts.
bytes/age, per-lane work, yields, oversizes, overruns, and pending
publication/retirement facts.
At a hard login/portal reveal edge, `WorldGenerationQuiescence` makes the old
generation unavailable through the same `WorldRevealCoordinator` lifetime.
@ -748,12 +754,16 @@ pending publication.
`WorldRevealCoordinator` is the single App-layer owner of each login or portal
reveal lifetime. It composes the canonical `WorldRevealReadinessBarrier` with
generation-scoped lifecycle observation, so begin, preparation, readiness,
materialization, world visibility, completion, and cancellation cannot be
wired independently. The barrier joins `StreamingController`/`GpuWorldState`
generation-scoped lifecycle observation and the streaming destination
reservation, so begin, preparation, readiness, materialization, world
visibility, completion, cancellation, and reserved capacity cannot be wired
independently. The barrier joins `StreamingController`/`GpuWorldState`
static-mesh publication, `WbDrawDispatcher` composite-texture warmup, and
`PhysicsEngine` destination residency. Login's sky-only gate and portal-space
transit consume the same predicate; they differ only in presentation.
transit consume the same predicate; they differ only in presentation. There is
no timeout that reveals incomplete content: a delayed portal keeps its DAT
tunnel live and, after five seconds, projects retail's centered
`"In Portal Space - Please Wait..."` retained notice until readiness converges.
Composite preparation advances after `WbMeshAdapter.Tick` on the render
thread, never from the streaming worker. This is acdream's asynchronous equivalent of retail
`SmartBox::UseTime` holding position completion while