@ifc-lite/renderer 6.3.1 → 6.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -2
- package/dist/device-recovery.d.ts.map +1 -1
- package/dist/device-recovery.js +45 -2
- package/dist/device-recovery.js.map +1 -1
- package/dist/scene-device-recovery.d.ts +5 -3
- package/dist/scene-device-recovery.d.ts.map +1 -1
- package/dist/scene-device-recovery.js +15 -1
- package/dist/scene-device-recovery.js.map +1 -1
- package/dist/scene-streaming-recovery.d.ts +14 -0
- package/dist/scene-streaming-recovery.d.ts.map +1 -0
- package/dist/scene-streaming-recovery.js +163 -0
- package/dist/scene-streaming-recovery.js.map +1 -0
- package/dist/scene.d.ts +2 -5
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +5 -8
- package/dist/scene.js.map +1 -1
- package/dist/section-2d-line-buffer.d.ts.map +1 -1
- package/dist/section-2d-line-buffer.js +8 -2
- package/dist/section-2d-line-buffer.js.map +1 -1
- package/dist/symbolic-fill-upload.d.ts +3 -0
- package/dist/symbolic-fill-upload.d.ts.map +1 -0
- package/dist/symbolic-fill-upload.js +29 -0
- package/dist/symbolic-fill-upload.js.map +1 -0
- package/dist/symbolic-overlay-pipelines.d.ts +0 -11
- package/dist/symbolic-overlay-pipelines.d.ts.map +1 -1
- package/dist/symbolic-overlay-pipelines.js +4 -13
- package/dist/symbolic-overlay-pipelines.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -68,8 +68,13 @@ renderer.onDeviceLost(async () => {
|
|
|
68
68
|
scene in place, preserving the `Renderer`, camera, IFC geometry, model
|
|
69
69
|
placements, visibility, selection and colour overrides. Concurrent calls share
|
|
70
70
|
one attempt. It returns a typed failure instead of presenting an incomplete
|
|
71
|
-
scene when CPU geometry has been released,
|
|
72
|
-
geometry cannot be restored, or public `addMesh()` content has
|
|
71
|
+
scene when CPU geometry has been released, a finalizer or authoring transaction
|
|
72
|
+
is active, cold geometry cannot be restored, or public `addMesh()` content has
|
|
73
|
+
no CPU source. Retained streaming fragments are rebuilt from their CPU owners;
|
|
74
|
+
the pending queue resumes from its existing cursor only after recovery commits.
|
|
75
|
+
Frame and stream-end consumers cannot access the staged replacement device.
|
|
76
|
+
Clearing or replacing the source during an awaited recovery refuses that attempt
|
|
77
|
+
without consuming the new load's queue. Append-only pending arrivals are retained.
|
|
73
78
|
Point clouds, reference images and transient overlay layers are reported in
|
|
74
79
|
`omissions` when they must be reloaded by the host.
|
|
75
80
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-recovery.d.ts","sourceRoot":"","sources":["../src/device-recovery.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"device-recovery.d.ts","sourceRoot":"","sources":["../src/device-recovery.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAChH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,yEAAyE;AACzE,MAAM,MAAM,sBAAsB,GAC9B,cAAc,GACd,kBAAkB,GAClB,eAAe,GACf,mBAAmB,GACnB,oBAAoB,CAAC;AAEzB,4EAA4E;AAC5E,MAAM,MAAM,2BAA2B,GACnC,UAAU,GACV,uBAAuB,GACvB,mBAAmB,GACnB,6BAA6B,GAC7B,qBAAqB,GACrB,oBAAoB,GACpB,sBAAsB,GACtB,oBAAoB,CAAC;AAEzB,qDAAqD;AACrD,MAAM,MAAM,oBAAoB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,SAAS,sBAAsB,EAAE,CAAA;CAAE,GAC1D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,2BAA2B,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAExE,mFAAmF;AACnF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE;QAAE,iBAAiB,IAAI,sBAAsB,EAAE,CAAA;KAAE,CAAC;IAC5D,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,YAAY,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC;IAC/F,QAAQ,EAAE;QACR,QAAQ,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;QAC/C,mBAAmB,EAAE,OAAO,CAAC;QAC7B,yBAAyB,EAAE,OAAO,CAAC;QACnC,SAAS,EAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACvC,yFAAyF;QACzF,iBAAiB,EAAE,QAAQ,CAAC,+BAA+B,CAAC,GAAG,IAAI,CAAC;KACrE,CAAC;IACF,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC3D,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,QAAQ,CACN,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAC9D,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,sBAAsB,IAAI,IAAI,CAAC;IAC/B,aAAa,IAAI,IAAI,CAAC;CACvB;AAED,4DAA4D;AAC5D,wBAAgB,uBAAuB,IAAI,KAAK,CAI/C;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA4B/F"}
|
package/dist/device-recovery.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
-
import { perfCount } from '@ifc-lite/load-trace';
|
|
4
|
+
import { perfCount, perfCounters } from '@ifc-lite/load-trace';
|
|
5
5
|
import { WebGPUDevice } from './device.js';
|
|
6
|
+
import { acquireStreamingRecoveryLease, restoredGpuRollback } from './scene-streaming-recovery.js';
|
|
6
7
|
/** Internal stable error used by readiness and recovery. */
|
|
7
8
|
export function rendererDeviceLostError() {
|
|
8
9
|
const error = new Error('GPU device was lost before the renderer became ready');
|
|
@@ -21,9 +22,18 @@ export function recoverRendererDevice(host) {
|
|
|
21
22
|
host.ready = false;
|
|
22
23
|
host.deviceLostGeneration = generation;
|
|
23
24
|
host.rejectReadyWaiters(rendererDeviceLostError());
|
|
25
|
+
perfCount('gpu.recovery.attempts');
|
|
24
26
|
const run = host.initChain.then(() => recoverRendererDeviceOnce(host, generation), () => recoverRendererDeviceOnce(host, generation));
|
|
25
27
|
host.initChain = run.then(() => undefined, () => undefined);
|
|
26
28
|
host.recovery.inFlight = run;
|
|
29
|
+
const reportOutcome = (outcome) => {
|
|
30
|
+
perfCount(`gpu.recovery.outcome.${outcome}`);
|
|
31
|
+
// The load root can already be closed. Preserve the bounded typed category
|
|
32
|
+
// in opt-in console diagnostics too, never as a timing/completion fallback.
|
|
33
|
+
if (perfCounters.enabled)
|
|
34
|
+
console.info('[Renderer] Device recovery outcome:', outcome);
|
|
35
|
+
};
|
|
36
|
+
void run.then(result => reportOutcome(result.ok ? 'restored' : result.reason), () => reportOutcome('rejected'));
|
|
27
37
|
const clearInFlight = () => {
|
|
28
38
|
if (host.recovery.inFlight === run)
|
|
29
39
|
host.recovery.inFlight = null;
|
|
@@ -49,6 +59,20 @@ async function recoverRendererDeviceOnce(host, generation) {
|
|
|
49
59
|
if (generation !== host.initGeneration || host.destroyed) {
|
|
50
60
|
return { ok: false, reason: 'renderer-destroyed' };
|
|
51
61
|
}
|
|
62
|
+
const scene = host.scene;
|
|
63
|
+
const sceneHost = scene;
|
|
64
|
+
const lease = acquireStreamingRecoveryLease(sceneHost);
|
|
65
|
+
let rollbackRestoredGpu = null;
|
|
66
|
+
const sourceValid = () => host.scene === scene && (!lease || lease.valid());
|
|
67
|
+
const sourceRefused = () => {
|
|
68
|
+
host.deviceLost = true;
|
|
69
|
+
host.ready = false;
|
|
70
|
+
rollbackRestoredGpu?.();
|
|
71
|
+
// Do not clear CPU state belonging to a newer load. Replacement pipelines
|
|
72
|
+
// remain private until commit; normal frame/stream consumers see no device.
|
|
73
|
+
host.teardown(false);
|
|
74
|
+
return { ok: false, reason: 'scene-not-settled' };
|
|
75
|
+
};
|
|
52
76
|
for (const omission of host.overlays.recoveryOmissions())
|
|
53
77
|
host.recovery.omissions.add(omission);
|
|
54
78
|
if (host.recovery.lostReferenceImages)
|
|
@@ -65,7 +89,11 @@ async function recoverRendererDeviceOnce(host, generation) {
|
|
|
65
89
|
host.recovery.pointCloudOptions = pointCloudOptions ?? null;
|
|
66
90
|
let phase = 'scene';
|
|
67
91
|
try {
|
|
68
|
-
|
|
92
|
+
if (!sourceValid())
|
|
93
|
+
return sourceRefused();
|
|
94
|
+
scene.discardGpuResourcesForRecovery();
|
|
95
|
+
if (lease && !lease.discarded())
|
|
96
|
+
return sourceRefused();
|
|
69
97
|
host.teardown(false);
|
|
70
98
|
host.device = new WebGPUDevice();
|
|
71
99
|
// #6993: the re-upload path, counted where it happens. Recovery builds a
|
|
@@ -89,6 +117,8 @@ async function recoverRendererDeviceOnce(host, generation) {
|
|
|
89
117
|
if (host.deviceLossSequence !== lossSequence) {
|
|
90
118
|
throw new Error('Replacement GPU device was lost during initialization');
|
|
91
119
|
}
|
|
120
|
+
if (!sourceValid())
|
|
121
|
+
return sourceRefused();
|
|
92
122
|
const initializedPreparation = host.scene.prepareDeviceRecovery();
|
|
93
123
|
if (!initializedPreparation.ok) {
|
|
94
124
|
host.deviceLost = true;
|
|
@@ -98,12 +128,19 @@ async function recoverRendererDeviceOnce(host, generation) {
|
|
|
98
128
|
}
|
|
99
129
|
if (host.recovery.quantizedBatchesRequested && host.pipeline) {
|
|
100
130
|
const quantized = await host.pipeline.ensureQuantizedPipelines();
|
|
131
|
+
if (!sourceValid())
|
|
132
|
+
return sourceRefused();
|
|
101
133
|
host.scene.setQuantizedBatches(quantized);
|
|
102
134
|
}
|
|
103
135
|
phase = 'scene';
|
|
104
136
|
if (!host.pipeline)
|
|
105
137
|
throw new Error('Replacement render pipeline was not initialized');
|
|
138
|
+
if (!sourceValid())
|
|
139
|
+
return sourceRefused();
|
|
106
140
|
host.scene.restoreGpuResourcesAfterRecovery(host.device.getDevice(), host.pipeline);
|
|
141
|
+
rollbackRestoredGpu = restoredGpuRollback(sceneHost);
|
|
142
|
+
if (lease && !lease.restored())
|
|
143
|
+
return sourceRefused();
|
|
107
144
|
// A loss which settles during the synchronous restore cannot run its
|
|
108
145
|
// device.lost callback until this continuation yields. Let it latch before
|
|
109
146
|
// readiness is published, then revalidate because the yield also permits a
|
|
@@ -116,10 +153,13 @@ async function recoverRendererDeviceOnce(host, generation) {
|
|
|
116
153
|
if (host.deviceLossSequence !== lossSequence) {
|
|
117
154
|
throw new Error('Replacement GPU device was lost during scene restore');
|
|
118
155
|
}
|
|
156
|
+
if (!sourceValid())
|
|
157
|
+
return sourceRefused();
|
|
119
158
|
const restoredPreparation = host.scene.prepareDeviceRecovery();
|
|
120
159
|
if (!restoredPreparation.ok) {
|
|
121
160
|
host.deviceLost = true;
|
|
122
161
|
host.ready = false;
|
|
162
|
+
rollbackRestoredGpu?.();
|
|
123
163
|
host.teardown(false);
|
|
124
164
|
return restoredPreparation;
|
|
125
165
|
}
|
|
@@ -128,6 +168,8 @@ async function recoverRendererDeviceOnce(host, generation) {
|
|
|
128
168
|
// readiness is observable, so fit-to-view and sections cannot retain the
|
|
129
169
|
// vanished layers' extents.
|
|
130
170
|
host.refreshPlacementBounds();
|
|
171
|
+
if (!sourceValid())
|
|
172
|
+
return sourceRefused();
|
|
131
173
|
host.deviceLost = false;
|
|
132
174
|
host.deviceLostInfo = null;
|
|
133
175
|
host.recovery.lostReferenceImages = false;
|
|
@@ -143,6 +185,7 @@ async function recoverRendererDeviceOnce(host, generation) {
|
|
|
143
185
|
host.deviceLost = true;
|
|
144
186
|
host.ready = false;
|
|
145
187
|
try {
|
|
188
|
+
rollbackRestoredGpu?.();
|
|
146
189
|
host.teardown(false);
|
|
147
190
|
}
|
|
148
191
|
catch (teardownError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-recovery.js","sourceRoot":"","sources":["../src/device-recovery.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"device-recovery.js","sourceRoot":"","sources":["../src/device-recovery.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAgEnG,4DAA4D;AAC5D,MAAM,UAAU,uBAAuB;IACrC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAChF,KAAK,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACvC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,qBAAqB,CAAC,IAA0B;IAC9D,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1D,IAAI,CAAC,IAAI,CAAC,UAAU;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAChF,IAAI,IAAI,CAAC,SAAS;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAExF,MAAM,UAAU,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC;IACzC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC;IACvC,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACnD,SAAS,CAAC,uBAAuB,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAC7B,GAAG,EAAE,CAAC,yBAAyB,CAAC,IAAI,EAAE,UAAU,CAAC,EACjD,GAAG,EAAE,CAAC,yBAAyB,CAAC,IAAI,EAAE,UAAU,CAAC,CAClD,CAAC;IACF,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC5D,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC;IAC7B,MAAM,aAAa,GAAG,CAAC,OAA8D,EAAE,EAAE;QACvF,SAAS,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;QAC7C,2EAA2E;QAC3E,4EAA4E;QAC5E,IAAI,YAAY,CAAC,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,OAAO,CAAC,CAAC;IACzF,CAAC,CAAC;IACF,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;IAChH,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,GAAG;YAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;IACpE,CAAC,CAAC;IACF,KAAK,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAC5C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,IAA0B,EAC1B,UAAkB;IAElB,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC;IAC7C,IAAI,UAAU,KAAK,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACzD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IACrD,CAAC;IACD,IAAI,QAAoD,CAAC;IACzD,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iEAAiE,EAAE,KAAK,CAAC,CAAC;QACxF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,IAAI,UAAU,KAAK,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACzD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IACrD,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,SAAS,GAAG,KAAqC,CAAC;IACxD,MAAM,KAAK,GAAG,6BAA6B,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,mBAAmB,GAAwB,IAAI,CAAC;IACpD,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,GAAyB,EAAE;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAC3C,mBAAmB,EAAE,EAAE,CAAC;QACxB,0EAA0E;QAC1E,4EAA4E;QAC5E,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IACpD,CAAC,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE;QAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChG,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB;QAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACvF,IAAI,IAAI,CAAC,kBAAkB,EAAE,SAAS,EAAE;QAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtF,2EAA2E;IAC3E,0EAA0E;IAC1E,0EAA0E;IAC1E,4EAA4E;IAC5E,2EAA2E;IAC3E,qEAAqE;IACrE,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACnG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,GAAG,iBAAiB,IAAI,IAAI,CAAC;IAE5D,IAAI,KAAK,GAAuB,OAAO,CAAC;IACxC,IAAI,CAAC;QACH,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO,aAAa,EAAE,CAAC;QAC3C,KAAK,CAAC,8BAA8B,EAAE,CAAC;QACvC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YAAE,OAAO,aAAa,EAAE,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QACjC,yEAAyE;QACzE,0EAA0E;QAC1E,kEAAkE;QAClE,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACpC,KAAK,GAAG,QAAQ,CAAC;QACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QACjF,IAAI,iBAAiB;YAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAC9E,IAAI,UAAU,KAAK,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACzD,wEAAwE;YACxE,wEAAwE;YACxE,qEAAqE;YACrE,yEAAyE;YACzE,wEAAwE;YACxE,4CAA4C;YAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;QACrD,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,KAAK,YAAY,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO,aAAa,EAAE,CAAC;QAC3C,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAClE,IAAI,CAAC,sBAAsB,CAAC,EAAE,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,sBAAsB,CAAC;QAChC,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,yBAAyB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE,CAAC;YACjE,IAAI,CAAC,WAAW,EAAE;gBAAE,OAAO,aAAa,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;QACD,KAAK,GAAG,OAAO,CAAC;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACvF,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO,aAAa,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpF,mBAAmB,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YAAE,OAAO,aAAa,EAAE,CAAC;QACvD,qEAAqE;QACrE,2EAA2E;QAC3E,2EAA2E;QAC3E,8BAA8B;QAC9B,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,IAAI,UAAU,KAAK,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;QACrD,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,KAAK,YAAY,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO,aAAa,EAAE,CAAC;QAC3C,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;QAC/D,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,mBAAmB,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,mBAAmB,CAAC;QAC7B,CAAC;QACD,yEAAyE;QACzE,sEAAsE;QACtE,yEAAyE;QACzE,4BAA4B;QAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO,aAAa,EAAE,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,mBAAmB,GAAG,KAAK,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC;QACvC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4CAA4C,KAAK,WAAW,EAAE,KAAK,CAAC,CAAC;QACnF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC;YACH,mBAAmB,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,aAAa,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,0DAA0D,EAAE,aAAa,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,sBAAsB;YAC1E,KAAK;SACN,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -3,6 +3,7 @@ import type { RenderPipeline } from './pipeline.js';
|
|
|
3
3
|
import type { BatchedMesh, Mesh } from './types.js';
|
|
4
4
|
import { type InstancedOccurrence, type InstancedTemplateCpu, type InstancedTemplateGPU } from './scene-instance-types.js';
|
|
5
5
|
import type { TexturedMesh } from './scene.js';
|
|
6
|
+
import type { ModelTranslations } from './model-translation.js';
|
|
6
7
|
export interface RecoveryBucket {
|
|
7
8
|
key: string;
|
|
8
9
|
meshData: MeshData[];
|
|
@@ -23,6 +24,9 @@ export interface SceneRecoveryHost {
|
|
|
23
24
|
finalizeInProgress: boolean;
|
|
24
25
|
streamingFragments: BatchedMesh[];
|
|
25
26
|
pendingBatchKeys: Set<string>;
|
|
27
|
+
streamedBucketKeys: Set<string>;
|
|
28
|
+
meshQueue: MeshData[];
|
|
29
|
+
meshQueueReadIndex: number;
|
|
26
30
|
appearanceController?: {
|
|
27
31
|
hasActiveDrafts(): boolean;
|
|
28
32
|
};
|
|
@@ -71,9 +75,7 @@ export interface SceneRecoveryHost {
|
|
|
71
75
|
meshDataMap: Map<number, MeshData[]>;
|
|
72
76
|
colorOverrides: ReadonlyMap<number, readonly [number, number, number, number]> | null;
|
|
73
77
|
appearanceAccessState?: unknown;
|
|
74
|
-
modelTranslations:
|
|
75
|
-
registerDrawable<T>(drawable: T, modelIndex: number): T;
|
|
76
|
-
};
|
|
78
|
+
modelTranslations: Pick<ModelTranslations, 'registerDrawable' | 'get' | 'getYaw' | 'placeInstances'>;
|
|
77
79
|
dropAllPartialCaches(): void;
|
|
78
80
|
releaseColorOverrideGpu(): void;
|
|
79
81
|
releaseTexturedMeshTexture(mesh: Pick<TexturedMesh, 'texture' | 'sharedTextureKey'>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-device-recovery.d.ts","sourceRoot":"","sources":["../src/scene-device-recovery.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"scene-device-recovery.d.ts","sourceRoot":"","sources":["../src/scene-device-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,11 +10,12 @@ import { composeInstancedOverrideColor } from './instanced-override-color.js';
|
|
|
10
10
|
import { BATCH_CONSTANTS } from './constants.js';
|
|
11
11
|
import { createSceneBatchShell } from './scene-batch-upload.js';
|
|
12
12
|
import { createStaticGpuBuffer } from './gpu-static-upload.js';
|
|
13
|
+
import { retainedStreamingFragments } from './scene-streaming-recovery.js';
|
|
13
14
|
function recoveryBlocker(host) {
|
|
14
15
|
if (host.geometryReleased || host.ephemeralStreamingMode) {
|
|
15
16
|
return { ok: false, reason: 'cpu-geometry-released' };
|
|
16
17
|
}
|
|
17
|
-
if (host.finalizeInProgress || host
|
|
18
|
+
if (host.finalizeInProgress || !retainedStreamingFragments(host) || host.pendingBatchKeys.size > 0 ||
|
|
18
19
|
host.appearanceController?.hasActiveDrafts()) {
|
|
19
20
|
return { ok: false, reason: 'scene-not-settled' };
|
|
20
21
|
}
|
|
@@ -49,6 +50,9 @@ export function discardSceneGpuResourcesForRecovery(host) {
|
|
|
49
50
|
if (!evicted.has(batch))
|
|
50
51
|
destroyGpuResources(batch);
|
|
51
52
|
host.batchedMeshes = [...evicted];
|
|
53
|
+
// CPU-backed stream pieces are restored from their existing buckets, while
|
|
54
|
+
// the untouched pending queue resumes only after replacement readiness.
|
|
55
|
+
host.streamingFragments = [];
|
|
52
56
|
for (const bucket of host.buckets.values()) {
|
|
53
57
|
if (!bucket.batchedMesh || !evicted.has(bucket.batchedMesh))
|
|
54
58
|
bucket.batchedMesh = null;
|
|
@@ -94,6 +98,7 @@ export function repartitionHydratedRecoveryBucket(host, key, bucket, shell) {
|
|
|
94
98
|
const hash = key.lastIndexOf('#'), baseKey = hash >= 0 ? key.slice(0, hash) : key;
|
|
95
99
|
const shells = [], keys = [];
|
|
96
100
|
host.buckets.delete(key);
|
|
101
|
+
const streamed = host.streamedBucketKeys.delete(key);
|
|
97
102
|
for (let index = 0; index < chunks.length; index++) {
|
|
98
103
|
const targetKey = nextRecoveryBucketKey(host, baseKey);
|
|
99
104
|
const parts = chunks[index];
|
|
@@ -104,6 +109,8 @@ export function repartitionHydratedRecoveryBucket(host, key, bucket, shell) {
|
|
|
104
109
|
target.batchedMesh = nextShell;
|
|
105
110
|
target.vertexBytes = bucketVertexBytes(parts);
|
|
106
111
|
host.buckets.set(targetKey, target);
|
|
112
|
+
if (streamed)
|
|
113
|
+
host.streamedBucketKeys.add(targetKey);
|
|
107
114
|
for (const part of parts)
|
|
108
115
|
host.meshDataBucket.set(part, target);
|
|
109
116
|
shells.push(nextShell);
|
|
@@ -175,6 +182,7 @@ function restoreFlatBuckets(host, device, pipeline) {
|
|
|
175
182
|
// bucket and every meshDataBucket edge still describe the complete model.
|
|
176
183
|
host.buckets.delete(originalKey);
|
|
177
184
|
host.dirtyBuckets.delete(originalKey);
|
|
185
|
+
const streamed = host.streamedBucketKeys.delete(originalKey);
|
|
178
186
|
for (let index = 0; index < staged.length; index++) {
|
|
179
187
|
const { key, parts, batch } = staged[index];
|
|
180
188
|
const target = index === 0 ? bucket : { key, meshData: [], batchedMesh: null, vertexBytes: 0 };
|
|
@@ -187,6 +195,8 @@ function restoreFlatBuckets(host, device, pipeline) {
|
|
|
187
195
|
host.meshDataBucket.set(part, target);
|
|
188
196
|
if (dirty)
|
|
189
197
|
host.dirtyBuckets.add(key);
|
|
198
|
+
if (streamed)
|
|
199
|
+
host.streamedBucketKeys.add(key);
|
|
190
200
|
restored.push(batch);
|
|
191
201
|
}
|
|
192
202
|
host.activeBucketKey.set(baseKey, staged.at(-1).key);
|
|
@@ -201,6 +211,10 @@ function restoreInstancedTemplates(host, device) {
|
|
|
201
211
|
const cpu = host.instancedTemplateCpu[slot];
|
|
202
212
|
if (!cpu)
|
|
203
213
|
continue;
|
|
214
|
+
// A public placement may have changed while the prior device was absent.
|
|
215
|
+
// Use the canonical immutable basis and current pose before uploading; a
|
|
216
|
+
// stable retry must not copy an old IFNS matrix into the replacement GPU.
|
|
217
|
+
host.modelTranslations.placeInstances(cpu.instanceData, cpu.modelIndex, INSTANCE_STRIDE_BYTES, cpu.canonicalAnchors, cpu.canonicalMatrixTranslations);
|
|
204
218
|
let vertexBuffer, indexBuffer, instanceBuffer;
|
|
205
219
|
let rteDeltas;
|
|
206
220
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-device-recovery.js","sourceRoot":"","sources":["../src/scene-device-recovery.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scene-device-recovery.js","sourceRoot":"","sources":["../src/scene-device-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { SceneRecoveryHost } from './scene-device-recovery.js';
|
|
2
|
+
/** Dispose only handles created by this attempt, never clear a newer CPU load. */
|
|
3
|
+
export declare function restoredGpuRollback(host: SceneRecoveryHost): () => void;
|
|
4
|
+
/** Private CPU ownership proof, not another geometry ingestion path. */
|
|
5
|
+
export declare function retainedStreamingFragments(host: SceneRecoveryHost): boolean;
|
|
6
|
+
/** One token belongs to the existing coalesced Renderer recovery promise.
|
|
7
|
+
* It does not persist a history, allocate an editor, or copy geometry bytes.
|
|
8
|
+
*/
|
|
9
|
+
export declare function acquireStreamingRecoveryLease(host: SceneRecoveryHost): {
|
|
10
|
+
valid: () => boolean;
|
|
11
|
+
discarded(): boolean;
|
|
12
|
+
restored(): boolean;
|
|
13
|
+
} | null;
|
|
14
|
+
//# sourceMappingURL=scene-streaming-recovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-streaming-recovery.d.ts","sourceRoot":"","sources":["../src/scene-streaming-recovery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAIpE,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAYvE;AAED,wEAAwE;AACxE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAwB3E;AA6CD;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,iBAAiB;;;;SAmDpE"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { destroyGpuResources } from './scene-geometry.js';
|
|
2
|
+
import { destroyInstancedTemplateGpu } from './scene-instance-types.js';
|
|
3
|
+
/** Dispose only handles created by this attempt, never clear a newer CPU load. */
|
|
4
|
+
export function restoredGpuRollback(host) {
|
|
5
|
+
const batches = host.batchedMeshes.filter(batch => batch.gpuResident !== false);
|
|
6
|
+
const textured = host.texturedMeshes.slice(), templates = host.instancedTemplates.slice();
|
|
7
|
+
const textures = [...host.sharedTextures.values()].map(entry => entry.texture);
|
|
8
|
+
return () => {
|
|
9
|
+
for (const batch of batches)
|
|
10
|
+
destroyGpuResources(batch);
|
|
11
|
+
for (const mesh of textured) {
|
|
12
|
+
mesh.vertexBuffer.destroy();
|
|
13
|
+
mesh.indexBuffer.destroy();
|
|
14
|
+
mesh.uniformBuffer.destroy();
|
|
15
|
+
}
|
|
16
|
+
for (const texture of textures)
|
|
17
|
+
texture.destroy();
|
|
18
|
+
for (const template of templates)
|
|
19
|
+
if (template)
|
|
20
|
+
destroyInstancedTemplateGpu(template);
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/** Private CPU ownership proof, not another geometry ingestion path. */
|
|
24
|
+
export function retainedStreamingFragments(host) {
|
|
25
|
+
if (!host.streamingFragments.length)
|
|
26
|
+
return true;
|
|
27
|
+
if (!host.streamedBucketKeys.size)
|
|
28
|
+
return false;
|
|
29
|
+
const sourceOwners = new Map([...host.meshDataMap].map(([id, pieces]) => [id, new Set(pieces)]));
|
|
30
|
+
const draws = new Set(host.batchedMeshes);
|
|
31
|
+
const counts = new Map();
|
|
32
|
+
let retainedIndices = 0, fragmentIndices = 0;
|
|
33
|
+
for (const bucket of host.buckets.values())
|
|
34
|
+
for (const piece of bucket.meshData) {
|
|
35
|
+
if (host.meshDataBucket.get(piece) !== bucket || !sourceOwners.get(piece.expressId)?.has(piece))
|
|
36
|
+
return false;
|
|
37
|
+
const key = JSON.stringify([piece.modelIndex ?? 0, piece.expressId]);
|
|
38
|
+
counts.set(key, (counts.get(key) ?? 0) + 1);
|
|
39
|
+
retainedIndices += piece.indices.length;
|
|
40
|
+
}
|
|
41
|
+
for (const fragment of host.streamingFragments) {
|
|
42
|
+
if (!draws.has(fragment) || !Number.isSafeInteger(fragment.indexCount) || fragment.indexCount <= 0)
|
|
43
|
+
return false;
|
|
44
|
+
fragmentIndices += fragment.indexCount;
|
|
45
|
+
for (let i = 0; i < fragment.expressIds.length; i++) {
|
|
46
|
+
const key = JSON.stringify([fragment.modelIndices?.[i] ?? 0, fragment.expressIds[i]]);
|
|
47
|
+
const count = counts.get(key) ?? 0;
|
|
48
|
+
if (!count)
|
|
49
|
+
return false;
|
|
50
|
+
counts.set(key, count - 1);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return Number.isSafeInteger(retainedIndices) && Number.isSafeInteger(fragmentIndices) && retainedIndices >= fragmentIndices;
|
|
54
|
+
}
|
|
55
|
+
function properties(value) {
|
|
56
|
+
// Copy scalar tuples, never vertex/index/IFNS storage. Normal Scene mutations
|
|
57
|
+
// also cross the authored-generation and ownership fences below.
|
|
58
|
+
const entries = Object.entries(value);
|
|
59
|
+
const tuples = entries.map(([, item]) => Array.isArray(item) ? item.slice() : null);
|
|
60
|
+
return () => {
|
|
61
|
+
const current = Object.entries(value);
|
|
62
|
+
return current.length === entries.length && entries.every(([key, item], i) => {
|
|
63
|
+
if (current[i][0] !== key || current[i][1] !== item)
|
|
64
|
+
return false;
|
|
65
|
+
const tuple = tuples[i];
|
|
66
|
+
return !tuple || Array.isArray(item) && item.length === tuple.length && tuple.every((part, j) => Object.is(part, item[j]));
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function rows(owner) {
|
|
71
|
+
const entries = [...owner].map(([key, array]) => ({ key, array, values: array.slice() }));
|
|
72
|
+
return (current) => current === owner && current.size === entries.length
|
|
73
|
+
&& entries.every(({ key, array, values }) => current.get(key) === array
|
|
74
|
+
&& array.length === values.length && values.every((value, i) => array[i] === value));
|
|
75
|
+
}
|
|
76
|
+
function bucketPieces(host) {
|
|
77
|
+
// Multiplicity is preserved. A Set here would silently bless lost duplicate
|
|
78
|
+
// source pieces during replacement-device limit repartitioning.
|
|
79
|
+
const pieces = new Map();
|
|
80
|
+
for (const bucket of host.buckets.values())
|
|
81
|
+
for (const piece of bucket.meshData)
|
|
82
|
+
pieces.set(piece, (pieces.get(piece) ?? 0) + 1);
|
|
83
|
+
return pieces;
|
|
84
|
+
}
|
|
85
|
+
function samePieces(expected, host) {
|
|
86
|
+
const current = bucketPieces(host);
|
|
87
|
+
return current.size === expected.size && [...expected].every(([piece, count]) => current.get(piece) === count);
|
|
88
|
+
}
|
|
89
|
+
function bucketOwnership(host) {
|
|
90
|
+
const owner = host.buckets, reverse = host.meshDataBucket;
|
|
91
|
+
const entries = [...owner].map(([key, bucket]) => ({ key, bucket, array: bucket.meshData, pieces: bucket.meshData.slice() }));
|
|
92
|
+
return () => host.buckets === owner && host.meshDataBucket === reverse && owner.size === entries.length
|
|
93
|
+
&& entries.every(({ key, bucket, array, pieces }) => owner.get(key) === bucket && bucket.meshData === array
|
|
94
|
+
&& array.length === pieces.length && pieces.every((piece, i) => array[i] === piece && reverse.get(piece) === bucket));
|
|
95
|
+
}
|
|
96
|
+
/** One token belongs to the existing coalesced Renderer recovery promise.
|
|
97
|
+
* It does not persist a history, allocate an editor, or copy geometry bytes.
|
|
98
|
+
*/
|
|
99
|
+
export function acquireStreamingRecoveryLease(host) {
|
|
100
|
+
if (!host.streamingFragments.length && !host.streamedBucketKeys.size && host.meshQueueReadIndex >= host.meshQueue.length)
|
|
101
|
+
return null;
|
|
102
|
+
const queue = host.meshQueue, cursor = host.meshQueueReadIndex, prefix = queue.slice();
|
|
103
|
+
const pieces = bucketPieces(host), flat = rows(host.meshDataMap), occurrences = rows(host.instancedEntityMap);
|
|
104
|
+
const templates = host.instancedTemplateCpu, templateRows = templates.slice();
|
|
105
|
+
const sources = new Set([...pieces.keys(), ...prefix]);
|
|
106
|
+
const translations = host.modelTranslations, modelIndices = new Set();
|
|
107
|
+
for (const piece of sources)
|
|
108
|
+
modelIndices.add(piece.modelIndex ?? 0);
|
|
109
|
+
for (const template of templates)
|
|
110
|
+
if (template)
|
|
111
|
+
modelIndices.add(template.modelIndex);
|
|
112
|
+
const poses = [...modelIndices].map(index => ({ index, offset: [...translations.get(index)], yaw: translations.getYaw(index) }));
|
|
113
|
+
// getYaw returns a fresh wrapper: compare its scalar pose, not wrapper refs.
|
|
114
|
+
const posesValid = () => host.modelTranslations === translations && poses.every(({ index, offset, yaw }) => {
|
|
115
|
+
const current = translations.get(index), currentYaw = translations.getYaw(index);
|
|
116
|
+
return offset.every((value, axis) => Object.is(value, current[axis]))
|
|
117
|
+
&& yaw?.angle === currentYaw?.angle && yaw?.px === currentYaw?.px && yaw?.pz === currentYaw?.pz;
|
|
118
|
+
});
|
|
119
|
+
// Deduplicating witness checks does not deduplicate output or queue entries.
|
|
120
|
+
const witnesses = [...sources].map(properties);
|
|
121
|
+
for (const template of templates)
|
|
122
|
+
if (template)
|
|
123
|
+
witnesses.push(properties(template));
|
|
124
|
+
for (const list of host.instancedEntityMap.values())
|
|
125
|
+
for (const occurrence of list)
|
|
126
|
+
witnesses.push(properties(occurrence));
|
|
127
|
+
let generation = host.authoredGeneration, fragmentOwner = host.streamingFragments;
|
|
128
|
+
let fragments = fragmentOwner.slice(), buckets = bucketOwnership(host);
|
|
129
|
+
let meshes = host.meshes, meshRows = meshes.slice();
|
|
130
|
+
const sourceValid = () => host.authoredGeneration === generation && !host.geometryReleased && !host.ephemeralStreamingMode
|
|
131
|
+
&& !host.finalizeInProgress && !host.pendingBatchKeys.size && !host.appearanceController?.hasActiveDrafts()
|
|
132
|
+
&& posesValid() && flat(host.meshDataMap) && occurrences(host.instancedEntityMap) && host.instancedTemplateCpu === templates
|
|
133
|
+
&& templates.length === templateRows.length && templateRows.every((template, i) => templates[i] === template)
|
|
134
|
+
&& witnesses.every(valid => valid()) && host.meshQueue === queue && host.meshQueueReadIndex === cursor
|
|
135
|
+
&& host.meshes === meshes && meshes.length === meshRows.length && meshRows.every((mesh, i) => meshes[i] === mesh)
|
|
136
|
+
&& queue.length >= prefix.length && prefix.every((piece, i) => queue[i] === piece);
|
|
137
|
+
const valid = () => sourceValid() && buckets() && host.streamingFragments === fragmentOwner
|
|
138
|
+
&& fragmentOwner.length === fragments.length && fragments.every((fragment, i) => fragmentOwner[i] === fragment);
|
|
139
|
+
return {
|
|
140
|
+
valid,
|
|
141
|
+
discarded() {
|
|
142
|
+
// Only the owned GPU discard may advance this generation. A concurrent
|
|
143
|
+
// Scene.clear or authoring operation cannot be absorbed as our transition.
|
|
144
|
+
if (host.authoredGeneration !== generation + 1 || host.streamingFragments.length || host.meshes.length)
|
|
145
|
+
return false;
|
|
146
|
+
generation++;
|
|
147
|
+
fragmentOwner = host.streamingFragments;
|
|
148
|
+
fragments = [];
|
|
149
|
+
meshes = host.meshes;
|
|
150
|
+
meshRows = [];
|
|
151
|
+
return valid();
|
|
152
|
+
},
|
|
153
|
+
restored() {
|
|
154
|
+
if (!sourceValid() || !samePieces(pieces, host))
|
|
155
|
+
return false;
|
|
156
|
+
// Canonical restoration may repartition CPU buckets for a smaller adapter
|
|
157
|
+
// limit. Accept only that shape change, retaining all physical source rows.
|
|
158
|
+
buckets = bucketOwnership(host);
|
|
159
|
+
return valid();
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=scene-streaming-recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-streaming-recovery.js","sourceRoot":"","sources":["../src/scene-streaming-recovery.ts"],"names":[],"mappings":"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"}
|
package/dist/scene.d.ts
CHANGED
|
@@ -582,11 +582,8 @@ export declare class Scene {
|
|
|
582
582
|
queueMeshes(meshes: MeshData[]): void;
|
|
583
583
|
/** True if the mesh queue has pending work. */
|
|
584
584
|
hasQueuedMeshes(): boolean;
|
|
585
|
-
/** True while
|
|
586
|
-
*
|
|
587
|
-
* such a fragment AND accumulates in its colour bucket; once the bucket is
|
|
588
|
-
* re-batched (e.g. by a move) the fragment becomes a stale duplicate, so the
|
|
589
|
-
* caller should `finalizeStreaming` to merge fragments away. */
|
|
585
|
+
/** True while GPU fragments or retained streamed buckets await finalization.
|
|
586
|
+
* Recovery retires old-device fragments without retiring their CPU owner. */
|
|
590
587
|
hasStreamingFragments(): boolean;
|
|
591
588
|
/** True while a finalize rebuild (sync or time-sliced) is mid-flight —
|
|
592
589
|
* the fragment list is already cleared then, so settle-sensitive callers
|