@ifc-lite/renderer 6.3.2 → 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 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, streaming has not settled, cold
72
- geometry cannot be restored, or public `addMesh()` content has no CPU source.
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;AAC3C,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,CAoB/F"}
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"}
@@ -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
- host.scene.discardGpuResourcesForRecovery();
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":"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"}
1
+ {"version":3,"file":"device-recovery.js","sourceRoot":"","sources":["../src/device-recovery.ts"],"names":[],"mappings":"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"}
@@ -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":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAA+B,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAExJ,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAS/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;CAC1C;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,sBAAsB,EAAE,OAAO,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,kBAAkB,EAAE,WAAW,EAAE,CAAC;IAClC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE;QAAE,eAAe,IAAI,OAAO,CAAA;KAAE,CAAC;IACtD,iBAAiB,CAAC,EAAE;QAAE,MAAM,IAAI,IAAI,CAAA;KAAE,CAAC;IACvC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE;QAAE,UAAU,IAAI,IAAI,CAAA;KAAE,CAAC;IAC7C,MAAM,EAAE,IAAI,EAAE,CAAC;IACf,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACrC,cAAc,EAAE,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC9C,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,cAAc,EAAE,YAAY,EAAE,CAAC;IAC/B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnE,eAAe,EAAE;QAAE,KAAK,IAAI,IAAI,CAAA;KAAE,CAAC;IACnC,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,kBAAkB,EAAE,CAAC,oBAAoB,GAAG,SAAS,CAAC,EAAE,CAAC;IACzD,sBAAsB,EAAE,oBAAoB,EAAE,CAAC;IAC/C,oBAAoB,EAAE,CAAC,oBAAoB,GAAG,SAAS,CAAC,EAAE,CAAC;IAC3D,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACvD,mBAAmB,EAAE;QAAE,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACzD,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,uBAAuB,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/F,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,uBAAuB,EAAE,OAAO,CAAC;IACjC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IACtF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,KAAK,GAAG,QAAQ,GAAG,gBAAgB,CAAC,CAAC;IACrG,oBAAoB,IAAI,IAAI,CAAC;IAC7B,uBAAuB,IAAI,IAAI,CAAC;IAChC,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,kBAAkB,CAAC,GAAG,IAAI,CAAC;IAC3F,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC;IAC3E,iBAAiB,CACf,MAAM,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAC3D,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAC9D,WAAW,CAAC;IACf,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IACtF,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5H,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACzD,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3G,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjF,uBAAuB,CACrB,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAClE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EACxC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GACvC,QAAQ,CAAC;IACZ,6BAA6B,IAAI,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,8BAA8B,GACtC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,uBAAuB,GAAG,mBAAmB,GAAG,6BAA6B,GAAG,qBAAqB,CAAA;CAAE,CAAC;AAkBjI,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,iBAAiB,GAAG,8BAA8B,CAMlG;AAED,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,iBAAiB,GACtB,IAAI,CAoCN;AAcD;gFACgF;AAChF,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,GAC/E,MAAM,EAAE,CA0BV;AAyJD,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,cAAc,GACvB,IAAI,CAwBN"}
@@ -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.streamingFragments.length > 0 || host.pendingBatchKeys.size > 0 ||
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 un-finalised streaming fragments are still being drawn. An
586
- * element appended during streaming (e.g. an authored IfcSpace) renders as
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