@aardworx/wombat.rendering 0.9.32 → 0.18.1
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/dist/runtime/derivedModes/kernelCodegen.d.ts +90 -0
- package/dist/runtime/derivedModes/kernelCodegen.d.ts.map +1 -0
- package/dist/runtime/derivedModes/kernelCodegen.js +623 -0
- package/dist/runtime/derivedModes/kernelCodegen.js.map +1 -0
- package/dist/runtime/derivedModes/modeKeyCpu.d.ts.map +1 -1
- package/dist/runtime/derivedModes/modeKeyCpu.js +23 -67
- package/dist/runtime/derivedModes/modeKeyCpu.js.map +1 -1
- package/dist/runtime/derivedModes/partitionDispatcher.d.ts +79 -0
- package/dist/runtime/derivedModes/partitionDispatcher.d.ts.map +1 -0
- package/dist/runtime/derivedModes/partitionDispatcher.js +303 -0
- package/dist/runtime/derivedModes/partitionDispatcher.js.map +1 -0
- package/dist/runtime/derivedModes/partitionKernel.d.ts +12 -0
- package/dist/runtime/derivedModes/partitionKernel.d.ts.map +1 -0
- package/dist/runtime/derivedModes/partitionKernel.js +127 -0
- package/dist/runtime/derivedModes/partitionKernel.js.map +1 -0
- package/dist/runtime/derivedModes/partitionKernelLayout.d.ts +4 -0
- package/dist/runtime/derivedModes/partitionKernelLayout.d.ts.map +1 -0
- package/dist/runtime/derivedModes/partitionKernelLayout.js +24 -0
- package/dist/runtime/derivedModes/partitionKernelLayout.js.map +1 -0
- package/dist/runtime/derivedModes/rule.d.ts +38 -86
- package/dist/runtime/derivedModes/rule.d.ts.map +1 -1
- package/dist/runtime/derivedModes/rule.js +34 -74
- package/dist/runtime/derivedModes/rule.js.map +1 -1
- package/dist/runtime/derivedUniforms/dispatch.d.ts +10 -8
- package/dist/runtime/derivedUniforms/dispatch.d.ts.map +1 -1
- package/dist/runtime/derivedUniforms/dispatch.js +31 -18
- package/dist/runtime/derivedUniforms/dispatch.js.map +1 -1
- package/dist/runtime/derivedUniforms/marker.d.ts +90 -11
- package/dist/runtime/derivedUniforms/marker.d.ts.map +1 -1
- package/dist/runtime/derivedUniforms/marker.js +161 -15
- package/dist/runtime/derivedUniforms/marker.js.map +1 -1
- package/dist/runtime/derivedUniforms/sceneIntegration.d.ts +25 -6
- package/dist/runtime/derivedUniforms/sceneIntegration.d.ts.map +1 -1
- package/dist/runtime/derivedUniforms/sceneIntegration.js +61 -20
- package/dist/runtime/derivedUniforms/sceneIntegration.js.map +1 -1
- package/dist/runtime/heapEligibility.d.ts.map +1 -1
- package/dist/runtime/heapEligibility.js +22 -2
- package/dist/runtime/heapEligibility.js.map +1 -1
- package/dist/runtime/heapScene/chunkedArena.d.ts +76 -0
- package/dist/runtime/heapScene/chunkedArena.d.ts.map +1 -0
- package/dist/runtime/heapScene/chunkedArena.js +223 -0
- package/dist/runtime/heapScene/chunkedArena.js.map +1 -0
- package/dist/runtime/heapScene/freelist.d.ts +50 -0
- package/dist/runtime/heapScene/freelist.d.ts.map +1 -0
- package/dist/runtime/heapScene/freelist.js +160 -0
- package/dist/runtime/heapScene/freelist.js.map +1 -0
- package/dist/runtime/heapScene/growBuffer.d.ts +23 -2
- package/dist/runtime/heapScene/growBuffer.d.ts.map +1 -1
- package/dist/runtime/heapScene/growBuffer.js +35 -3
- package/dist/runtime/heapScene/growBuffer.js.map +1 -1
- package/dist/runtime/heapScene/pools.d.ts +65 -42
- package/dist/runtime/heapScene/pools.d.ts.map +1 -1
- package/dist/runtime/heapScene/pools.js +206 -134
- package/dist/runtime/heapScene/pools.js.map +1 -1
- package/dist/runtime/heapScene.d.ts +12 -0
- package/dist/runtime/heapScene.d.ts.map +1 -1
- package/dist/runtime/heapScene.js +949 -167
- package/dist/runtime/heapScene.js.map +1 -1
- package/dist/runtime/hybridScene.d.ts +7 -0
- package/dist/runtime/hybridScene.d.ts.map +1 -1
- package/dist/runtime/hybridScene.js +1 -0
- package/dist/runtime/hybridScene.js.map +1 -1
- package/dist/runtime/index.d.ts +4 -3
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +4 -3
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/renderTask.d.ts +5 -0
- package/dist/runtime/renderTask.d.ts.map +1 -1
- package/dist/runtime/renderTask.js +1 -0
- package/dist/runtime/renderTask.js.map +1 -1
- package/dist/runtime/runtime.d.ts +6 -0
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +1 -0
- package/dist/runtime/runtime.js.map +1 -1
- package/package.json +1 -1
- package/src/runtime/derivedModes/kernelCodegen.ts +673 -0
- package/src/runtime/derivedModes/modeKeyCpu.ts +22 -60
- package/src/runtime/derivedModes/partitionDispatcher.ts +349 -0
- package/src/runtime/derivedModes/partitionKernelLayout.ts +25 -0
- package/src/runtime/derivedModes/rule.ts +66 -145
- package/src/runtime/derivedUniforms/dispatch.ts +48 -21
- package/src/runtime/derivedUniforms/marker.ts +210 -16
- package/src/runtime/derivedUniforms/sceneIntegration.ts +67 -20
- package/src/runtime/heapEligibility.ts +22 -1
- package/src/runtime/heapScene/chunkedArena.ts +238 -0
- package/src/runtime/heapScene/freelist.ts +161 -0
- package/src/runtime/heapScene/growBuffer.ts +39 -2
- package/src/runtime/heapScene/pools.ts +231 -143
- package/src/runtime/heapScene.ts +1134 -161
- package/src/runtime/hybridScene.ts +8 -0
- package/src/runtime/index.ts +12 -9
- package/src/runtime/renderTask.ts +6 -0
- package/src/runtime/runtime.ts +7 -0
- package/src/runtime/derivedModes/gpuDispatcher.ts +0 -226
- package/src/runtime/derivedModes/gpuKernel.ts +0 -98
|
@@ -15,7 +15,9 @@
|
|
|
15
15
|
// / `isBufferView` / `asFloat32` helpers that the heap-scene factory
|
|
16
16
|
// uses to assemble the arena.
|
|
17
17
|
import { AVal } from "@aardworx/wombat.adaptive";
|
|
18
|
-
import { GrowBuffer, ALIGN16 } from "./growBuffer.js";
|
|
18
|
+
import { GrowBuffer, ALIGN16, DEFAULT_MAX_BUFFER_BYTES } from "./growBuffer.js";
|
|
19
|
+
import { Freelist } from "./freelist.js";
|
|
20
|
+
import { ChunkedAttributeArena, ChunkedIndexAllocator } from "./chunkedArena.js";
|
|
19
21
|
// ─── Per-allocation header layout ──────────────────────────────────────
|
|
20
22
|
/** Per-allocation header: (u32 typeId, u32 length). Data follows
|
|
21
23
|
* the header aligned up to 16 bytes (so positions/normals/etc. line
|
|
@@ -29,76 +31,115 @@ export const ENC_V3F_TIGHT = 1; // tightly-packed array of vec3<f32> (12 B/elt)
|
|
|
29
31
|
export const SEM_POSITIONS = 1;
|
|
30
32
|
export const SEM_NORMALS = 2;
|
|
31
33
|
/**
|
|
32
|
-
*
|
|
33
|
-
* aval
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* (
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* Sharing emerges from aval identity — no separate "frequency"
|
|
40
|
-
* declaration needed. A `cval` shared by all draws → 1 alloc.
|
|
41
|
-
* A static positions array shared across instanced draws → 1 alloc.
|
|
42
|
-
* Same code path either way.
|
|
34
|
+
* `(aval, chunkIdx)`-keyed pool of chunked-arena allocations. An
|
|
35
|
+
* aval that's referenced from multiple chunks (e.g. two ROs sharing
|
|
36
|
+
* a uniform but landing in different chunks) gets one entry per
|
|
37
|
+
* chunk — accepted duplication cost of the multi-draw-call
|
|
38
|
+
* per-chunk render path (§3). Within a single chunk, ROs sharing
|
|
39
|
+
* an aval still share the underlying allocation.
|
|
43
40
|
*/
|
|
44
41
|
export class UniformPool {
|
|
45
|
-
// Keyed by `aval<unknown>` *by reference* (a plain JS `Map`). These
|
|
46
|
-
// keys are overwhelmingly reactive `cval`s (per-object trafos,
|
|
47
|
-
// colours, …) and the hot path is `acquire`/`release` ~once per
|
|
48
|
-
// drawHeader field per RO.
|
|
49
42
|
byAval = new Map();
|
|
50
|
-
has(av) {
|
|
51
|
-
|
|
43
|
+
has(av, chunkIdx) {
|
|
44
|
+
return this.byAval.get(av)?.has(chunkIdx) ?? false;
|
|
45
|
+
}
|
|
46
|
+
/** True when the pool holds at least one entry for `av` in any
|
|
47
|
+
* chunk. Used by the scene's `inputChanged` dispatch to decide
|
|
48
|
+
* whether a marking aval is one of our tracked allocations. */
|
|
49
|
+
hasAny(av) {
|
|
50
|
+
return (this.byAval.get(av)?.size ?? 0) > 0;
|
|
51
|
+
}
|
|
52
|
+
entry(av, chunkIdx) {
|
|
53
|
+
return this.byAval.get(av)?.get(chunkIdx);
|
|
54
|
+
}
|
|
55
|
+
/** First chunk this aval is allocated in, if any. Used by `addRO`
|
|
56
|
+
* to prefer co-locating a new RO with its already-allocated
|
|
57
|
+
* shared inputs (avoids unnecessary duplication). */
|
|
58
|
+
firstChunkContaining(av) {
|
|
59
|
+
const byChunk = this.byAval.get(av);
|
|
60
|
+
if (byChunk === undefined || byChunk.size === 0)
|
|
61
|
+
return undefined;
|
|
62
|
+
return byChunk.keys().next().value;
|
|
63
|
+
}
|
|
52
64
|
/**
|
|
53
|
-
* Acquire (or share) an allocation for `aval
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
* uploaded immediately.
|
|
65
|
+
* Acquire (or share) an allocation for `aval` in `chunkIdx`.
|
|
66
|
+
* Returns the byte offset within that chunk's GPUBuffer. If a
|
|
67
|
+
* fresh allocation is made, the value is packed + uploaded
|
|
68
|
+
* immediately into the chunk's CPU shadow.
|
|
58
69
|
*/
|
|
59
|
-
acquire(device, arena, av, value, dataBytes, typeId, length, pack) {
|
|
60
|
-
|
|
70
|
+
acquire(device, arena, av, chunkIdx, value, dataBytes, typeId, length, pack) {
|
|
71
|
+
let byChunk = this.byAval.get(av);
|
|
72
|
+
const existing = byChunk?.get(chunkIdx);
|
|
61
73
|
if (existing !== undefined) {
|
|
62
74
|
existing.refcount++;
|
|
63
75
|
return existing.ref;
|
|
64
76
|
}
|
|
65
|
-
const
|
|
77
|
+
const r = arena.alloc(dataBytes, chunkIdx);
|
|
78
|
+
// The alloc may have spilled into a different chunk if `chunkIdx`
|
|
79
|
+
// was full. Honour wherever it landed — addRO's chunk-routing
|
|
80
|
+
// commits the RO to the spill chunk too.
|
|
81
|
+
const finalChunk = r.chunkIdx;
|
|
66
82
|
const allocBytes = ALIGN16(ALLOC_HEADER_PAD_TO + dataBytes);
|
|
67
83
|
const buf = new ArrayBuffer(allocBytes);
|
|
68
84
|
const u32 = new Uint32Array(buf);
|
|
69
85
|
const f32 = new Float32Array(buf);
|
|
70
86
|
u32[0] = typeId;
|
|
71
87
|
u32[1] = length;
|
|
72
|
-
// stride_bytes (offset 8): bytes per element. Lets the VS decode
|
|
73
|
-
// pick V3- vs V4-tight load expressions for vec4 attributes.
|
|
74
88
|
u32[2] = length > 0 ? Math.floor(dataBytes / length) : 0;
|
|
75
89
|
pack(value, f32, ALLOC_HEADER_PAD_TO / 4);
|
|
76
|
-
arena.write(
|
|
90
|
+
arena.write(finalChunk, r.off, new Uint8Array(buf));
|
|
77
91
|
void device;
|
|
78
|
-
|
|
79
|
-
|
|
92
|
+
if (byChunk === undefined) {
|
|
93
|
+
byChunk = new Map();
|
|
94
|
+
this.byAval.set(av, byChunk);
|
|
95
|
+
}
|
|
96
|
+
byChunk.set(finalChunk, {
|
|
97
|
+
chunkIdx: finalChunk, ref: r.off, dataBytes, typeId, pack, refcount: 1,
|
|
98
|
+
});
|
|
99
|
+
return r.off;
|
|
80
100
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const e =
|
|
101
|
+
release(arena, av, chunkIdx) {
|
|
102
|
+
const byChunk = this.byAval.get(av);
|
|
103
|
+
const e = byChunk?.get(chunkIdx);
|
|
84
104
|
if (e === undefined)
|
|
85
105
|
return;
|
|
86
106
|
e.refcount--;
|
|
87
107
|
if (e.refcount > 0)
|
|
88
108
|
return;
|
|
89
|
-
arena.release(e.ref, ALIGN16(ALLOC_HEADER_PAD_TO + e.dataBytes));
|
|
90
|
-
|
|
109
|
+
arena.release(e.chunkIdx, e.ref, ALIGN16(ALLOC_HEADER_PAD_TO + e.dataBytes));
|
|
110
|
+
byChunk.delete(chunkIdx);
|
|
111
|
+
if (byChunk.size === 0)
|
|
112
|
+
this.byAval.delete(av);
|
|
91
113
|
}
|
|
92
|
-
/** Re-pack one entry's data region into
|
|
114
|
+
/** Re-pack one entry's data region into every chunk that holds
|
|
115
|
+
* this aval. When an aval is shared across N chunks (each chunk
|
|
116
|
+
* has its own duplicate alloc), every duplicate needs the
|
|
117
|
+
* refresh so all the chunks' ROs see the new value. */
|
|
93
118
|
repack(device, arena, av, val) {
|
|
94
|
-
const
|
|
95
|
-
if (
|
|
119
|
+
const byChunk = this.byAval.get(av);
|
|
120
|
+
if (byChunk === undefined)
|
|
96
121
|
return;
|
|
97
|
-
|
|
98
|
-
e.
|
|
99
|
-
|
|
122
|
+
let dst;
|
|
123
|
+
for (const e of byChunk.values()) {
|
|
124
|
+
if (dst === undefined || dst.length !== e.dataBytes / 4) {
|
|
125
|
+
dst = new Float32Array(e.dataBytes / 4);
|
|
126
|
+
}
|
|
127
|
+
e.pack(val, dst, 0);
|
|
128
|
+
arena.write(e.chunkIdx, e.ref + ALLOC_HEADER_PAD_TO, new Uint8Array(dst.buffer, dst.byteOffset, e.dataBytes));
|
|
129
|
+
}
|
|
100
130
|
void device;
|
|
101
131
|
}
|
|
132
|
+
/** Total bytes touched by `repack` for this aval — sum across
|
|
133
|
+
* chunks. Used by the dirty-bytes diagnostics. */
|
|
134
|
+
totalDataBytes(av) {
|
|
135
|
+
const byChunk = this.byAval.get(av);
|
|
136
|
+
if (byChunk === undefined)
|
|
137
|
+
return 0;
|
|
138
|
+
let s = 0;
|
|
139
|
+
for (const e of byChunk.values())
|
|
140
|
+
s += e.dataBytes;
|
|
141
|
+
return s;
|
|
142
|
+
}
|
|
102
143
|
}
|
|
103
144
|
// ─── IndexPool ─────────────────────────────────────────────────────────
|
|
104
145
|
/**
|
|
@@ -114,7 +155,10 @@ export class UniformPool {
|
|
|
114
155
|
* `Uint32Array` view collapse to one allocation.
|
|
115
156
|
*/
|
|
116
157
|
export class IndexPool {
|
|
158
|
+
/** Per-aval, per-chunk bookkeeping. Same aval acquired in two
|
|
159
|
+
* chunks gets two entries (accepted §3 duplication). */
|
|
117
160
|
byAval = new Map();
|
|
161
|
+
/** Per-chunk constant-aval value-dedup (§5b in-chunk). */
|
|
118
162
|
byValueKey = new Map();
|
|
119
163
|
bufferIds = new WeakMap();
|
|
120
164
|
nextBufferId = 1;
|
|
@@ -126,43 +170,69 @@ export class IndexPool {
|
|
|
126
170
|
}
|
|
127
171
|
return id;
|
|
128
172
|
}
|
|
129
|
-
|
|
130
|
-
const
|
|
173
|
+
firstChunkContaining(av) {
|
|
174
|
+
const byChunk = this.byAval.get(av);
|
|
175
|
+
if (byChunk === undefined || byChunk.size === 0)
|
|
176
|
+
return undefined;
|
|
177
|
+
return byChunk.keys().next().value;
|
|
178
|
+
}
|
|
179
|
+
acquire(device, indices, av, chunkIdx, arr) {
|
|
180
|
+
let byChunk = this.byAval.get(av);
|
|
181
|
+
const bound = byChunk?.get(chunkIdx);
|
|
131
182
|
if (bound !== undefined) {
|
|
132
183
|
bound.perAvalCount++;
|
|
133
184
|
bound.entry.totalRefcount++;
|
|
134
|
-
return { firstIndex: bound.entry.firstIndex, count: bound.entry.count };
|
|
185
|
+
return { chunkIdx: bound.entry.chunkIdx, firstIndex: bound.entry.firstIndex, count: bound.entry.count };
|
|
135
186
|
}
|
|
136
187
|
let valueKey;
|
|
137
188
|
if (av.isConstant) {
|
|
138
|
-
|
|
189
|
+
// Value-dedup is scoped per chunk — two constant avals in the
|
|
190
|
+
// same chunk collapse to one allocation; two constant avals in
|
|
191
|
+
// DIFFERENT chunks each get their own (we can't share across
|
|
192
|
+
// chunks since the index range lives in the chunk's GPUBuffer).
|
|
193
|
+
valueKey = `${chunkIdx}:${this.bufferIdOf(arr.buffer)}:${arr.byteOffset}:${arr.byteLength}`;
|
|
139
194
|
const shared = this.byValueKey.get(valueKey);
|
|
140
195
|
if (shared !== undefined) {
|
|
141
196
|
shared.totalRefcount++;
|
|
142
|
-
|
|
143
|
-
|
|
197
|
+
if (byChunk === undefined) {
|
|
198
|
+
byChunk = new Map();
|
|
199
|
+
this.byAval.set(av, byChunk);
|
|
200
|
+
}
|
|
201
|
+
byChunk.set(chunkIdx, { entry: shared, perAvalCount: 1 });
|
|
202
|
+
return { chunkIdx: shared.chunkIdx, firstIndex: shared.firstIndex, count: shared.count };
|
|
144
203
|
}
|
|
145
204
|
}
|
|
146
|
-
const
|
|
147
|
-
indices.write(
|
|
205
|
+
const r = indices.alloc(arr.length, chunkIdx);
|
|
206
|
+
indices.write(r.chunkIdx, r.off * 4, new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength));
|
|
148
207
|
void device;
|
|
149
|
-
const entry = {
|
|
150
|
-
|
|
208
|
+
const entry = {
|
|
209
|
+
chunkIdx: r.chunkIdx, firstIndex: r.off, count: arr.length,
|
|
210
|
+
totalRefcount: 1, valueKey,
|
|
211
|
+
};
|
|
212
|
+
if (byChunk === undefined) {
|
|
213
|
+
byChunk = new Map();
|
|
214
|
+
this.byAval.set(av, byChunk);
|
|
215
|
+
}
|
|
216
|
+
byChunk.set(r.chunkIdx, { entry, perAvalCount: 1 });
|
|
151
217
|
if (valueKey !== undefined)
|
|
152
218
|
this.byValueKey.set(valueKey, entry);
|
|
153
|
-
return { firstIndex, count: arr.length };
|
|
219
|
+
return { chunkIdx: r.chunkIdx, firstIndex: r.off, count: arr.length };
|
|
154
220
|
}
|
|
155
|
-
release(indices, av) {
|
|
156
|
-
const
|
|
221
|
+
release(indices, av, chunkIdx) {
|
|
222
|
+
const byChunk = this.byAval.get(av);
|
|
223
|
+
const bound = byChunk?.get(chunkIdx);
|
|
157
224
|
if (bound === undefined)
|
|
158
225
|
return;
|
|
159
226
|
bound.perAvalCount--;
|
|
160
227
|
bound.entry.totalRefcount--;
|
|
161
|
-
if (bound.perAvalCount === 0)
|
|
162
|
-
|
|
228
|
+
if (bound.perAvalCount === 0) {
|
|
229
|
+
byChunk.delete(chunkIdx);
|
|
230
|
+
if (byChunk.size === 0)
|
|
231
|
+
this.byAval.delete(av);
|
|
232
|
+
}
|
|
163
233
|
if (bound.entry.totalRefcount > 0)
|
|
164
234
|
return;
|
|
165
|
-
indices.release(bound.entry.firstIndex, bound.entry.count);
|
|
235
|
+
indices.release(bound.entry.chunkIdx, bound.entry.firstIndex, bound.entry.count);
|
|
166
236
|
if (bound.entry.valueKey !== undefined) {
|
|
167
237
|
this.byValueKey.delete(bound.entry.valueKey);
|
|
168
238
|
}
|
|
@@ -209,7 +279,7 @@ export class DrawHeap {
|
|
|
209
279
|
export class AttributeArena {
|
|
210
280
|
buf;
|
|
211
281
|
cursor = 0;
|
|
212
|
-
|
|
282
|
+
freelist = new Freelist();
|
|
213
283
|
/** CPU shadow of the entire GPU buffer; writes go here first then
|
|
214
284
|
* flush() emits one writeBuffer per dirty contiguous range. */
|
|
215
285
|
shadow;
|
|
@@ -246,76 +316,58 @@ export class AttributeArena {
|
|
|
246
316
|
* Allocate space for one attribute. Returns the byte ref (offset
|
|
247
317
|
* to the header — data lives at ref + 16).
|
|
248
318
|
*/
|
|
249
|
-
alloc
|
|
319
|
+
/** Non-throwing alloc — returns `undefined` when the request
|
|
320
|
+
* would exceed the underlying GrowBuffer's `maxCapacity` cap.
|
|
321
|
+
* Used by `ChunkedAttributeArena` to probe before spilling to
|
|
322
|
+
* the next chunk. */
|
|
323
|
+
tryAlloc(dataBytes) {
|
|
250
324
|
const allocBytes = ALIGN16(ALLOC_HEADER_PAD_TO + dataBytes);
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
325
|
+
const reused = this.freelist.alloc(allocBytes);
|
|
326
|
+
if (reused !== undefined)
|
|
327
|
+
return reused;
|
|
328
|
+
const next = this.cursor + allocBytes;
|
|
329
|
+
if (next > this.buf.maxCapacity)
|
|
330
|
+
return undefined;
|
|
331
|
+
this.cursor = next;
|
|
332
|
+
this.buf.ensureCapacity(next);
|
|
333
|
+
this.buf.setUsed(next);
|
|
334
|
+
return next - allocBytes;
|
|
335
|
+
}
|
|
336
|
+
alloc(dataBytes) {
|
|
337
|
+
const r = this.tryAlloc(dataBytes);
|
|
338
|
+
if (r === undefined) {
|
|
339
|
+
throw new Error(`AttributeArena: allocation of ${dataBytes}B (with header alignment) exceeds chunk cap`);
|
|
264
340
|
}
|
|
265
|
-
|
|
266
|
-
this.cursor += allocBytes;
|
|
267
|
-
this.buf.ensureCapacity(this.cursor);
|
|
268
|
-
this.buf.setUsed(this.cursor);
|
|
269
|
-
return ref;
|
|
341
|
+
return r;
|
|
270
342
|
}
|
|
271
343
|
release(ref, dataBytes) {
|
|
272
344
|
const allocBytes = ALIGN16(ALLOC_HEADER_PAD_TO + dataBytes);
|
|
273
|
-
|
|
345
|
+
this.freelist.release(ref, allocBytes);
|
|
346
|
+
// §5: shrink the bump cursor back if release exposed a free
|
|
347
|
+
// tail touching it (cascading — `freelist.release` may have
|
|
348
|
+
// coalesced into a single block ending at `cursor`). Reclaims
|
|
349
|
+
// the high-watermark over time in long-lived high-churn scenes.
|
|
350
|
+
while (true) {
|
|
351
|
+
const top = this.freelist.takeBlockEndingAt(this.cursor);
|
|
352
|
+
if (top === undefined)
|
|
353
|
+
break;
|
|
354
|
+
this.cursor = top.off;
|
|
355
|
+
this.buf.setUsed(this.cursor);
|
|
356
|
+
}
|
|
274
357
|
}
|
|
275
358
|
onResize(cb) { return this.buf.onResize(cb); }
|
|
276
359
|
destroy() { this.buf.destroy(); }
|
|
277
360
|
}
|
|
278
|
-
/**
|
|
279
|
-
* Insert `{off, size}` into a free-list kept sorted by `off`, then
|
|
280
|
-
* coalesce with the two immediate neighbours.
|
|
281
|
-
*/
|
|
282
|
-
export function insertSortedFreeBlock(freeList, off, size) {
|
|
283
|
-
let lo = 0, hi = freeList.length;
|
|
284
|
-
while (lo < hi) {
|
|
285
|
-
const mid = (lo + hi) >>> 1;
|
|
286
|
-
if (freeList[mid].off <= off)
|
|
287
|
-
lo = mid + 1;
|
|
288
|
-
else
|
|
289
|
-
hi = mid;
|
|
290
|
-
}
|
|
291
|
-
const prev = lo > 0 ? freeList[lo - 1] : undefined;
|
|
292
|
-
if (prev !== undefined && prev.off + prev.size === off) {
|
|
293
|
-
prev.size += size;
|
|
294
|
-
const next = freeList[lo];
|
|
295
|
-
if (next !== undefined && prev.off + prev.size === next.off) {
|
|
296
|
-
prev.size += next.size;
|
|
297
|
-
freeList.splice(lo, 1);
|
|
298
|
-
}
|
|
299
|
-
return;
|
|
300
|
-
}
|
|
301
|
-
const next = freeList[lo];
|
|
302
|
-
if (next !== undefined && off + size === next.off) {
|
|
303
|
-
next.off = off;
|
|
304
|
-
next.size += size;
|
|
305
|
-
return;
|
|
306
|
-
}
|
|
307
|
-
freeList.splice(lo, 0, { off, size });
|
|
308
|
-
}
|
|
309
361
|
// ─── IndexAllocator (element-bump) ─────────────────────────────────────
|
|
310
362
|
/**
|
|
311
363
|
* Element-bump allocator over an index GrowBuffer (units = u32). Each
|
|
312
364
|
* draw's index range is allocated as one block; on release the block
|
|
313
|
-
* is returned to a
|
|
365
|
+
* is returned to a Freelist and can be reused best-fit.
|
|
314
366
|
*/
|
|
315
367
|
export class IndexAllocator {
|
|
316
368
|
buf;
|
|
317
369
|
cursor = 0; // in u32s, not bytes
|
|
318
|
-
|
|
370
|
+
freelist = new Freelist();
|
|
319
371
|
shadow;
|
|
320
372
|
dirtyMin = Infinity;
|
|
321
373
|
dirtyMax = 0;
|
|
@@ -345,39 +397,59 @@ export class IndexAllocator {
|
|
|
345
397
|
this.dirtyMin = Infinity;
|
|
346
398
|
this.dirtyMax = 0;
|
|
347
399
|
}
|
|
400
|
+
/** Non-throwing alloc — returns `undefined` when the request
|
|
401
|
+
* would exceed the underlying GrowBuffer's `maxCapacity` cap.
|
|
402
|
+
* Used by `ChunkedIndexAllocator` to probe before spilling. */
|
|
403
|
+
tryAlloc(elements) {
|
|
404
|
+
const reused = this.freelist.alloc(elements);
|
|
405
|
+
if (reused !== undefined)
|
|
406
|
+
return reused;
|
|
407
|
+
const nextElts = this.cursor + elements;
|
|
408
|
+
if (nextElts * 4 > this.buf.maxCapacity)
|
|
409
|
+
return undefined;
|
|
410
|
+
this.cursor = nextElts;
|
|
411
|
+
this.buf.ensureCapacity(nextElts * 4);
|
|
412
|
+
this.buf.setUsed(nextElts * 4);
|
|
413
|
+
return nextElts - elements;
|
|
414
|
+
}
|
|
348
415
|
alloc(elements) {
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
const off = f.off;
|
|
353
|
-
if (f.size === elements)
|
|
354
|
-
this.freeList.splice(i, 1);
|
|
355
|
-
else {
|
|
356
|
-
f.off += elements;
|
|
357
|
-
f.size -= elements;
|
|
358
|
-
}
|
|
359
|
-
return off;
|
|
360
|
-
}
|
|
416
|
+
const r = this.tryAlloc(elements);
|
|
417
|
+
if (r === undefined) {
|
|
418
|
+
throw new Error(`IndexAllocator: allocation of ${elements} elements exceeds chunk cap`);
|
|
361
419
|
}
|
|
362
|
-
|
|
363
|
-
this.cursor += elements;
|
|
364
|
-
this.buf.ensureCapacity(this.cursor * 4);
|
|
365
|
-
this.buf.setUsed(this.cursor * 4);
|
|
366
|
-
return off;
|
|
420
|
+
return r;
|
|
367
421
|
}
|
|
368
422
|
release(off, elements) {
|
|
369
|
-
|
|
423
|
+
this.freelist.release(off, elements);
|
|
424
|
+
// §5: cursor-shrink mirror of AttributeArena.release. Cursor
|
|
425
|
+
// is in u32 elements here, and setUsed on the GrowBuffer
|
|
426
|
+
// expects bytes — multiply by 4.
|
|
427
|
+
while (true) {
|
|
428
|
+
const top = this.freelist.takeBlockEndingAt(this.cursor);
|
|
429
|
+
if (top === undefined)
|
|
430
|
+
break;
|
|
431
|
+
this.cursor = top.off;
|
|
432
|
+
this.buf.setUsed(this.cursor * 4);
|
|
433
|
+
}
|
|
370
434
|
}
|
|
371
435
|
onResize(cb) { return this.buf.onResize(cb); }
|
|
372
436
|
destroy() { this.buf.destroy(); }
|
|
373
437
|
}
|
|
374
|
-
export function buildArenaState(device, attrBytesHint, idxBytesHint, label, idxExtraUsage = 0) {
|
|
375
|
-
|
|
376
|
-
|
|
438
|
+
export function buildArenaState(device, attrBytesHint, idxBytesHint, label, idxExtraUsage = 0, maxChunkBytes = undefined) {
|
|
439
|
+
// §3: cap chunk size at min(adapter's maxStorageBufferBindingSize,
|
|
440
|
+
// GrowBuffer's DEFAULT_MAX_BUFFER_BYTES). Lets chunks grow as far
|
|
441
|
+
// as the hardware lets us (typically 2 GiB+ on desktop, ≥ 256 MB
|
|
442
|
+
// on mobile/integrated) while keeping a sensible internal ceiling.
|
|
443
|
+
// Caller can override (the heap-demo uses a tiny 4 MB cap to
|
|
444
|
+
// exercise multi-chunk routing).
|
|
445
|
+
const adapterCap = device.limits.maxStorageBufferBindingSize;
|
|
446
|
+
const cap = maxChunkBytes ?? Math.min(adapterCap, DEFAULT_MAX_BUFFER_BYTES);
|
|
447
|
+
const attrs = new ChunkedAttributeArena(device, `${label}/attrs`, GPUBufferUsage.STORAGE, attrBytesHint, cap);
|
|
448
|
+
const indices = new ChunkedIndexAllocator(device, `${label}/idx`, GPUBufferUsage.INDEX | idxExtraUsage, idxBytesHint, cap);
|
|
377
449
|
return { attrs, indices };
|
|
378
450
|
}
|
|
379
451
|
export function arenaBytes(arena) {
|
|
380
|
-
return arena.attrs.
|
|
452
|
+
return arena.attrs.totalUsedBytes() + arena.indices.totalUsedElements() * 4;
|
|
381
453
|
}
|
|
382
454
|
/** Upload a single attribute — header (typeId, length) + data — into the arena at byte offset `ref`. */
|
|
383
455
|
export function writeAttribute(device, buf, ref, typeId, length, data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pools.js","sourceRoot":"","sources":["../../../src/runtime/heapScene/pools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pools.js","sourceRoot":"","sources":["../../../src/runtime/heapScene/pools.ts"],"names":[],"mappings":"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"}
|
|
@@ -302,6 +302,18 @@ export interface BuildHeapSceneOptions {
|
|
|
302
302
|
* effect's `spec.inputs[name]` like any other uniform.
|
|
303
303
|
*/
|
|
304
304
|
readonly enableDerivedUniforms?: boolean;
|
|
305
|
+
/**
|
|
306
|
+
* §3 — per-arena-chunk size cap in bytes. When omitted, falls
|
|
307
|
+
* back to `min(device.limits.maxStorageBufferBindingSize,
|
|
308
|
+
* DEFAULT_MAX_BUFFER_BYTES = 256 MB)` so chunks grow as far as
|
|
309
|
+
* the hardware allows. Demos / tests can pass a small value
|
|
310
|
+
* (e.g. 4 MB) to exercise multi-chunk routing without realistic
|
|
311
|
+
* workload pressure. Each chunk lives in its own GPUBuffer;
|
|
312
|
+
* buckets bind exactly one chunk and emit one draw call per
|
|
313
|
+
* (effect, chunkIdx). Shared-aval avals that land in different
|
|
314
|
+
* chunks duplicate their pool entries (accepted trade-off).
|
|
315
|
+
*/
|
|
316
|
+
readonly maxChunkBytes?: number;
|
|
305
317
|
}
|
|
306
318
|
export declare function buildHeapScene(device: GPUDevice, sig: import("../core/framebufferSignature.js").FramebufferSignature, initialDraws: readonly HeapDrawSpec[] | aset<HeapDrawSpec>, opts?: BuildHeapSceneOptions): HeapScene;
|
|
307
319
|
//# sourceMappingURL=heapScene.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heapScene.d.ts","sourceRoot":"","sources":["../../src/runtime/heapScene.ts"],"names":[],"mappings":"AA4CA,OAAO,EAA2B,KAAK,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAwB,aAAa,EAAa,MAAM,2BAA2B,CAAC;AAC3F,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAgD,MAAM,2BAA2B,CAAC;AAC1G,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EAEc,KAAK,oBAAoB,EAE7C,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EAEL,KAAK,SAAS,EAAwB,KAAK,SAAS,EACrD,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"heapScene.d.ts","sourceRoot":"","sources":["../../src/runtime/heapScene.ts"],"names":[],"mappings":"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"}
|