perf #418: widen the destination-lane budget only while the reveal hold is active
While a destination reservation hides the world behind the authored tunnel, the streaming frame meter now runs a hold-widened profile (StreamingWorkBudget.WidenForDestinationHold): the time ceiling rises from the authored 2 ms to an absolute 8 ms default (ACDREAM_STREAM_WORK_HOLD_DEST_MS is a measurement-only override), every count/byte dimension scales by the same factor so elapsed time stays the authoritative guard (the measured binder is Time at both ceilings), and the reserve fraction is re-derived (0.75 -> 0.9375) so the NON-destination lane's absolute per-frame caps are unchanged. The widening keys off the existing BeginDestinationReservation/ EndDestinationReservation bracket only, is derived per-Tick from the CURRENT budget (mid-hold quality swaps compose), and a frame with no reservation uses the authored budget verbatim (test-pinned). Portal holds ride the same bracket as login holds by construction - intended, and pinned by a kind-parity test through the real coordinator plus a live @telepoi portal hold (kind=portal gate-ready 3589 ms). Why: issue #418's next-hypothesis (1). Measured result: the ~5 s publication drip collapsed to ~2 s (loaded 625/625 at ~3.0 s, tunnel at 64-66 fps), the portal-hold gate-ready fell to ~3.6 s - and login gate-ready/total stayed at 8.4-8.8 s / 12.6-12.7 s, exposing the real remaining pacer: the login-cold render-thread upload/registration barrier behind GpuWorldState.IsRenderReady, which ran concurrently under the old drip. Full attribution appended to docs/ISSUES.md #418; no divergence-register row (the streamed result and reveal gate are byte-identical; only the scheduling rate during a hidden hold changed). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
e94e8e0c61
commit
a1d15a82dd
5 changed files with 420 additions and 7 deletions
|
|
@ -665,9 +665,21 @@ public sealed class StreamingController
|
|||
throw new InvalidOperationException(
|
||||
"StreamingController.Tick cannot be reentered.");
|
||||
|
||||
// #418: while the destination reservation hides the world behind the
|
||||
// authored tunnel, the frame runs on the hold-widened profile so the
|
||||
// reveal-critical drip is not paced by the authored mid-game budget.
|
||||
// Keyed off the existing reservation bracket only, derived from the
|
||||
// CURRENT budget every frame (so a mid-hold quality swap composes),
|
||||
// and reverting the moment EndDestinationReservation clears the
|
||||
// reservation. A frame with no reservation uses _workBudget verbatim.
|
||||
bool destinationHold = _destinationReservation is not null;
|
||||
var meter = new StreamingWorkMeter(
|
||||
_workBudget,
|
||||
destinationReservationActive: _destinationReservation is not null);
|
||||
destinationHold
|
||||
? _workBudget.WidenForDestinationHold(
|
||||
_configuredWorkBudgetOptions
|
||||
.HoldDestinationCeilingMilliseconds)
|
||||
: _workBudget,
|
||||
destinationReservationActive: destinationHold);
|
||||
_activeWorkMeter = meter;
|
||||
try
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue