@asciiz/atoolkit 0.1.0
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/LICENSE +21 -0
- package/ReadMe.md +198 -0
- package/dist/acircuit/chip.d.ts +46 -0
- package/dist/acircuit/chip.d.ts.map +1 -0
- package/dist/acircuit/chip.js +104 -0
- package/dist/acircuit/chip.js.map +1 -0
- package/dist/acircuit/circuit.d.ts +86 -0
- package/dist/acircuit/circuit.d.ts.map +1 -0
- package/dist/acircuit/circuit.js +606 -0
- package/dist/acircuit/circuit.js.map +1 -0
- package/dist/acircuit/composite.d.ts +32 -0
- package/dist/acircuit/composite.d.ts.map +1 -0
- package/dist/acircuit/composite.js +88 -0
- package/dist/acircuit/composite.js.map +1 -0
- package/dist/acircuit/index.d.ts +7 -0
- package/dist/acircuit/index.d.ts.map +1 -0
- package/dist/acircuit/index.js +6 -0
- package/dist/acircuit/index.js.map +1 -0
- package/dist/acircuit/socket.d.ts +20 -0
- package/dist/acircuit/socket.d.ts.map +1 -0
- package/dist/acircuit/socket.js +23 -0
- package/dist/acircuit/socket.js.map +1 -0
- package/dist/acircuit/types.d.ts +94 -0
- package/dist/acircuit/types.d.ts.map +1 -0
- package/dist/acircuit/types.js +2 -0
- package/dist/acircuit/types.js.map +1 -0
- package/dist/acircuit/wire.d.ts +26 -0
- package/dist/acircuit/wire.d.ts.map +1 -0
- package/dist/acircuit/wire.js +23 -0
- package/dist/acircuit/wire.js.map +1 -0
- package/dist/adiag/bus.d.ts +65 -0
- package/dist/adiag/bus.d.ts.map +1 -0
- package/dist/adiag/bus.js +225 -0
- package/dist/adiag/bus.js.map +1 -0
- package/dist/adiag/index.d.ts +3 -0
- package/dist/adiag/index.d.ts.map +1 -0
- package/dist/adiag/index.js +2 -0
- package/dist/adiag/index.js.map +1 -0
- package/dist/aecs/ComponentSet.d.ts +33 -0
- package/dist/aecs/ComponentSet.d.ts.map +1 -0
- package/dist/aecs/ComponentSet.js +127 -0
- package/dist/aecs/ComponentSet.js.map +1 -0
- package/dist/aecs/Entity.d.ts +43 -0
- package/dist/aecs/Entity.d.ts.map +1 -0
- package/dist/aecs/Entity.js +82 -0
- package/dist/aecs/Entity.js.map +1 -0
- package/dist/aecs/FloatSet.d.ts +34 -0
- package/dist/aecs/FloatSet.d.ts.map +1 -0
- package/dist/aecs/FloatSet.js +147 -0
- package/dist/aecs/FloatSet.js.map +1 -0
- package/dist/aecs/Query.d.ts +90 -0
- package/dist/aecs/Query.d.ts.map +1 -0
- package/dist/aecs/Query.js +304 -0
- package/dist/aecs/Query.js.map +1 -0
- package/dist/aecs/index.d.ts +6 -0
- package/dist/aecs/index.d.ts.map +1 -0
- package/dist/aecs/index.js +6 -0
- package/dist/aecs/index.js.map +1 -0
- package/dist/aecs/join.d.ts +2 -0
- package/dist/aecs/join.d.ts.map +1 -0
- package/dist/aecs/join.js +2 -0
- package/dist/aecs/join.js.map +1 -0
- package/dist/alm/constants.d.ts +11 -0
- package/dist/alm/constants.d.ts.map +1 -0
- package/dist/alm/constants.js +17 -0
- package/dist/alm/constants.js.map +1 -0
- package/dist/alm/index.d.ts +9 -0
- package/dist/alm/index.d.ts.map +1 -0
- package/dist/alm/index.js +12 -0
- package/dist/alm/index.js.map +1 -0
- package/dist/alm/mat3.d.ts +63 -0
- package/dist/alm/mat3.d.ts.map +1 -0
- package/dist/alm/mat3.js +393 -0
- package/dist/alm/mat3.js.map +1 -0
- package/dist/alm/mat4.d.ts +157 -0
- package/dist/alm/mat4.d.ts.map +1 -0
- package/dist/alm/mat4.js +1448 -0
- package/dist/alm/mat4.js.map +1 -0
- package/dist/alm/quat.d.ts +89 -0
- package/dist/alm/quat.d.ts.map +1 -0
- package/dist/alm/quat.js +543 -0
- package/dist/alm/quat.js.map +1 -0
- package/dist/alm/spatial.d.ts +102 -0
- package/dist/alm/spatial.d.ts.map +1 -0
- package/dist/alm/spatial.js +389 -0
- package/dist/alm/spatial.js.map +1 -0
- package/dist/alm/vec2.d.ts +97 -0
- package/dist/alm/vec2.d.ts.map +1 -0
- package/dist/alm/vec2.js +369 -0
- package/dist/alm/vec2.js.map +1 -0
- package/dist/alm/vec3.d.ts +117 -0
- package/dist/alm/vec3.d.ts.map +1 -0
- package/dist/alm/vec3.js +547 -0
- package/dist/alm/vec3.js.map +1 -0
- package/dist/alm/vec4.d.ts +95 -0
- package/dist/alm/vec4.d.ts.map +1 -0
- package/dist/alm/vec4.js +452 -0
- package/dist/alm/vec4.js.map +1 -0
- package/dist/atempo/cadence.d.ts +58 -0
- package/dist/atempo/cadence.d.ts.map +1 -0
- package/dist/atempo/cadence.js +110 -0
- package/dist/atempo/cadence.js.map +1 -0
- package/dist/atempo/clip.d.ts +37 -0
- package/dist/atempo/clip.d.ts.map +1 -0
- package/dist/atempo/clip.js +92 -0
- package/dist/atempo/clip.js.map +1 -0
- package/dist/atempo/curve.d.ts +6 -0
- package/dist/atempo/curve.d.ts.map +1 -0
- package/dist/atempo/curve.js +2 -0
- package/dist/atempo/curve.js.map +1 -0
- package/dist/atempo/curves/bezier.d.ts +7 -0
- package/dist/atempo/curves/bezier.d.ts.map +1 -0
- package/dist/atempo/curves/bezier.js +46 -0
- package/dist/atempo/curves/bezier.js.map +1 -0
- package/dist/atempo/curves/bounce.d.ts +6 -0
- package/dist/atempo/curves/bounce.d.ts.map +1 -0
- package/dist/atempo/curves/bounce.js +22 -0
- package/dist/atempo/curves/bounce.js.map +1 -0
- package/dist/atempo/curves/cubic.d.ts +14 -0
- package/dist/atempo/curves/cubic.d.ts.map +1 -0
- package/dist/atempo/curves/cubic.js +22 -0
- package/dist/atempo/curves/cubic.js.map +1 -0
- package/dist/atempo/curves/elastic.d.ts +6 -0
- package/dist/atempo/curves/elastic.d.ts.map +1 -0
- package/dist/atempo/curves/elastic.js +12 -0
- package/dist/atempo/curves/elastic.js.map +1 -0
- package/dist/atempo/curves/expo.d.ts +14 -0
- package/dist/atempo/curves/expo.d.ts.map +1 -0
- package/dist/atempo/curves/expo.js +26 -0
- package/dist/atempo/curves/expo.js.map +1 -0
- package/dist/atempo/curves/holdSnap.d.ts +6 -0
- package/dist/atempo/curves/holdSnap.d.ts.map +1 -0
- package/dist/atempo/curves/holdSnap.js +15 -0
- package/dist/atempo/curves/holdSnap.js.map +1 -0
- package/dist/atempo/curves/index.d.ts +14 -0
- package/dist/atempo/curves/index.d.ts.map +1 -0
- package/dist/atempo/curves/index.js +14 -0
- package/dist/atempo/curves/index.js.map +1 -0
- package/dist/atempo/curves/linear.d.ts +6 -0
- package/dist/atempo/curves/linear.d.ts.map +1 -0
- package/dist/atempo/curves/linear.js +5 -0
- package/dist/atempo/curves/linear.js.map +1 -0
- package/dist/atempo/curves/overshoot.d.ts +6 -0
- package/dist/atempo/curves/overshoot.d.ts.map +1 -0
- package/dist/atempo/curves/overshoot.js +16 -0
- package/dist/atempo/curves/overshoot.js.map +1 -0
- package/dist/atempo/curves/quad.d.ts +14 -0
- package/dist/atempo/curves/quad.d.ts.map +1 -0
- package/dist/atempo/curves/quad.js +22 -0
- package/dist/atempo/curves/quad.js.map +1 -0
- package/dist/atempo/curves/step.d.ts +6 -0
- package/dist/atempo/curves/step.d.ts.map +1 -0
- package/dist/atempo/curves/step.js +11 -0
- package/dist/atempo/curves/step.js.map +1 -0
- package/dist/atempo/index.d.ts +17 -0
- package/dist/atempo/index.d.ts.map +1 -0
- package/dist/atempo/index.js +18 -0
- package/dist/atempo/index.js.map +1 -0
- package/dist/atempo/phase.d.ts +66 -0
- package/dist/atempo/phase.d.ts.map +1 -0
- package/dist/atempo/phase.js +121 -0
- package/dist/atempo/phase.js.map +1 -0
- package/dist/atempo/spring.d.ts +20 -0
- package/dist/atempo/spring.d.ts.map +1 -0
- package/dist/atempo/spring.js +71 -0
- package/dist/atempo/spring.js.map +1 -0
- package/dist/atempo/track.d.ts +69 -0
- package/dist/atempo/track.d.ts.map +1 -0
- package/dist/atempo/track.js +184 -0
- package/dist/atempo/track.js.map +1 -0
- package/dist/atempo/tracks/color.d.ts +20 -0
- package/dist/atempo/tracks/color.d.ts.map +1 -0
- package/dist/atempo/tracks/color.js +52 -0
- package/dist/atempo/tracks/color.js.map +1 -0
- package/dist/atempo/tracks/float.d.ts +9 -0
- package/dist/atempo/tracks/float.d.ts.map +1 -0
- package/dist/atempo/tracks/float.js +13 -0
- package/dist/atempo/tracks/float.js.map +1 -0
- package/dist/atempo/tracks/index.d.ts +8 -0
- package/dist/atempo/tracks/index.d.ts.map +1 -0
- package/dist/atempo/tracks/index.js +8 -0
- package/dist/atempo/tracks/index.js.map +1 -0
- package/dist/atempo/tracks/quat.d.ts +16 -0
- package/dist/atempo/tracks/quat.d.ts.map +1 -0
- package/dist/atempo/tracks/quat.js +72 -0
- package/dist/atempo/tracks/quat.js.map +1 -0
- package/dist/atempo/tracks/vec.d.ts +11 -0
- package/dist/atempo/tracks/vec.d.ts.map +1 -0
- package/dist/atempo/tracks/vec.js +27 -0
- package/dist/atempo/tracks/vec.js.map +1 -0
- package/dist/awasm/abi/index.d.ts +4 -0
- package/dist/awasm/abi/index.d.ts.map +1 -0
- package/dist/awasm/abi/index.js +4 -0
- package/dist/awasm/abi/index.js.map +1 -0
- package/dist/awasm/abi/layout.d.ts +40 -0
- package/dist/awasm/abi/layout.d.ts.map +1 -0
- package/dist/awasm/abi/layout.js +100 -0
- package/dist/awasm/abi/layout.js.map +1 -0
- package/dist/awasm/abi/slice.d.ts +28 -0
- package/dist/awasm/abi/slice.d.ts.map +1 -0
- package/dist/awasm/abi/slice.js +68 -0
- package/dist/awasm/abi/slice.js.map +1 -0
- package/dist/awasm/abi/string-buffer.d.ts +23 -0
- package/dist/awasm/abi/string-buffer.d.ts.map +1 -0
- package/dist/awasm/abi/string-buffer.js +52 -0
- package/dist/awasm/abi/string-buffer.js.map +1 -0
- package/dist/awasm/index.d.ts +5 -0
- package/dist/awasm/index.d.ts.map +1 -0
- package/dist/awasm/index.js +8 -0
- package/dist/awasm/index.js.map +1 -0
- package/dist/awasm/memory/block-pool.d.ts +31 -0
- package/dist/awasm/memory/block-pool.d.ts.map +1 -0
- package/dist/awasm/memory/block-pool.js +98 -0
- package/dist/awasm/memory/block-pool.js.map +1 -0
- package/dist/awasm/memory/index.d.ts +5 -0
- package/dist/awasm/memory/index.d.ts.map +1 -0
- package/dist/awasm/memory/index.js +5 -0
- package/dist/awasm/memory/index.js.map +1 -0
- package/dist/awasm/memory/linear-arena.d.ts +36 -0
- package/dist/awasm/memory/linear-arena.d.ts.map +1 -0
- package/dist/awasm/memory/linear-arena.js +94 -0
- package/dist/awasm/memory/linear-arena.js.map +1 -0
- package/dist/awasm/memory/memory-view.d.ts +51 -0
- package/dist/awasm/memory/memory-view.d.ts.map +1 -0
- package/dist/awasm/memory/memory-view.js +110 -0
- package/dist/awasm/memory/memory-view.js.map +1 -0
- package/dist/awasm/memory/wasm-memory.d.ts +40 -0
- package/dist/awasm/memory/wasm-memory.d.ts.map +1 -0
- package/dist/awasm/memory/wasm-memory.js +88 -0
- package/dist/awasm/memory/wasm-memory.js.map +1 -0
- package/dist/awasm/runtime/host-bridge.d.ts +30 -0
- package/dist/awasm/runtime/host-bridge.d.ts.map +1 -0
- package/dist/awasm/runtime/host-bridge.js +57 -0
- package/dist/awasm/runtime/host-bridge.js.map +1 -0
- package/dist/awasm/runtime/index.d.ts +5 -0
- package/dist/awasm/runtime/index.d.ts.map +1 -0
- package/dist/awasm/runtime/index.js +5 -0
- package/dist/awasm/runtime/index.js.map +1 -0
- package/dist/awasm/runtime/module-inspector.d.ts +32 -0
- package/dist/awasm/runtime/module-inspector.d.ts.map +1 -0
- package/dist/awasm/runtime/module-inspector.js +43 -0
- package/dist/awasm/runtime/module-inspector.js.map +1 -0
- package/dist/awasm/runtime/module-loader.d.ts +17 -0
- package/dist/awasm/runtime/module-loader.d.ts.map +1 -0
- package/dist/awasm/runtime/module-loader.js +99 -0
- package/dist/awasm/runtime/module-loader.js.map +1 -0
- package/dist/awasm/runtime/wasm-instance.d.ts +25 -0
- package/dist/awasm/runtime/wasm-instance.d.ts.map +1 -0
- package/dist/awasm/runtime/wasm-instance.js +60 -0
- package/dist/awasm/runtime/wasm-instance.js.map +1 -0
- package/dist/awasm/thread/atomic-queue.d.ts +33 -0
- package/dist/awasm/thread/atomic-queue.d.ts.map +1 -0
- package/dist/awasm/thread/atomic-queue.js +78 -0
- package/dist/awasm/thread/atomic-queue.js.map +1 -0
- package/dist/awasm/thread/index.d.ts +4 -0
- package/dist/awasm/thread/index.d.ts.map +1 -0
- package/dist/awasm/thread/index.js +4 -0
- package/dist/awasm/thread/index.js.map +1 -0
- package/dist/awasm/thread/shared-memory.d.ts +38 -0
- package/dist/awasm/thread/shared-memory.d.ts.map +1 -0
- package/dist/awasm/thread/shared-memory.js +74 -0
- package/dist/awasm/thread/shared-memory.js.map +1 -0
- package/dist/awasm/thread/worker-pool.d.ts +43 -0
- package/dist/awasm/thread/worker-pool.d.ts.map +1 -0
- package/dist/awasm/thread/worker-pool.js +118 -0
- package/dist/awasm/thread/worker-pool.js.map +1 -0
- package/dist/awgpu/binding.d.ts +108 -0
- package/dist/awgpu/binding.d.ts.map +1 -0
- package/dist/awgpu/binding.js +251 -0
- package/dist/awgpu/binding.js.map +1 -0
- package/dist/awgpu/device.d.ts +68 -0
- package/dist/awgpu/device.d.ts.map +1 -0
- package/dist/awgpu/device.js +150 -0
- package/dist/awgpu/device.js.map +1 -0
- package/dist/awgpu/graph.d.ts +77 -0
- package/dist/awgpu/graph.d.ts.map +1 -0
- package/dist/awgpu/graph.js +288 -0
- package/dist/awgpu/graph.js.map +1 -0
- package/dist/awgpu/index.d.ts +10 -0
- package/dist/awgpu/index.d.ts.map +1 -0
- package/dist/awgpu/index.js +19 -0
- package/dist/awgpu/index.js.map +1 -0
- package/dist/awgpu/memory.d.ts +231 -0
- package/dist/awgpu/memory.d.ts.map +1 -0
- package/dist/awgpu/memory.js +547 -0
- package/dist/awgpu/memory.js.map +1 -0
- package/dist/awgpu/pipeline.d.ts +114 -0
- package/dist/awgpu/pipeline.d.ts.map +1 -0
- package/dist/awgpu/pipeline.js +335 -0
- package/dist/awgpu/pipeline.js.map +1 -0
- package/dist/awgpu/sequence.d.ts +83 -0
- package/dist/awgpu/sequence.d.ts.map +1 -0
- package/dist/awgpu/sequence.js +273 -0
- package/dist/awgpu/sequence.js.map +1 -0
- package/dist/awgpu/state.d.ts +27 -0
- package/dist/awgpu/state.d.ts.map +1 -0
- package/dist/awgpu/state.js +43 -0
- package/dist/awgpu/state.js.map +1 -0
- package/dist/awgpu/stream.d.ts +57 -0
- package/dist/awgpu/stream.d.ts.map +1 -0
- package/dist/awgpu/stream.js +139 -0
- package/dist/awgpu/stream.js.map +1 -0
- package/dist/awgpu/target.d.ts +98 -0
- package/dist/awgpu/target.d.ts.map +1 -0
- package/dist/awgpu/target.js +357 -0
- package/dist/awgpu/target.js.map +1 -0
- package/dist/awgpu_old/buffer.d.ts +78 -0
- package/dist/awgpu_old/buffer.d.ts.map +1 -0
- package/dist/awgpu_old/buffer.js +220 -0
- package/dist/awgpu_old/buffer.js.map +1 -0
- package/dist/awgpu_old/device.d.ts +69 -0
- package/dist/awgpu_old/device.d.ts.map +1 -0
- package/dist/awgpu_old/device.js +121 -0
- package/dist/awgpu_old/device.js.map +1 -0
- package/dist/awgpu_old/frame.d.ts +17 -0
- package/dist/awgpu_old/frame.d.ts.map +1 -0
- package/dist/awgpu_old/frame.js +29 -0
- package/dist/awgpu_old/frame.js.map +1 -0
- package/dist/awgpu_old/index.d.ts +8 -0
- package/dist/awgpu_old/index.d.ts.map +1 -0
- package/dist/awgpu_old/index.js +18 -0
- package/dist/awgpu_old/index.js.map +1 -0
- package/dist/awgpu_old/layout.d.ts +70 -0
- package/dist/awgpu_old/layout.d.ts.map +1 -0
- package/dist/awgpu_old/layout.js +137 -0
- package/dist/awgpu_old/layout.js.map +1 -0
- package/dist/awgpu_old/pass.d.ts +97 -0
- package/dist/awgpu_old/pass.d.ts.map +1 -0
- package/dist/awgpu_old/pass.js +302 -0
- package/dist/awgpu_old/pass.js.map +1 -0
- package/dist/awgpu_old/pipeline.d.ts +73 -0
- package/dist/awgpu_old/pipeline.d.ts.map +1 -0
- package/dist/awgpu_old/pipeline.js +226 -0
- package/dist/awgpu_old/pipeline.js.map +1 -0
- package/dist/awgpu_old/target.d.ts +186 -0
- package/dist/awgpu_old/target.d.ts.map +1 -0
- package/dist/awgpu_old/target.js +428 -0
- package/dist/awgpu_old/target.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/package.json +106 -0
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
// ================================================================
|
|
2
|
+
// Awgpu - Level 5: Dependency Execution Graph (PassGraph)
|
|
3
|
+
// ================================================================
|
|
4
|
+
import { RenderPassNode, ComputePassNode, PassSequence } from "./sequence.js";
|
|
5
|
+
function getResourceHandle(res) {
|
|
6
|
+
if ("native" in res)
|
|
7
|
+
return res.native;
|
|
8
|
+
return res;
|
|
9
|
+
}
|
|
10
|
+
export class RenderGraphNode {
|
|
11
|
+
node;
|
|
12
|
+
reads = new Set();
|
|
13
|
+
writes = new Set();
|
|
14
|
+
_hasSideEffect = false;
|
|
15
|
+
constructor(target, label) {
|
|
16
|
+
this.node = new RenderPassNode(target, label);
|
|
17
|
+
// Automatically register target output attachments into write dependency set
|
|
18
|
+
for (let i = 0; i < target.colorTargets.length; i++) {
|
|
19
|
+
const t = target.colorTargets[i].target;
|
|
20
|
+
if (t !== null) {
|
|
21
|
+
this.writes.add(getResourceHandle(t));
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
// Null target writes directly to screen swapchain
|
|
25
|
+
this._hasSideEffect = true;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
for (let i = 0; i < target.colorTextures.length; i++) {
|
|
29
|
+
this.writes.add(getResourceHandle(target.colorTextures[i]));
|
|
30
|
+
}
|
|
31
|
+
if (target.depthTarget) {
|
|
32
|
+
this.writes.add(getResourceHandle(target.depthTarget.target));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
get hasSideEffect() {
|
|
36
|
+
return this._hasSideEffect;
|
|
37
|
+
}
|
|
38
|
+
sideEffect(enabled = true) {
|
|
39
|
+
this._hasSideEffect = enabled;
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
read(res) {
|
|
43
|
+
this.reads.add(getResourceHandle(res));
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
write(res) {
|
|
47
|
+
this.writes.add(getResourceHandle(res));
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Proxy: adds draw batch to the inner RenderPassNode.
|
|
52
|
+
*/
|
|
53
|
+
addDraw(batch) {
|
|
54
|
+
this.node.addDraw(batch);
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Proxy: registers custom imperative recording callback on the inner RenderPassNode.
|
|
59
|
+
*/
|
|
60
|
+
record(recorder) {
|
|
61
|
+
this.node.record(recorder);
|
|
62
|
+
this._hasSideEffect = true;
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
export class ComputeGraphNode {
|
|
67
|
+
node;
|
|
68
|
+
reads = new Set();
|
|
69
|
+
writes = new Set();
|
|
70
|
+
_hasSideEffect = false;
|
|
71
|
+
constructor(label) {
|
|
72
|
+
this.node = new ComputePassNode(label);
|
|
73
|
+
}
|
|
74
|
+
get hasSideEffect() {
|
|
75
|
+
return this._hasSideEffect;
|
|
76
|
+
}
|
|
77
|
+
sideEffect(enabled = true) {
|
|
78
|
+
this._hasSideEffect = enabled;
|
|
79
|
+
return this;
|
|
80
|
+
}
|
|
81
|
+
read(res) {
|
|
82
|
+
this.reads.add(getResourceHandle(res));
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
85
|
+
write(res) {
|
|
86
|
+
this.writes.add(getResourceHandle(res));
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Proxy: adds compute dispatch to the inner ComputePassNode.
|
|
91
|
+
*/
|
|
92
|
+
addDispatch(batch) {
|
|
93
|
+
this.node.addDispatch(batch);
|
|
94
|
+
return this;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Proxy: registers custom imperative recording callback on the inner ComputePassNode.
|
|
98
|
+
*/
|
|
99
|
+
record(recorder) {
|
|
100
|
+
this.node.record(recorder);
|
|
101
|
+
this._hasSideEffect = true;
|
|
102
|
+
return this;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Directed acyclic graph (DAG) scheduler for compute and render passes.
|
|
107
|
+
* Automatically sorts pass execution order based on read/write resource dependencies.
|
|
108
|
+
* compile() uses Kahn's algorithm in O(V+E) time via an index pointer instead of shift().
|
|
109
|
+
* Automatically eliminates dead passes not contributing to side effects or screen targets.
|
|
110
|
+
*/
|
|
111
|
+
export class PassGraph {
|
|
112
|
+
_nodes = [];
|
|
113
|
+
_cachedSequence;
|
|
114
|
+
_dirty = true;
|
|
115
|
+
addRenderPass(target, label = "RenderPass") {
|
|
116
|
+
const node = new RenderGraphNode(target, label);
|
|
117
|
+
this._nodes.push(node);
|
|
118
|
+
this._dirty = true;
|
|
119
|
+
return node;
|
|
120
|
+
}
|
|
121
|
+
addComputePass(label = "ComputePass") {
|
|
122
|
+
const node = new ComputeGraphNode(label);
|
|
123
|
+
this._nodes.push(node);
|
|
124
|
+
this._dirty = true;
|
|
125
|
+
return node;
|
|
126
|
+
}
|
|
127
|
+
clear() {
|
|
128
|
+
this._nodes.length = 0;
|
|
129
|
+
this._cachedSequence = undefined;
|
|
130
|
+
this._dirty = true;
|
|
131
|
+
}
|
|
132
|
+
invalidate() {
|
|
133
|
+
this._dirty = true;
|
|
134
|
+
this._cachedSequence = undefined;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Compiles dependency graph into linear PassSequence using Kahn topological sort.
|
|
138
|
+
* Evaluates read/write hazards bidirectionally across pass pairs.
|
|
139
|
+
* Performs reverse reachability analysis from side-effect roots to eliminate dead passes.
|
|
140
|
+
* When cycle is detected, logs warning and falls back to declaration order.
|
|
141
|
+
* Caches compiled sequence when topology is unchanged.
|
|
142
|
+
*/
|
|
143
|
+
compile(optionsOrForce = false, cullDeadPasses = true) {
|
|
144
|
+
let force = false;
|
|
145
|
+
let cull = cullDeadPasses;
|
|
146
|
+
if (typeof optionsOrForce === "boolean") {
|
|
147
|
+
force = optionsOrForce;
|
|
148
|
+
}
|
|
149
|
+
else if (typeof optionsOrForce === "object") {
|
|
150
|
+
force = optionsOrForce.force ?? false;
|
|
151
|
+
cull = optionsOrForce.cullDeadPasses ?? true;
|
|
152
|
+
}
|
|
153
|
+
if (!force && !this._dirty && this._cachedSequence) {
|
|
154
|
+
return this._cachedSequence;
|
|
155
|
+
}
|
|
156
|
+
const n = this._nodes.length;
|
|
157
|
+
const adj = Array.from({ length: n }, () => []);
|
|
158
|
+
// Build dependency edges between all pass pairs
|
|
159
|
+
for (let i = 0; i < n; i++) {
|
|
160
|
+
const nodeA = this._nodes[i];
|
|
161
|
+
for (let j = i + 1; j < n; j++) {
|
|
162
|
+
const nodeB = this._nodes[j];
|
|
163
|
+
let hasAProducesB = false;
|
|
164
|
+
for (const written of nodeA.writes) {
|
|
165
|
+
if (nodeB.reads.has(written) || nodeB.writes.has(written)) {
|
|
166
|
+
hasAProducesB = true;
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
let hasBProducesA = false;
|
|
171
|
+
for (const written of nodeB.writes) {
|
|
172
|
+
if (nodeA.reads.has(written) || nodeA.writes.has(written)) {
|
|
173
|
+
hasBProducesA = true;
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
if (hasAProducesB && !hasBProducesA) {
|
|
178
|
+
// Node A produces for Node B (declaration order preserved)
|
|
179
|
+
if (!adj[i].includes(j)) {
|
|
180
|
+
adj[i].push(j);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
else if (!hasAProducesB && hasBProducesA) {
|
|
184
|
+
// Node B produces for Node A (out-of-order declaration: B must precede A)
|
|
185
|
+
if (!adj[j].includes(i)) {
|
|
186
|
+
adj[j].push(i);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
else if (hasAProducesB && hasBProducesA) {
|
|
190
|
+
// Mutual read/write dependency: preserve declaration order
|
|
191
|
+
if (!adj[i].includes(j)) {
|
|
192
|
+
adj[i].push(j);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// Dead Pass Elimination via reverse reachability from side-effect roots
|
|
198
|
+
const alive = new Set();
|
|
199
|
+
if (cull) {
|
|
200
|
+
const queue = [];
|
|
201
|
+
for (let i = 0; i < n; i++) {
|
|
202
|
+
if (this._nodes[i].hasSideEffect) {
|
|
203
|
+
alive.add(i);
|
|
204
|
+
queue.push(i);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// If side-effect roots exist, traverse reverse dependencies
|
|
208
|
+
if (alive.size > 0) {
|
|
209
|
+
while (queue.length > 0) {
|
|
210
|
+
const v = queue.pop();
|
|
211
|
+
for (let u = 0; u < n; u++) {
|
|
212
|
+
if (adj[u].includes(v) && !alive.has(u)) {
|
|
213
|
+
alive.add(u);
|
|
214
|
+
queue.push(u);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
// When no pass declares side effects, preserve all passes
|
|
221
|
+
for (let i = 0; i < n; i++) {
|
|
222
|
+
alive.add(i);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
for (let i = 0; i < n; i++) {
|
|
228
|
+
alive.add(i);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// Compute in-degrees within the active sub-graph
|
|
232
|
+
const inDegree = new Map();
|
|
233
|
+
for (const u of alive) {
|
|
234
|
+
inDegree.set(u, 0);
|
|
235
|
+
}
|
|
236
|
+
for (const u of alive) {
|
|
237
|
+
for (const v of adj[u]) {
|
|
238
|
+
if (alive.has(v)) {
|
|
239
|
+
inDegree.set(v, (inDegree.get(v) ?? 0) + 1);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Kahn topological sort on active nodes
|
|
244
|
+
const queue = [];
|
|
245
|
+
for (const u of alive) {
|
|
246
|
+
if (inDegree.get(u) === 0) {
|
|
247
|
+
queue.push(u);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
const sortedOrder = [];
|
|
251
|
+
let head = 0;
|
|
252
|
+
while (head < queue.length) {
|
|
253
|
+
const u = queue[head++];
|
|
254
|
+
sortedOrder.push(u);
|
|
255
|
+
for (const v of adj[u]) {
|
|
256
|
+
if (alive.has(v)) {
|
|
257
|
+
const nextDeg = (inDegree.get(v) ?? 0) - 1;
|
|
258
|
+
inDegree.set(v, nextDeg);
|
|
259
|
+
if (nextDeg === 0) {
|
|
260
|
+
queue.push(v);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
if (sortedOrder.length !== alive.size) {
|
|
266
|
+
console.warn(`[Awgpu] PassGraph cycle detected: ${alive.size - sortedOrder.length} pass(es) ` +
|
|
267
|
+
"involved in circular dependency. Falling back to declaration order.");
|
|
268
|
+
}
|
|
269
|
+
const finalIndices = sortedOrder.length === alive.size
|
|
270
|
+
? sortedOrder
|
|
271
|
+
: Array.from(alive).sort((a, b) => a - b);
|
|
272
|
+
const sequence = new PassSequence();
|
|
273
|
+
for (const idx of finalIndices) {
|
|
274
|
+
sequence.add(this._nodes[idx].node);
|
|
275
|
+
}
|
|
276
|
+
this._cachedSequence = sequence;
|
|
277
|
+
this._dirty = false;
|
|
278
|
+
return sequence;
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Compiles and executes the graph in a single call.
|
|
282
|
+
*/
|
|
283
|
+
execute(device, label = "PassGraph", options) {
|
|
284
|
+
const sequence = this.compile(options);
|
|
285
|
+
sequence.execute(device, label);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../awgpu/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { Device, resolveDevice, resolveQueue, type DeviceConfig, } from "./device.js";
|
|
2
|
+
export { Buffer, BufferPool, Texture, Sampler, resolveBuffer, resolveTexture, resolveTextureView, resolveSampler, type BufferSlice, type BufferSourceData, type ResolvedBuffer, } from "./memory.js";
|
|
3
|
+
export { StreamSet, VERTEX_FORMAT_SIZES, type VertexStream, type IndexStream, } from "./stream.js";
|
|
4
|
+
export { SwapBuffer, } from "./state.js";
|
|
5
|
+
export { Target, type ColorTargetDesc, type DepthTargetDesc, } from "./target.js";
|
|
6
|
+
export { SlotFrequency, BindLayout, BindLayoutBuilder, BindTable, BindTableCache, hashBindingEntries, resolveBindingResource, type ResourceBinding, type BindingEntry, } from "./binding.js";
|
|
7
|
+
export { RasterPipeline, ComputePipeline, PipelineCache, type RasterPipelineDesc, type ComputePipelineDesc, type ShaderMessage, } from "./pipeline.js";
|
|
8
|
+
export { RenderPassNode, ComputePassNode, PassSequence, type DrawBatch, type ComputeBatch, type DynamicOffsetRecord, } from "./sequence.js";
|
|
9
|
+
export { PassGraph, RenderGraphNode, ComputeGraphNode, type GraphResource, } from "./graph.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../awgpu/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,MAAM,EACN,aAAa,EACb,YAAY,EACZ,KAAK,YAAY,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACH,MAAM,EACN,UAAU,EACV,OAAO,EACP,OAAO,EACP,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACtB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACH,SAAS,EACT,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,WAAW,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACH,UAAU,GACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EACH,MAAM,EACN,KAAK,eAAe,EACpB,KAAK,eAAe,GACvB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACH,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,YAAY,GACpB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACH,cAAc,EACd,eAAe,EACf,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACrB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACH,cAAc,EACd,eAAe,EACf,YAAY,EACZ,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,mBAAmB,GAC3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACH,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,KAAK,aAAa,GACrB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// ================================================================
|
|
2
|
+
// Awgpu - Domain-Agnostic WebGPU Execution Engine
|
|
3
|
+
// ================================================================
|
|
4
|
+
// Level 0: Hardware Foundation
|
|
5
|
+
export { Device, resolveDevice, resolveQueue, } from "./device.js";
|
|
6
|
+
// Level 1: Managed Hardware Memory & Handles
|
|
7
|
+
export { Buffer, BufferPool, Texture, Sampler, resolveBuffer, resolveTexture, resolveTextureView, resolveSampler, } from "./memory.js";
|
|
8
|
+
// Level 2: Composable Data Structures
|
|
9
|
+
export { StreamSet, VERTEX_FORMAT_SIZES, } from "./stream.js";
|
|
10
|
+
export { SwapBuffer, } from "./state.js";
|
|
11
|
+
export { Target, } from "./target.js";
|
|
12
|
+
// Level 3: Resource Binding System
|
|
13
|
+
export { SlotFrequency, BindLayout, BindLayoutBuilder, BindTable, BindTableCache, hashBindingEntries, resolveBindingResource, } from "./binding.js";
|
|
14
|
+
// Level 4: Hardware Pipelines
|
|
15
|
+
export { RasterPipeline, ComputePipeline, PipelineCache, } from "./pipeline.js";
|
|
16
|
+
// Level 5: Command Sequencing & Execution Graph
|
|
17
|
+
export { RenderPassNode, ComputePassNode, PassSequence, } from "./sequence.js";
|
|
18
|
+
export { PassGraph, RenderGraphNode, ComputeGraphNode, } from "./graph.js";
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../awgpu/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,mDAAmD;AACnD,mEAAmE;AAEnE,+BAA+B;AAC/B,OAAO,EACH,MAAM,EACN,aAAa,EACb,YAAY,GAEf,MAAM,aAAa,CAAC;AAErB,6CAA6C;AAC7C,OAAO,EACH,MAAM,EACN,UAAU,EACV,OAAO,EACP,OAAO,EACP,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,cAAc,GAIjB,MAAM,aAAa,CAAC;AAErB,sCAAsC;AACtC,OAAO,EACH,SAAS,EACT,mBAAmB,GAGtB,MAAM,aAAa,CAAC;AAErB,OAAO,EACH,UAAU,GACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EACH,MAAM,GAGT,MAAM,aAAa,CAAC;AAErB,mCAAmC;AACnC,OAAO,EACH,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,sBAAsB,GAGzB,MAAM,cAAc,CAAC;AAEtB,8BAA8B;AAC9B,OAAO,EACH,cAAc,EACd,eAAe,EACf,aAAa,GAIhB,MAAM,eAAe,CAAC;AAEvB,gDAAgD;AAChD,OAAO,EACH,cAAc,EACd,eAAe,EACf,YAAY,GAIf,MAAM,eAAe,CAAC;AAEvB,OAAO,EACH,SAAS,EACT,eAAe,EACf,gBAAgB,GAEnB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { type Device } from "./device.js";
|
|
2
|
+
export type BufferSourceData = ArrayBufferView | ArrayBuffer;
|
|
3
|
+
/**
|
|
4
|
+
* Sub-allocation view pointing to an aligned byte range inside a buffer.
|
|
5
|
+
*/
|
|
6
|
+
export interface BufferSlice {
|
|
7
|
+
readonly buffer: GPUBuffer | Buffer;
|
|
8
|
+
readonly byteOffset: number;
|
|
9
|
+
readonly byteLength: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ResolvedBuffer {
|
|
12
|
+
buffer: GPUBuffer;
|
|
13
|
+
offset: number;
|
|
14
|
+
size: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Resolves a buffer source (native GPUBuffer, Buffer wrapper, or BufferSlice) into concrete hardware descriptors.
|
|
18
|
+
* Accepts an optional mutable ResolvedBuffer target to eliminate heap allocations in hot paths.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveBuffer(source: GPUBuffer | Buffer | BufferSlice, out?: ResolvedBuffer): ResolvedBuffer;
|
|
21
|
+
/**
|
|
22
|
+
* Resolves a texture source into a raw GPUTexture.
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveTexture(source: GPUTexture | Texture): GPUTexture;
|
|
25
|
+
/**
|
|
26
|
+
* Resolves GPUTextureView from GPUTextureView, GPUTexture, or Texture wrapper.
|
|
27
|
+
* Raw GPUTexture inputs are cached in a module-level WeakMap so the default view
|
|
28
|
+
* is created only once per texture object, eliminating repeated allocations in hot paths.
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolveTextureView(source: GPUTextureView | GPUTexture | Texture): GPUTextureView;
|
|
31
|
+
/**
|
|
32
|
+
* Resolves a sampler from Sampler wrapper or GPUSampler.
|
|
33
|
+
*/
|
|
34
|
+
export declare function resolveSampler(source: GPUSampler | Sampler): GPUSampler;
|
|
35
|
+
/**
|
|
36
|
+
* Managed WebGPU buffer with alignment validation and zero-allocation writing.
|
|
37
|
+
*/
|
|
38
|
+
export declare class Buffer {
|
|
39
|
+
readonly native: GPUBuffer;
|
|
40
|
+
readonly size: number;
|
|
41
|
+
readonly usage: GPUBufferUsageFlags;
|
|
42
|
+
readonly label: string;
|
|
43
|
+
constructor(native: GPUBuffer, size: number, usage: GPUBufferUsageFlags, label?: string);
|
|
44
|
+
/**
|
|
45
|
+
* Creates a slice view into this buffer without heap allocation.
|
|
46
|
+
*/
|
|
47
|
+
slice(byteOffset: number, byteLength?: number): BufferSlice;
|
|
48
|
+
/**
|
|
49
|
+
* Uploads typed array data in-place into GPU buffer memory via queue.writeBuffer.
|
|
50
|
+
*/
|
|
51
|
+
write(device: Device | GPUDevice, data: BufferSourceData, bufferOffset?: number): void;
|
|
52
|
+
/**
|
|
53
|
+
* Reads buffer contents back to CPU via a MAP_READ staging buffer.
|
|
54
|
+
* - byteOffset: byte start within this buffer. Default 0.
|
|
55
|
+
* - byteLength: number of bytes to read. Defaults to remaining size from byteOffset.
|
|
56
|
+
* - reusableStaging: optional pre-allocated MAP_READ staging buffer to avoid per-read buffer creation.
|
|
57
|
+
* Returns a detached ArrayBuffer. Staging buffer is destroyed only if allocated internally.
|
|
58
|
+
*/
|
|
59
|
+
read(device: Device | GPUDevice, byteOffset?: number, byteLength?: number, reusableStaging?: GPUBuffer): Promise<ArrayBuffer>;
|
|
60
|
+
destroy(): void;
|
|
61
|
+
/**
|
|
62
|
+
* Factory: Allocates a raw GPU buffer with optional initial data upload.
|
|
63
|
+
*/
|
|
64
|
+
static create(device: Device | GPUDevice, desc: {
|
|
65
|
+
size: number;
|
|
66
|
+
usage: GPUBufferUsageFlags;
|
|
67
|
+
data?: BufferSourceData;
|
|
68
|
+
label?: string;
|
|
69
|
+
}): Buffer;
|
|
70
|
+
/**
|
|
71
|
+
* Aligns byte offset to uniform buffer dynamic offset boundary.
|
|
72
|
+
* WebGPU requires dynamic uniform offsets to align to minUniformBufferOffsetAlignment (256 bytes).
|
|
73
|
+
*/
|
|
74
|
+
static alignUniformOffset(offset: number, alignment?: number): number;
|
|
75
|
+
/**
|
|
76
|
+
* Factory: Allocates uniform buffer enforcing 16-byte minimum and 16-byte alignment.
|
|
77
|
+
*/
|
|
78
|
+
static createUniform(device: Device | GPUDevice, sizeOrData: number | BufferSourceData, label?: string): Buffer;
|
|
79
|
+
/**
|
|
80
|
+
* Factory: Allocates storage buffer aligned to 4 bytes.
|
|
81
|
+
*/
|
|
82
|
+
static createStorage(device: Device | GPUDevice, sizeOrData: number | BufferSourceData, options?: {
|
|
83
|
+
readOnly?: boolean;
|
|
84
|
+
label?: string;
|
|
85
|
+
}): Buffer;
|
|
86
|
+
/**
|
|
87
|
+
* Factory: Allocates vertex buffer aligned to 4 bytes.
|
|
88
|
+
*/
|
|
89
|
+
static createVertex(device: Device | GPUDevice, sizeOrData: number | BufferSourceData, label?: string): Buffer;
|
|
90
|
+
/**
|
|
91
|
+
* Factory: Allocates index buffer aligned to 4 bytes.
|
|
92
|
+
*/
|
|
93
|
+
static createIndex(device: Device | GPUDevice, sizeOrData: number | BufferSourceData, label?: string): Buffer;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Managed WebGPU texture with default view companion.
|
|
97
|
+
*/
|
|
98
|
+
export declare class Texture {
|
|
99
|
+
readonly native: GPUTexture;
|
|
100
|
+
readonly view: GPUTextureView;
|
|
101
|
+
readonly width: number;
|
|
102
|
+
readonly height: number;
|
|
103
|
+
readonly depthOrLayers: number;
|
|
104
|
+
readonly format: GPUTextureFormat;
|
|
105
|
+
readonly usage: GPUTextureUsageFlags;
|
|
106
|
+
readonly label: string;
|
|
107
|
+
constructor(native: GPUTexture, view: GPUTextureView, width: number, height: number, depthOrLayers: number, format: GPUTextureFormat, usage: GPUTextureUsageFlags, label?: string);
|
|
108
|
+
createView(desc?: GPUTextureViewDescriptor): GPUTextureView;
|
|
109
|
+
/**
|
|
110
|
+
* Uploads pixel data to 2D texture via queue.writeTexture.
|
|
111
|
+
* Automatically aligns bytesPerRow to 256-byte boundary if omitted.
|
|
112
|
+
*/
|
|
113
|
+
write2D(device: Device | GPUDevice, data: BufferSourceData, options?: {
|
|
114
|
+
x?: number;
|
|
115
|
+
y?: number;
|
|
116
|
+
width?: number;
|
|
117
|
+
height?: number;
|
|
118
|
+
bytesPerPixel?: number;
|
|
119
|
+
bytesPerRow?: number;
|
|
120
|
+
rowsPerImage?: number;
|
|
121
|
+
mipLevel?: number;
|
|
122
|
+
}): void;
|
|
123
|
+
/**
|
|
124
|
+
* Copies an external image source (ImageBitmap, HTMLCanvasElement, OffscreenCanvas) directly into the texture.
|
|
125
|
+
*/
|
|
126
|
+
copyExternalImage(device: Device | GPUDevice, source: GPUCopyExternalImageSourceInfo, options?: {
|
|
127
|
+
x?: number;
|
|
128
|
+
y?: number;
|
|
129
|
+
mipLevel?: number;
|
|
130
|
+
}): void;
|
|
131
|
+
destroy(): void;
|
|
132
|
+
/**
|
|
133
|
+
* Factory: Instantiates Texture from native GPUTextureDescriptor.
|
|
134
|
+
*/
|
|
135
|
+
static create(device: Device | GPUDevice, desc: GPUTextureDescriptor): Texture;
|
|
136
|
+
/**
|
|
137
|
+
* Factory: Allocates 2D color or data texture.
|
|
138
|
+
*/
|
|
139
|
+
static create2D(device: Device | GPUDevice, options: {
|
|
140
|
+
width: number;
|
|
141
|
+
height: number;
|
|
142
|
+
format?: GPUTextureFormat;
|
|
143
|
+
usage?: GPUTextureUsageFlags;
|
|
144
|
+
sampleCount?: number;
|
|
145
|
+
label?: string;
|
|
146
|
+
}): Texture;
|
|
147
|
+
/**
|
|
148
|
+
* Factory: Allocates 3D volumetric texture.
|
|
149
|
+
*/
|
|
150
|
+
static create3D(device: Device | GPUDevice, options: {
|
|
151
|
+
width: number;
|
|
152
|
+
height: number;
|
|
153
|
+
depth: number;
|
|
154
|
+
format?: GPUTextureFormat;
|
|
155
|
+
usage?: GPUTextureUsageFlags;
|
|
156
|
+
label?: string;
|
|
157
|
+
}): Texture;
|
|
158
|
+
/**
|
|
159
|
+
* Factory: Allocates 2D depth or depth-stencil texture.
|
|
160
|
+
*/
|
|
161
|
+
static createDepth(device: Device | GPUDevice, options: {
|
|
162
|
+
width: number;
|
|
163
|
+
height: number;
|
|
164
|
+
format?: GPUTextureFormat;
|
|
165
|
+
usage?: GPUTextureUsageFlags;
|
|
166
|
+
stencil?: boolean;
|
|
167
|
+
sampleCount?: number;
|
|
168
|
+
label?: string;
|
|
169
|
+
}): Texture;
|
|
170
|
+
/**
|
|
171
|
+
* Wraps pre-existing native GPUTexture.
|
|
172
|
+
*/
|
|
173
|
+
static fromNative(gpuTexture: GPUTexture, view?: GPUTextureView, label?: string): Texture;
|
|
174
|
+
/**
|
|
175
|
+
* Factory: Allocates cube map texture with 6 equal-width-and-height layers.
|
|
176
|
+
* Primary view stored in .view is configured with dimension "cube" for direct cube
|
|
177
|
+
* sampler access in WGSL. Individual face views can be created with createView().
|
|
178
|
+
* - size: width and height in texels (faces are square).
|
|
179
|
+
* - mipLevelCount: number of mip levels. Default 1.
|
|
180
|
+
*/
|
|
181
|
+
static createCube(device: Device | GPUDevice, options: {
|
|
182
|
+
size: number;
|
|
183
|
+
format?: GPUTextureFormat;
|
|
184
|
+
usage?: GPUTextureUsageFlags;
|
|
185
|
+
mipLevelCount?: number;
|
|
186
|
+
label?: string;
|
|
187
|
+
}): Texture;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Managed WebGPU hardware sampler.
|
|
191
|
+
*/
|
|
192
|
+
export declare class Sampler {
|
|
193
|
+
readonly native: GPUSampler;
|
|
194
|
+
readonly label: string;
|
|
195
|
+
constructor(native: GPUSampler, label?: string);
|
|
196
|
+
static create(device: Device | GPUDevice, desc?: GPUSamplerDescriptor): Sampler;
|
|
197
|
+
static createLinear(device: Device | GPUDevice, label?: string): Sampler;
|
|
198
|
+
static createNearest(device: Device | GPUDevice, label?: string): Sampler;
|
|
199
|
+
static createComparison(device: Device | GPUDevice, options?: {
|
|
200
|
+
compare?: GPUCompareFunction;
|
|
201
|
+
label?: string;
|
|
202
|
+
}): Sampler;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Reusable GPU buffer pool for dynamic per-frame allocation with best-fit recycling.
|
|
206
|
+
*/
|
|
207
|
+
export declare class BufferPool {
|
|
208
|
+
private _buckets;
|
|
209
|
+
private _inUse;
|
|
210
|
+
private _availableCount;
|
|
211
|
+
readonly usage: GPUBufferUsageFlags;
|
|
212
|
+
readonly label: string;
|
|
213
|
+
constructor(usage: GPUBufferUsageFlags, label?: string);
|
|
214
|
+
get totalBuffers(): number;
|
|
215
|
+
get inUseCount(): number;
|
|
216
|
+
private _addToBucket;
|
|
217
|
+
/**
|
|
218
|
+
* Resets active allocations at start of frame, returning all buffers to available pool.
|
|
219
|
+
*/
|
|
220
|
+
reset(): void;
|
|
221
|
+
/**
|
|
222
|
+
* Acquires buffer with at least requested byte size using bucketed best-fit matching.
|
|
223
|
+
*/
|
|
224
|
+
acquire(device: Device | GPUDevice, requiredSize: number): Buffer;
|
|
225
|
+
/**
|
|
226
|
+
* Releases an individual buffer back to available pool ahead of frame reset.
|
|
227
|
+
*/
|
|
228
|
+
release(buffer: Buffer): boolean;
|
|
229
|
+
destroy(): void;
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../awgpu/memory.ts"],"names":[],"mappings":"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"}
|