@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.
Files changed (343) hide show
  1. package/LICENSE +21 -0
  2. package/ReadMe.md +198 -0
  3. package/dist/acircuit/chip.d.ts +46 -0
  4. package/dist/acircuit/chip.d.ts.map +1 -0
  5. package/dist/acircuit/chip.js +104 -0
  6. package/dist/acircuit/chip.js.map +1 -0
  7. package/dist/acircuit/circuit.d.ts +86 -0
  8. package/dist/acircuit/circuit.d.ts.map +1 -0
  9. package/dist/acircuit/circuit.js +606 -0
  10. package/dist/acircuit/circuit.js.map +1 -0
  11. package/dist/acircuit/composite.d.ts +32 -0
  12. package/dist/acircuit/composite.d.ts.map +1 -0
  13. package/dist/acircuit/composite.js +88 -0
  14. package/dist/acircuit/composite.js.map +1 -0
  15. package/dist/acircuit/index.d.ts +7 -0
  16. package/dist/acircuit/index.d.ts.map +1 -0
  17. package/dist/acircuit/index.js +6 -0
  18. package/dist/acircuit/index.js.map +1 -0
  19. package/dist/acircuit/socket.d.ts +20 -0
  20. package/dist/acircuit/socket.d.ts.map +1 -0
  21. package/dist/acircuit/socket.js +23 -0
  22. package/dist/acircuit/socket.js.map +1 -0
  23. package/dist/acircuit/types.d.ts +94 -0
  24. package/dist/acircuit/types.d.ts.map +1 -0
  25. package/dist/acircuit/types.js +2 -0
  26. package/dist/acircuit/types.js.map +1 -0
  27. package/dist/acircuit/wire.d.ts +26 -0
  28. package/dist/acircuit/wire.d.ts.map +1 -0
  29. package/dist/acircuit/wire.js +23 -0
  30. package/dist/acircuit/wire.js.map +1 -0
  31. package/dist/adiag/bus.d.ts +65 -0
  32. package/dist/adiag/bus.d.ts.map +1 -0
  33. package/dist/adiag/bus.js +225 -0
  34. package/dist/adiag/bus.js.map +1 -0
  35. package/dist/adiag/index.d.ts +3 -0
  36. package/dist/adiag/index.d.ts.map +1 -0
  37. package/dist/adiag/index.js +2 -0
  38. package/dist/adiag/index.js.map +1 -0
  39. package/dist/aecs/ComponentSet.d.ts +33 -0
  40. package/dist/aecs/ComponentSet.d.ts.map +1 -0
  41. package/dist/aecs/ComponentSet.js +127 -0
  42. package/dist/aecs/ComponentSet.js.map +1 -0
  43. package/dist/aecs/Entity.d.ts +43 -0
  44. package/dist/aecs/Entity.d.ts.map +1 -0
  45. package/dist/aecs/Entity.js +82 -0
  46. package/dist/aecs/Entity.js.map +1 -0
  47. package/dist/aecs/FloatSet.d.ts +34 -0
  48. package/dist/aecs/FloatSet.d.ts.map +1 -0
  49. package/dist/aecs/FloatSet.js +147 -0
  50. package/dist/aecs/FloatSet.js.map +1 -0
  51. package/dist/aecs/Query.d.ts +90 -0
  52. package/dist/aecs/Query.d.ts.map +1 -0
  53. package/dist/aecs/Query.js +304 -0
  54. package/dist/aecs/Query.js.map +1 -0
  55. package/dist/aecs/index.d.ts +6 -0
  56. package/dist/aecs/index.d.ts.map +1 -0
  57. package/dist/aecs/index.js +6 -0
  58. package/dist/aecs/index.js.map +1 -0
  59. package/dist/aecs/join.d.ts +2 -0
  60. package/dist/aecs/join.d.ts.map +1 -0
  61. package/dist/aecs/join.js +2 -0
  62. package/dist/aecs/join.js.map +1 -0
  63. package/dist/alm/constants.d.ts +11 -0
  64. package/dist/alm/constants.d.ts.map +1 -0
  65. package/dist/alm/constants.js +17 -0
  66. package/dist/alm/constants.js.map +1 -0
  67. package/dist/alm/index.d.ts +9 -0
  68. package/dist/alm/index.d.ts.map +1 -0
  69. package/dist/alm/index.js +12 -0
  70. package/dist/alm/index.js.map +1 -0
  71. package/dist/alm/mat3.d.ts +63 -0
  72. package/dist/alm/mat3.d.ts.map +1 -0
  73. package/dist/alm/mat3.js +393 -0
  74. package/dist/alm/mat3.js.map +1 -0
  75. package/dist/alm/mat4.d.ts +157 -0
  76. package/dist/alm/mat4.d.ts.map +1 -0
  77. package/dist/alm/mat4.js +1448 -0
  78. package/dist/alm/mat4.js.map +1 -0
  79. package/dist/alm/quat.d.ts +89 -0
  80. package/dist/alm/quat.d.ts.map +1 -0
  81. package/dist/alm/quat.js +543 -0
  82. package/dist/alm/quat.js.map +1 -0
  83. package/dist/alm/spatial.d.ts +102 -0
  84. package/dist/alm/spatial.d.ts.map +1 -0
  85. package/dist/alm/spatial.js +389 -0
  86. package/dist/alm/spatial.js.map +1 -0
  87. package/dist/alm/vec2.d.ts +97 -0
  88. package/dist/alm/vec2.d.ts.map +1 -0
  89. package/dist/alm/vec2.js +369 -0
  90. package/dist/alm/vec2.js.map +1 -0
  91. package/dist/alm/vec3.d.ts +117 -0
  92. package/dist/alm/vec3.d.ts.map +1 -0
  93. package/dist/alm/vec3.js +547 -0
  94. package/dist/alm/vec3.js.map +1 -0
  95. package/dist/alm/vec4.d.ts +95 -0
  96. package/dist/alm/vec4.d.ts.map +1 -0
  97. package/dist/alm/vec4.js +452 -0
  98. package/dist/alm/vec4.js.map +1 -0
  99. package/dist/atempo/cadence.d.ts +58 -0
  100. package/dist/atempo/cadence.d.ts.map +1 -0
  101. package/dist/atempo/cadence.js +110 -0
  102. package/dist/atempo/cadence.js.map +1 -0
  103. package/dist/atempo/clip.d.ts +37 -0
  104. package/dist/atempo/clip.d.ts.map +1 -0
  105. package/dist/atempo/clip.js +92 -0
  106. package/dist/atempo/clip.js.map +1 -0
  107. package/dist/atempo/curve.d.ts +6 -0
  108. package/dist/atempo/curve.d.ts.map +1 -0
  109. package/dist/atempo/curve.js +2 -0
  110. package/dist/atempo/curve.js.map +1 -0
  111. package/dist/atempo/curves/bezier.d.ts +7 -0
  112. package/dist/atempo/curves/bezier.d.ts.map +1 -0
  113. package/dist/atempo/curves/bezier.js +46 -0
  114. package/dist/atempo/curves/bezier.js.map +1 -0
  115. package/dist/atempo/curves/bounce.d.ts +6 -0
  116. package/dist/atempo/curves/bounce.d.ts.map +1 -0
  117. package/dist/atempo/curves/bounce.js +22 -0
  118. package/dist/atempo/curves/bounce.js.map +1 -0
  119. package/dist/atempo/curves/cubic.d.ts +14 -0
  120. package/dist/atempo/curves/cubic.d.ts.map +1 -0
  121. package/dist/atempo/curves/cubic.js +22 -0
  122. package/dist/atempo/curves/cubic.js.map +1 -0
  123. package/dist/atempo/curves/elastic.d.ts +6 -0
  124. package/dist/atempo/curves/elastic.d.ts.map +1 -0
  125. package/dist/atempo/curves/elastic.js +12 -0
  126. package/dist/atempo/curves/elastic.js.map +1 -0
  127. package/dist/atempo/curves/expo.d.ts +14 -0
  128. package/dist/atempo/curves/expo.d.ts.map +1 -0
  129. package/dist/atempo/curves/expo.js +26 -0
  130. package/dist/atempo/curves/expo.js.map +1 -0
  131. package/dist/atempo/curves/holdSnap.d.ts +6 -0
  132. package/dist/atempo/curves/holdSnap.d.ts.map +1 -0
  133. package/dist/atempo/curves/holdSnap.js +15 -0
  134. package/dist/atempo/curves/holdSnap.js.map +1 -0
  135. package/dist/atempo/curves/index.d.ts +14 -0
  136. package/dist/atempo/curves/index.d.ts.map +1 -0
  137. package/dist/atempo/curves/index.js +14 -0
  138. package/dist/atempo/curves/index.js.map +1 -0
  139. package/dist/atempo/curves/linear.d.ts +6 -0
  140. package/dist/atempo/curves/linear.d.ts.map +1 -0
  141. package/dist/atempo/curves/linear.js +5 -0
  142. package/dist/atempo/curves/linear.js.map +1 -0
  143. package/dist/atempo/curves/overshoot.d.ts +6 -0
  144. package/dist/atempo/curves/overshoot.d.ts.map +1 -0
  145. package/dist/atempo/curves/overshoot.js +16 -0
  146. package/dist/atempo/curves/overshoot.js.map +1 -0
  147. package/dist/atempo/curves/quad.d.ts +14 -0
  148. package/dist/atempo/curves/quad.d.ts.map +1 -0
  149. package/dist/atempo/curves/quad.js +22 -0
  150. package/dist/atempo/curves/quad.js.map +1 -0
  151. package/dist/atempo/curves/step.d.ts +6 -0
  152. package/dist/atempo/curves/step.d.ts.map +1 -0
  153. package/dist/atempo/curves/step.js +11 -0
  154. package/dist/atempo/curves/step.js.map +1 -0
  155. package/dist/atempo/index.d.ts +17 -0
  156. package/dist/atempo/index.d.ts.map +1 -0
  157. package/dist/atempo/index.js +18 -0
  158. package/dist/atempo/index.js.map +1 -0
  159. package/dist/atempo/phase.d.ts +66 -0
  160. package/dist/atempo/phase.d.ts.map +1 -0
  161. package/dist/atempo/phase.js +121 -0
  162. package/dist/atempo/phase.js.map +1 -0
  163. package/dist/atempo/spring.d.ts +20 -0
  164. package/dist/atempo/spring.d.ts.map +1 -0
  165. package/dist/atempo/spring.js +71 -0
  166. package/dist/atempo/spring.js.map +1 -0
  167. package/dist/atempo/track.d.ts +69 -0
  168. package/dist/atempo/track.d.ts.map +1 -0
  169. package/dist/atempo/track.js +184 -0
  170. package/dist/atempo/track.js.map +1 -0
  171. package/dist/atempo/tracks/color.d.ts +20 -0
  172. package/dist/atempo/tracks/color.d.ts.map +1 -0
  173. package/dist/atempo/tracks/color.js +52 -0
  174. package/dist/atempo/tracks/color.js.map +1 -0
  175. package/dist/atempo/tracks/float.d.ts +9 -0
  176. package/dist/atempo/tracks/float.d.ts.map +1 -0
  177. package/dist/atempo/tracks/float.js +13 -0
  178. package/dist/atempo/tracks/float.js.map +1 -0
  179. package/dist/atempo/tracks/index.d.ts +8 -0
  180. package/dist/atempo/tracks/index.d.ts.map +1 -0
  181. package/dist/atempo/tracks/index.js +8 -0
  182. package/dist/atempo/tracks/index.js.map +1 -0
  183. package/dist/atempo/tracks/quat.d.ts +16 -0
  184. package/dist/atempo/tracks/quat.d.ts.map +1 -0
  185. package/dist/atempo/tracks/quat.js +72 -0
  186. package/dist/atempo/tracks/quat.js.map +1 -0
  187. package/dist/atempo/tracks/vec.d.ts +11 -0
  188. package/dist/atempo/tracks/vec.d.ts.map +1 -0
  189. package/dist/atempo/tracks/vec.js +27 -0
  190. package/dist/atempo/tracks/vec.js.map +1 -0
  191. package/dist/awasm/abi/index.d.ts +4 -0
  192. package/dist/awasm/abi/index.d.ts.map +1 -0
  193. package/dist/awasm/abi/index.js +4 -0
  194. package/dist/awasm/abi/index.js.map +1 -0
  195. package/dist/awasm/abi/layout.d.ts +40 -0
  196. package/dist/awasm/abi/layout.d.ts.map +1 -0
  197. package/dist/awasm/abi/layout.js +100 -0
  198. package/dist/awasm/abi/layout.js.map +1 -0
  199. package/dist/awasm/abi/slice.d.ts +28 -0
  200. package/dist/awasm/abi/slice.d.ts.map +1 -0
  201. package/dist/awasm/abi/slice.js +68 -0
  202. package/dist/awasm/abi/slice.js.map +1 -0
  203. package/dist/awasm/abi/string-buffer.d.ts +23 -0
  204. package/dist/awasm/abi/string-buffer.d.ts.map +1 -0
  205. package/dist/awasm/abi/string-buffer.js +52 -0
  206. package/dist/awasm/abi/string-buffer.js.map +1 -0
  207. package/dist/awasm/index.d.ts +5 -0
  208. package/dist/awasm/index.d.ts.map +1 -0
  209. package/dist/awasm/index.js +8 -0
  210. package/dist/awasm/index.js.map +1 -0
  211. package/dist/awasm/memory/block-pool.d.ts +31 -0
  212. package/dist/awasm/memory/block-pool.d.ts.map +1 -0
  213. package/dist/awasm/memory/block-pool.js +98 -0
  214. package/dist/awasm/memory/block-pool.js.map +1 -0
  215. package/dist/awasm/memory/index.d.ts +5 -0
  216. package/dist/awasm/memory/index.d.ts.map +1 -0
  217. package/dist/awasm/memory/index.js +5 -0
  218. package/dist/awasm/memory/index.js.map +1 -0
  219. package/dist/awasm/memory/linear-arena.d.ts +36 -0
  220. package/dist/awasm/memory/linear-arena.d.ts.map +1 -0
  221. package/dist/awasm/memory/linear-arena.js +94 -0
  222. package/dist/awasm/memory/linear-arena.js.map +1 -0
  223. package/dist/awasm/memory/memory-view.d.ts +51 -0
  224. package/dist/awasm/memory/memory-view.d.ts.map +1 -0
  225. package/dist/awasm/memory/memory-view.js +110 -0
  226. package/dist/awasm/memory/memory-view.js.map +1 -0
  227. package/dist/awasm/memory/wasm-memory.d.ts +40 -0
  228. package/dist/awasm/memory/wasm-memory.d.ts.map +1 -0
  229. package/dist/awasm/memory/wasm-memory.js +88 -0
  230. package/dist/awasm/memory/wasm-memory.js.map +1 -0
  231. package/dist/awasm/runtime/host-bridge.d.ts +30 -0
  232. package/dist/awasm/runtime/host-bridge.d.ts.map +1 -0
  233. package/dist/awasm/runtime/host-bridge.js +57 -0
  234. package/dist/awasm/runtime/host-bridge.js.map +1 -0
  235. package/dist/awasm/runtime/index.d.ts +5 -0
  236. package/dist/awasm/runtime/index.d.ts.map +1 -0
  237. package/dist/awasm/runtime/index.js +5 -0
  238. package/dist/awasm/runtime/index.js.map +1 -0
  239. package/dist/awasm/runtime/module-inspector.d.ts +32 -0
  240. package/dist/awasm/runtime/module-inspector.d.ts.map +1 -0
  241. package/dist/awasm/runtime/module-inspector.js +43 -0
  242. package/dist/awasm/runtime/module-inspector.js.map +1 -0
  243. package/dist/awasm/runtime/module-loader.d.ts +17 -0
  244. package/dist/awasm/runtime/module-loader.d.ts.map +1 -0
  245. package/dist/awasm/runtime/module-loader.js +99 -0
  246. package/dist/awasm/runtime/module-loader.js.map +1 -0
  247. package/dist/awasm/runtime/wasm-instance.d.ts +25 -0
  248. package/dist/awasm/runtime/wasm-instance.d.ts.map +1 -0
  249. package/dist/awasm/runtime/wasm-instance.js +60 -0
  250. package/dist/awasm/runtime/wasm-instance.js.map +1 -0
  251. package/dist/awasm/thread/atomic-queue.d.ts +33 -0
  252. package/dist/awasm/thread/atomic-queue.d.ts.map +1 -0
  253. package/dist/awasm/thread/atomic-queue.js +78 -0
  254. package/dist/awasm/thread/atomic-queue.js.map +1 -0
  255. package/dist/awasm/thread/index.d.ts +4 -0
  256. package/dist/awasm/thread/index.d.ts.map +1 -0
  257. package/dist/awasm/thread/index.js +4 -0
  258. package/dist/awasm/thread/index.js.map +1 -0
  259. package/dist/awasm/thread/shared-memory.d.ts +38 -0
  260. package/dist/awasm/thread/shared-memory.d.ts.map +1 -0
  261. package/dist/awasm/thread/shared-memory.js +74 -0
  262. package/dist/awasm/thread/shared-memory.js.map +1 -0
  263. package/dist/awasm/thread/worker-pool.d.ts +43 -0
  264. package/dist/awasm/thread/worker-pool.d.ts.map +1 -0
  265. package/dist/awasm/thread/worker-pool.js +118 -0
  266. package/dist/awasm/thread/worker-pool.js.map +1 -0
  267. package/dist/awgpu/binding.d.ts +108 -0
  268. package/dist/awgpu/binding.d.ts.map +1 -0
  269. package/dist/awgpu/binding.js +251 -0
  270. package/dist/awgpu/binding.js.map +1 -0
  271. package/dist/awgpu/device.d.ts +68 -0
  272. package/dist/awgpu/device.d.ts.map +1 -0
  273. package/dist/awgpu/device.js +150 -0
  274. package/dist/awgpu/device.js.map +1 -0
  275. package/dist/awgpu/graph.d.ts +77 -0
  276. package/dist/awgpu/graph.d.ts.map +1 -0
  277. package/dist/awgpu/graph.js +288 -0
  278. package/dist/awgpu/graph.js.map +1 -0
  279. package/dist/awgpu/index.d.ts +10 -0
  280. package/dist/awgpu/index.d.ts.map +1 -0
  281. package/dist/awgpu/index.js +19 -0
  282. package/dist/awgpu/index.js.map +1 -0
  283. package/dist/awgpu/memory.d.ts +231 -0
  284. package/dist/awgpu/memory.d.ts.map +1 -0
  285. package/dist/awgpu/memory.js +547 -0
  286. package/dist/awgpu/memory.js.map +1 -0
  287. package/dist/awgpu/pipeline.d.ts +114 -0
  288. package/dist/awgpu/pipeline.d.ts.map +1 -0
  289. package/dist/awgpu/pipeline.js +335 -0
  290. package/dist/awgpu/pipeline.js.map +1 -0
  291. package/dist/awgpu/sequence.d.ts +83 -0
  292. package/dist/awgpu/sequence.d.ts.map +1 -0
  293. package/dist/awgpu/sequence.js +273 -0
  294. package/dist/awgpu/sequence.js.map +1 -0
  295. package/dist/awgpu/state.d.ts +27 -0
  296. package/dist/awgpu/state.d.ts.map +1 -0
  297. package/dist/awgpu/state.js +43 -0
  298. package/dist/awgpu/state.js.map +1 -0
  299. package/dist/awgpu/stream.d.ts +57 -0
  300. package/dist/awgpu/stream.d.ts.map +1 -0
  301. package/dist/awgpu/stream.js +139 -0
  302. package/dist/awgpu/stream.js.map +1 -0
  303. package/dist/awgpu/target.d.ts +98 -0
  304. package/dist/awgpu/target.d.ts.map +1 -0
  305. package/dist/awgpu/target.js +357 -0
  306. package/dist/awgpu/target.js.map +1 -0
  307. package/dist/awgpu_old/buffer.d.ts +78 -0
  308. package/dist/awgpu_old/buffer.d.ts.map +1 -0
  309. package/dist/awgpu_old/buffer.js +220 -0
  310. package/dist/awgpu_old/buffer.js.map +1 -0
  311. package/dist/awgpu_old/device.d.ts +69 -0
  312. package/dist/awgpu_old/device.d.ts.map +1 -0
  313. package/dist/awgpu_old/device.js +121 -0
  314. package/dist/awgpu_old/device.js.map +1 -0
  315. package/dist/awgpu_old/frame.d.ts +17 -0
  316. package/dist/awgpu_old/frame.d.ts.map +1 -0
  317. package/dist/awgpu_old/frame.js +29 -0
  318. package/dist/awgpu_old/frame.js.map +1 -0
  319. package/dist/awgpu_old/index.d.ts +8 -0
  320. package/dist/awgpu_old/index.d.ts.map +1 -0
  321. package/dist/awgpu_old/index.js +18 -0
  322. package/dist/awgpu_old/index.js.map +1 -0
  323. package/dist/awgpu_old/layout.d.ts +70 -0
  324. package/dist/awgpu_old/layout.d.ts.map +1 -0
  325. package/dist/awgpu_old/layout.js +137 -0
  326. package/dist/awgpu_old/layout.js.map +1 -0
  327. package/dist/awgpu_old/pass.d.ts +97 -0
  328. package/dist/awgpu_old/pass.d.ts.map +1 -0
  329. package/dist/awgpu_old/pass.js +302 -0
  330. package/dist/awgpu_old/pass.js.map +1 -0
  331. package/dist/awgpu_old/pipeline.d.ts +73 -0
  332. package/dist/awgpu_old/pipeline.d.ts.map +1 -0
  333. package/dist/awgpu_old/pipeline.js +226 -0
  334. package/dist/awgpu_old/pipeline.js.map +1 -0
  335. package/dist/awgpu_old/target.d.ts +186 -0
  336. package/dist/awgpu_old/target.d.ts.map +1 -0
  337. package/dist/awgpu_old/target.js +428 -0
  338. package/dist/awgpu_old/target.js.map +1 -0
  339. package/dist/index.d.ts +10 -0
  340. package/dist/index.d.ts.map +1 -0
  341. package/dist/index.js +10 -0
  342. package/dist/index.js.map +1 -0
  343. package/package.json +106 -0
@@ -0,0 +1,114 @@
1
+ import { type Device } from "./device.js";
2
+ import type { StreamSet } from "./stream.js";
3
+ import type { BindLayout } from "./binding.js";
4
+ export interface ShaderMessage {
5
+ type: "error" | "warning" | "info";
6
+ stage: "vertex" | "fragment" | "compute";
7
+ message: string;
8
+ lineNum: number;
9
+ linePos: number;
10
+ offset: number;
11
+ length: number;
12
+ }
13
+ export interface RasterPipelineDesc {
14
+ label?: string;
15
+ vertex: {
16
+ code: string;
17
+ entryPoint?: string;
18
+ buffers?: (GPUVertexBufferLayout | null)[];
19
+ };
20
+ fragment?: {
21
+ code?: string;
22
+ entryPoint?: string;
23
+ targets: GPUColorTargetState[];
24
+ };
25
+ streamSet?: StreamSet;
26
+ layouts?: (GPUBindGroupLayout | BindLayout | null)[];
27
+ depthStencil?: GPUDepthStencilState;
28
+ primitive?: GPUPrimitiveState;
29
+ multisample?: GPUMultisampleState;
30
+ onShaderMessage?: (msg: ShaderMessage) => void;
31
+ }
32
+ export interface ComputePipelineDesc {
33
+ label?: string;
34
+ code: string;
35
+ entryPoint?: string;
36
+ layouts?: (GPUBindGroupLayout | BindLayout | null)[];
37
+ onShaderMessage?: (msg: ShaderMessage) => void;
38
+ }
39
+ /**
40
+ * WebGPU render pipeline wrapper for rasterization and depth prepasses.
41
+ */
42
+ export declare class RasterPipeline {
43
+ readonly native: GPURenderPipeline;
44
+ readonly layout?: GPUPipelineLayout;
45
+ readonly hasFragmentStage: boolean;
46
+ readonly label: string;
47
+ constructor(native: GPURenderPipeline, hasFragmentStage: boolean, layout?: GPUPipelineLayout, label?: string);
48
+ private static _buildDescriptor;
49
+ /**
50
+ * Factory: Compiles shaders and instantiates GPURenderPipeline with automatic layout derivation.
51
+ */
52
+ static create(device: Device | GPUDevice, desc: RasterPipelineDesc): RasterPipeline;
53
+ /**
54
+ * Factory: Asynchronously compiles shaders and instantiates GPURenderPipeline.
55
+ */
56
+ static createAsync(device: Device | GPUDevice, desc: RasterPipelineDesc): Promise<RasterPipeline>;
57
+ }
58
+ /**
59
+ * WebGPU compute pipeline wrapper.
60
+ */
61
+ export declare class ComputePipeline {
62
+ readonly native: GPUComputePipeline;
63
+ readonly layout?: GPUPipelineLayout;
64
+ readonly label: string;
65
+ constructor(native: GPUComputePipeline, layout?: GPUPipelineLayout, label?: string);
66
+ private static _buildDescriptor;
67
+ /**
68
+ * Factory: Compiles compute shader and instantiates GPUComputePipeline.
69
+ */
70
+ static create(device: Device | GPUDevice, desc: ComputePipelineDesc): ComputePipeline;
71
+ /**
72
+ * Factory: Asynchronously compiles compute shader and instantiates GPUComputePipeline.
73
+ */
74
+ static createAsync(device: Device | GPUDevice, desc: ComputePipelineDesc): Promise<ComputePipeline>;
75
+ }
76
+ /**
77
+ * Cache preventing redundant driver recompilation of identical pipelines.
78
+ */
79
+ export declare class PipelineCache {
80
+ private static _defaultInstance?;
81
+ static get default(): PipelineCache;
82
+ private _rasterPipelines;
83
+ private _computePipelines;
84
+ /**
85
+ * Computes deterministic hash key for RasterPipelineDesc.
86
+ */
87
+ static hashRasterDesc(desc: RasterPipelineDesc): string;
88
+ /**
89
+ * Computes deterministic hash key for ComputePipelineDesc.
90
+ */
91
+ static hashComputeDesc(desc: ComputePipelineDesc): string;
92
+ getRaster(key: string): RasterPipeline | undefined;
93
+ setRaster(key: string, pipeline: RasterPipeline): void;
94
+ getCompute(key: string): ComputePipeline | undefined;
95
+ setCompute(key: string, pipeline: ComputePipeline): void;
96
+ /**
97
+ * Retrieves existing cached RasterPipeline or compiles new instance.
98
+ */
99
+ getOrCreateRaster(device: Device | GPUDevice, desc: RasterPipelineDesc): RasterPipeline;
100
+ /**
101
+ * Retrieves existing cached RasterPipeline or asynchronously compiles new instance.
102
+ */
103
+ getOrCreateRasterAsync(device: Device | GPUDevice, desc: RasterPipelineDesc): Promise<RasterPipeline>;
104
+ /**
105
+ * Retrieves existing cached ComputePipeline or compiles new instance.
106
+ */
107
+ getOrCreateCompute(device: Device | GPUDevice, desc: ComputePipelineDesc): ComputePipeline;
108
+ /**
109
+ * Retrieves existing cached ComputePipeline or asynchronously compiles new instance.
110
+ */
111
+ getOrCreateComputeAsync(device: Device | GPUDevice, desc: ComputePipelineDesc): Promise<ComputePipeline>;
112
+ clear(): void;
113
+ }
114
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../awgpu/pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,335 @@
1
+ // ================================================================
2
+ // Awgpu - Level 4: Hardware Pipelines (RasterPipeline, ComputePipeline)
3
+ // ================================================================
4
+ import { resolveDevice } from "./device.js";
5
+ function reportShaderMessages(module, stage, onMessage) {
6
+ if (!onMessage)
7
+ return;
8
+ module.getCompilationInfo().then((info) => {
9
+ for (const msg of info.messages) {
10
+ onMessage({
11
+ type: msg.type,
12
+ stage,
13
+ message: msg.message,
14
+ lineNum: msg.lineNum,
15
+ linePos: msg.linePos,
16
+ offset: msg.offset,
17
+ length: msg.length,
18
+ });
19
+ }
20
+ });
21
+ }
22
+ /**
23
+ * WebGPU render pipeline wrapper for rasterization and depth prepasses.
24
+ */
25
+ export class RasterPipeline {
26
+ native;
27
+ layout;
28
+ hasFragmentStage;
29
+ label;
30
+ constructor(native, hasFragmentStage, layout, label = "RasterPipeline") {
31
+ this.native = native;
32
+ this.hasFragmentStage = hasFragmentStage;
33
+ this.layout = layout;
34
+ this.label = label;
35
+ }
36
+ static _buildDescriptor(gpu, desc) {
37
+ const label = desc.label ?? "RasterPipeline";
38
+ // 1. Vertex Shader Module
39
+ const vsModule = gpu.createShaderModule({
40
+ label: `${label}_VS`,
41
+ code: desc.vertex.code,
42
+ });
43
+ reportShaderMessages(vsModule, "vertex", desc.onShaderMessage);
44
+ // 2. Vertex Buffer Layouts
45
+ let vertexBuffers = desc.vertex.buffers ?? [];
46
+ if (desc.streamSet) {
47
+ vertexBuffers = desc.streamSet.deriveVertexLayouts();
48
+ }
49
+ // 3. Pipeline Layout with Automatic Empty Slot Sanitization
50
+ let pipelineLayout = "auto";
51
+ if (desc.layouts && desc.layouts.length > 0) {
52
+ let emptyLayout = null;
53
+ const sanitizedLayouts = desc.layouts.map((l) => {
54
+ if (!l) {
55
+ if (!emptyLayout) {
56
+ emptyLayout = gpu.createBindGroupLayout({
57
+ label: `${label}_EmptySlot`,
58
+ entries: [],
59
+ });
60
+ }
61
+ return emptyLayout;
62
+ }
63
+ return "native" in l ? l.native : l;
64
+ });
65
+ pipelineLayout = gpu.createPipelineLayout({
66
+ label: `${label}_Layout`,
67
+ bindGroupLayouts: sanitizedLayouts,
68
+ });
69
+ }
70
+ // 4. Native Pipeline Descriptor
71
+ const nativeDesc = {
72
+ label,
73
+ layout: pipelineLayout,
74
+ vertex: {
75
+ module: vsModule,
76
+ entryPoint: desc.vertex.entryPoint ?? "vs_main",
77
+ buffers: vertexBuffers,
78
+ },
79
+ primitive: desc.primitive ?? {
80
+ topology: "triangle-list",
81
+ cullMode: "none",
82
+ },
83
+ };
84
+ if (desc.depthStencil) {
85
+ nativeDesc.depthStencil = desc.depthStencil;
86
+ }
87
+ if (desc.multisample) {
88
+ nativeDesc.multisample = desc.multisample;
89
+ }
90
+ // 5. Fragment Stage (Optional for depth-only passes)
91
+ const hasFragmentStage = !!desc.fragment;
92
+ if (desc.fragment) {
93
+ const fsCode = desc.fragment.code ?? desc.vertex.code;
94
+ const fsModule = fsCode === desc.vertex.code
95
+ ? vsModule
96
+ : gpu.createShaderModule({
97
+ label: `${label}_FS`,
98
+ code: fsCode,
99
+ });
100
+ if (fsModule !== vsModule) {
101
+ reportShaderMessages(fsModule, "fragment", desc.onShaderMessage);
102
+ }
103
+ nativeDesc.fragment = {
104
+ module: fsModule,
105
+ entryPoint: desc.fragment.entryPoint ?? "fs_main",
106
+ targets: desc.fragment.targets,
107
+ };
108
+ }
109
+ return { nativeDesc, hasFragmentStage, pipelineLayout, label };
110
+ }
111
+ /**
112
+ * Factory: Compiles shaders and instantiates GPURenderPipeline with automatic layout derivation.
113
+ */
114
+ static create(device, desc) {
115
+ const gpu = resolveDevice(device);
116
+ const { nativeDesc, hasFragmentStage, pipelineLayout, label } = RasterPipeline._buildDescriptor(gpu, desc);
117
+ const native = gpu.createRenderPipeline(nativeDesc);
118
+ return new RasterPipeline(native, hasFragmentStage, pipelineLayout === "auto" ? undefined : pipelineLayout, label);
119
+ }
120
+ /**
121
+ * Factory: Asynchronously compiles shaders and instantiates GPURenderPipeline.
122
+ */
123
+ static async createAsync(device, desc) {
124
+ const gpu = resolveDevice(device);
125
+ const { nativeDesc, hasFragmentStage, pipelineLayout, label } = RasterPipeline._buildDescriptor(gpu, desc);
126
+ const native = await gpu.createRenderPipelineAsync(nativeDesc);
127
+ return new RasterPipeline(native, hasFragmentStage, pipelineLayout === "auto" ? undefined : pipelineLayout, label);
128
+ }
129
+ }
130
+ /**
131
+ * WebGPU compute pipeline wrapper.
132
+ */
133
+ export class ComputePipeline {
134
+ native;
135
+ layout;
136
+ label;
137
+ constructor(native, layout, label = "ComputePipeline") {
138
+ this.native = native;
139
+ this.layout = layout;
140
+ this.label = label;
141
+ }
142
+ static _buildDescriptor(gpu, desc) {
143
+ const label = desc.label ?? "ComputePipeline";
144
+ const csModule = gpu.createShaderModule({
145
+ label: `${label}_CS`,
146
+ code: desc.code,
147
+ });
148
+ reportShaderMessages(csModule, "compute", desc.onShaderMessage);
149
+ let pipelineLayout = "auto";
150
+ if (desc.layouts && desc.layouts.length > 0) {
151
+ let emptyLayout = null;
152
+ const sanitizedLayouts = desc.layouts.map((l) => {
153
+ if (!l) {
154
+ if (!emptyLayout) {
155
+ emptyLayout = gpu.createBindGroupLayout({
156
+ label: `${label}_EmptySlot`,
157
+ entries: [],
158
+ });
159
+ }
160
+ return emptyLayout;
161
+ }
162
+ return "native" in l ? l.native : l;
163
+ });
164
+ pipelineLayout = gpu.createPipelineLayout({
165
+ label: `${label}_Layout`,
166
+ bindGroupLayouts: sanitizedLayouts,
167
+ });
168
+ }
169
+ const nativeDesc = {
170
+ label,
171
+ layout: pipelineLayout,
172
+ compute: {
173
+ module: csModule,
174
+ entryPoint: desc.entryPoint ?? "cs_main",
175
+ },
176
+ };
177
+ return { nativeDesc, pipelineLayout, label };
178
+ }
179
+ /**
180
+ * Factory: Compiles compute shader and instantiates GPUComputePipeline.
181
+ */
182
+ static create(device, desc) {
183
+ const gpu = resolveDevice(device);
184
+ const { nativeDesc, pipelineLayout, label } = ComputePipeline._buildDescriptor(gpu, desc);
185
+ const native = gpu.createComputePipeline(nativeDesc);
186
+ return new ComputePipeline(native, pipelineLayout === "auto" ? undefined : pipelineLayout, label);
187
+ }
188
+ /**
189
+ * Factory: Asynchronously compiles compute shader and instantiates GPUComputePipeline.
190
+ */
191
+ static async createAsync(device, desc) {
192
+ const gpu = resolveDevice(device);
193
+ const { nativeDesc, pipelineLayout, label } = ComputePipeline._buildDescriptor(gpu, desc);
194
+ const native = await gpu.createComputePipelineAsync(nativeDesc);
195
+ return new ComputePipeline(native, pipelineLayout === "auto" ? undefined : pipelineLayout, label);
196
+ }
197
+ }
198
+ function hashPipelineString(str) {
199
+ let h = 2166136261 >>> 0;
200
+ for (let i = 0; i < str.length; i++) {
201
+ h = Math.imul(h ^ str.charCodeAt(i), 16777619) >>> 0;
202
+ }
203
+ return h.toString(36);
204
+ }
205
+ let _nextPipelineLayoutId = 1;
206
+ const _pipelineLayoutIdMap = new WeakMap();
207
+ function getBindGroupLayoutId(layout) {
208
+ if (!layout)
209
+ return 0;
210
+ const raw = "native" in layout ? layout.native : layout;
211
+ let id = _pipelineLayoutIdMap.get(raw);
212
+ if (id === undefined) {
213
+ id = _nextPipelineLayoutId++;
214
+ _pipelineLayoutIdMap.set(raw, id);
215
+ }
216
+ return id;
217
+ }
218
+ /**
219
+ * Cache preventing redundant driver recompilation of identical pipelines.
220
+ */
221
+ export class PipelineCache {
222
+ static _defaultInstance;
223
+ static get default() {
224
+ if (!PipelineCache._defaultInstance) {
225
+ PipelineCache._defaultInstance = new PipelineCache();
226
+ }
227
+ return PipelineCache._defaultInstance;
228
+ }
229
+ _rasterPipelines = new Map();
230
+ _computePipelines = new Map();
231
+ /**
232
+ * Computes deterministic hash key for RasterPipelineDesc.
233
+ */
234
+ static hashRasterDesc(desc) {
235
+ const vsHash = hashPipelineString(desc.vertex.code);
236
+ const vsEp = desc.vertex.entryPoint ?? "vs_main";
237
+ let vBuffers = "";
238
+ if (desc.vertex.buffers) {
239
+ vBuffers = JSON.stringify(desc.vertex.buffers);
240
+ }
241
+ else if (desc.streamSet) {
242
+ vBuffers = JSON.stringify(desc.streamSet.deriveVertexLayouts());
243
+ }
244
+ let fsKey = "none";
245
+ if (desc.fragment) {
246
+ const fsCode = desc.fragment.code ?? desc.vertex.code;
247
+ const fsHash = hashPipelineString(fsCode);
248
+ const fsEp = desc.fragment.entryPoint ?? "fs_main";
249
+ fsKey = `${fsHash}:${fsEp}:${JSON.stringify(desc.fragment.targets)}`;
250
+ }
251
+ const layoutsKey = desc.layouts
252
+ ? desc.layouts.map(getBindGroupLayoutId).join(",")
253
+ : "auto";
254
+ const dsKey = desc.depthStencil ? JSON.stringify(desc.depthStencil) : "";
255
+ const primKey = desc.primitive ? JSON.stringify(desc.primitive) : "";
256
+ const msKey = desc.multisample ? JSON.stringify(desc.multisample) : "";
257
+ return `r:${vsHash}:${vsEp};b:${vBuffers};f:${fsKey};l:${layoutsKey};d:${dsKey};p:${primKey};m:${msKey}`;
258
+ }
259
+ /**
260
+ * Computes deterministic hash key for ComputePipelineDesc.
261
+ */
262
+ static hashComputeDesc(desc) {
263
+ const csHash = hashPipelineString(desc.code);
264
+ const csEp = desc.entryPoint ?? "cs_main";
265
+ const layoutsKey = desc.layouts
266
+ ? desc.layouts.map(getBindGroupLayoutId).join(",")
267
+ : "auto";
268
+ return `c:${csHash}:${csEp};l:${layoutsKey}`;
269
+ }
270
+ getRaster(key) {
271
+ return this._rasterPipelines.get(key);
272
+ }
273
+ setRaster(key, pipeline) {
274
+ this._rasterPipelines.set(key, pipeline);
275
+ }
276
+ getCompute(key) {
277
+ return this._computePipelines.get(key);
278
+ }
279
+ setCompute(key, pipeline) {
280
+ this._computePipelines.set(key, pipeline);
281
+ }
282
+ /**
283
+ * Retrieves existing cached RasterPipeline or compiles new instance.
284
+ */
285
+ getOrCreateRaster(device, desc) {
286
+ const key = PipelineCache.hashRasterDesc(desc);
287
+ let pipeline = this._rasterPipelines.get(key);
288
+ if (!pipeline) {
289
+ pipeline = RasterPipeline.create(device, desc);
290
+ this._rasterPipelines.set(key, pipeline);
291
+ }
292
+ return pipeline;
293
+ }
294
+ /**
295
+ * Retrieves existing cached RasterPipeline or asynchronously compiles new instance.
296
+ */
297
+ async getOrCreateRasterAsync(device, desc) {
298
+ const key = PipelineCache.hashRasterDesc(desc);
299
+ let pipeline = this._rasterPipelines.get(key);
300
+ if (!pipeline) {
301
+ pipeline = await RasterPipeline.createAsync(device, desc);
302
+ this._rasterPipelines.set(key, pipeline);
303
+ }
304
+ return pipeline;
305
+ }
306
+ /**
307
+ * Retrieves existing cached ComputePipeline or compiles new instance.
308
+ */
309
+ getOrCreateCompute(device, desc) {
310
+ const key = PipelineCache.hashComputeDesc(desc);
311
+ let pipeline = this._computePipelines.get(key);
312
+ if (!pipeline) {
313
+ pipeline = ComputePipeline.create(device, desc);
314
+ this._computePipelines.set(key, pipeline);
315
+ }
316
+ return pipeline;
317
+ }
318
+ /**
319
+ * Retrieves existing cached ComputePipeline or asynchronously compiles new instance.
320
+ */
321
+ async getOrCreateComputeAsync(device, desc) {
322
+ const key = PipelineCache.hashComputeDesc(desc);
323
+ let pipeline = this._computePipelines.get(key);
324
+ if (!pipeline) {
325
+ pipeline = await ComputePipeline.createAsync(device, desc);
326
+ this._computePipelines.set(key, pipeline);
327
+ }
328
+ return pipeline;
329
+ }
330
+ clear() {
331
+ this._rasterPipelines.clear();
332
+ this._computePipelines.clear();
333
+ }
334
+ }
335
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../awgpu/pipeline.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,yEAAyE;AACzE,mEAAmE;AAEnE,OAAO,EAAe,aAAa,EAAE,MAAM,aAAa,CAAC;AA0CzD,SAAS,oBAAoB,CACzB,MAAuB,EACvB,KAAwC,EACxC,SAAwC;IAExC,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,MAAM,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACtC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,SAAS,CAAC;gBACN,IAAI,EAAE,GAAG,CAAC,IAAoC;gBAC9C,KAAK;gBACL,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,MAAM,EAAE,GAAG,CAAC,MAAM;aACrB,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,cAAc;IACd,MAAM,CAAoB;IAC1B,MAAM,CAAqB;IAC3B,gBAAgB,CAAU;IAC1B,KAAK,CAAS;IAEvB,YACI,MAAyB,EACzB,gBAAyB,EACzB,MAA0B,EAC1B,KAAK,GAAG,gBAAgB;QAExB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,GAAc,EAAE,IAAwB;QAMpE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,gBAAgB,CAAC;QAE7C,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,GAAG,CAAC,kBAAkB,CAAC;YACpC,KAAK,EAAE,GAAG,KAAK,KAAK;YACpB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;SACzB,CAAC,CAAC;QACH,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAE/D,2BAA2B;QAC3B,IAAI,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC;QACzD,CAAC;QAED,4DAA4D;QAC5D,IAAI,cAAc,GAA+B,MAAM,CAAC;QACxD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,IAAI,WAAW,GAA8B,IAAI,CAAC;YAClD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC5C,IAAI,CAAC,CAAC,EAAE,CAAC;oBACL,IAAI,CAAC,WAAW,EAAE,CAAC;wBACf,WAAW,GAAG,GAAG,CAAC,qBAAqB,CAAC;4BACpC,KAAK,EAAE,GAAG,KAAK,YAAY;4BAC3B,OAAO,EAAE,EAAE;yBACd,CAAC,CAAC;oBACP,CAAC;oBACD,OAAO,WAAW,CAAC;gBACvB,CAAC;gBACD,OAAO,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YAEH,cAAc,GAAG,GAAG,CAAC,oBAAoB,CAAC;gBACtC,KAAK,EAAE,GAAG,KAAK,SAAS;gBACxB,gBAAgB,EAAE,gBAAgB;aACrC,CAAC,CAAC;QACP,CAAC;QAED,gCAAgC;QAChC,MAAM,UAAU,GAAgC;YAC5C,KAAK;YACL,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE;gBACJ,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,SAAS;gBAC/C,OAAO,EAAE,aAAa;aACzB;YACD,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI;gBACzB,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EAAE,MAAM;aACnB;SACJ,CAAC;QAEF,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAChD,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9C,CAAC;QAED,qDAAqD;QACrD,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QACzC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACtD,MAAM,QAAQ,GACV,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI;gBACvB,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC;oBACnB,KAAK,EAAE,GAAG,KAAK,KAAK;oBACpB,IAAI,EAAE,MAAM;iBACf,CAAC,CAAC;YAEb,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACxB,oBAAoB,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACrE,CAAC;YAED,UAAU,CAAC,QAAQ,GAAG;gBAClB,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,SAAS;gBACjD,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;aACjC,CAAC;QACN,CAAC;QAED,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAA0B,EAAE,IAAwB;QAC9D,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3G,MAAM,MAAM,GAAG,GAAG,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACpD,OAAO,IAAI,cAAc,CACrB,MAAM,EACN,gBAAgB,EAChB,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,EACtD,KAAK,CACR,CAAC;IACN,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,MAA0B,EAAE,IAAwB;QACzE,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3G,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;QAC/D,OAAO,IAAI,cAAc,CACrB,MAAM,EACN,gBAAgB,EAChB,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,EACtD,KAAK,CACR,CAAC;IACN,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,eAAe;IACf,MAAM,CAAqB;IAC3B,MAAM,CAAqB;IAC3B,KAAK,CAAS;IAEvB,YAAY,MAA0B,EAAE,MAA0B,EAAE,KAAK,GAAG,iBAAiB;QACzF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,GAAc,EAAE,IAAyB;QAKrE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,iBAAiB,CAAC;QAE9C,MAAM,QAAQ,GAAG,GAAG,CAAC,kBAAkB,CAAC;YACpC,KAAK,EAAE,GAAG,KAAK,KAAK;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI;SAClB,CAAC,CAAC;QACH,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAEhE,IAAI,cAAc,GAA+B,MAAM,CAAC;QACxD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,IAAI,WAAW,GAA8B,IAAI,CAAC;YAClD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC5C,IAAI,CAAC,CAAC,EAAE,CAAC;oBACL,IAAI,CAAC,WAAW,EAAE,CAAC;wBACf,WAAW,GAAG,GAAG,CAAC,qBAAqB,CAAC;4BACpC,KAAK,EAAE,GAAG,KAAK,YAAY;4BAC3B,OAAO,EAAE,EAAE;yBACd,CAAC,CAAC;oBACP,CAAC;oBACD,OAAO,WAAW,CAAC;gBACvB,CAAC;gBACD,OAAO,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YAEH,cAAc,GAAG,GAAG,CAAC,oBAAoB,CAAC;gBACtC,KAAK,EAAE,GAAG,KAAK,SAAS;gBACxB,gBAAgB,EAAE,gBAAgB;aACrC,CAAC,CAAC;QACP,CAAC;QAED,MAAM,UAAU,GAAiC;YAC7C,KAAK;YACL,MAAM,EAAE,cAAc;YACtB,OAAO,EAAE;gBACL,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,SAAS;aAC3C;SACJ,CAAC;QAEF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAA0B,EAAE,IAAyB;QAC/D,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,GAAG,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACrD,OAAO,IAAI,eAAe,CACtB,MAAM,EACN,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,EACtD,KAAK,CACR,CAAC;IACN,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,MAA0B,EAAE,IAAyB;QAC1E,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,eAAe,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;QAChE,OAAO,IAAI,eAAe,CACtB,MAAM,EACN,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,EACtD,KAAK,CACR,CAAC;IACN,CAAC;CACJ;AAED,SAAS,kBAAkB,CAAC,GAAW;IACnC,IAAI,CAAC,GAAG,UAAU,KAAK,CAAC,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,IAAI,qBAAqB,GAAG,CAAC,CAAC;AAC9B,MAAM,oBAAoB,GAAG,IAAI,OAAO,EAA8B,CAAC;AAEvE,SAAS,oBAAoB,CAAC,MAA0D;IACpF,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IACtB,MAAM,GAAG,GAAG,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACxD,IAAI,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACnB,EAAE,GAAG,qBAAqB,EAAE,CAAC;QAC7B,oBAAoB,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,aAAa;IACd,MAAM,CAAC,gBAAgB,CAAiB;IAEhD,MAAM,KAAK,OAAO;QACd,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;YAClC,aAAa,CAAC,gBAAgB,GAAG,IAAI,aAAa,EAAE,CAAC;QACzD,CAAC;QACD,OAAO,aAAa,CAAC,gBAAgB,CAAC;IAC1C,CAAC;IAEO,gBAAgB,GAAG,IAAI,GAAG,EAA0B,CAAC;IACrD,iBAAiB,GAAG,IAAI,GAAG,EAA2B,CAAC;IAE/D;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,IAAwB;QAC1C,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,SAAS,CAAC;QAEjD,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACtB,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACxB,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,KAAK,GAAG,MAAM,CAAC;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACtD,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,SAAS,CAAC;YACnD,KAAK,GAAG,GAAG,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACzE,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO;YAC3B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAClD,CAAC,CAAC,MAAM,CAAC;QAEb,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvE,OAAO,KAAK,MAAM,IAAI,IAAI,MAAM,QAAQ,MAAM,KAAK,MAAM,UAAU,MAAM,KAAK,MAAM,OAAO,MAAM,KAAK,EAAE,CAAC;IAC7G,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,IAAyB;QAC5C,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO;YAC3B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAClD,CAAC,CAAC,MAAM,CAAC;QAEb,OAAO,KAAK,MAAM,IAAI,IAAI,MAAM,UAAU,EAAE,CAAC;IACjD,CAAC;IAED,SAAS,CAAC,GAAW;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,QAAwB;QAC3C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,UAAU,CAAC,GAAW;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,UAAU,CAAC,GAAW,EAAE,QAAyB;QAC7C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,MAA0B,EAAE,IAAwB;QAClE,MAAM,GAAG,GAAG,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB,CAAC,MAA0B,EAAE,IAAwB;QAC7E,MAAM,GAAG,GAAG,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,QAAQ,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,MAA0B,EAAE,IAAyB;QACpE,MAAM,GAAG,GAAG,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAChD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CAAC,MAA0B,EAAE,IAAyB;QAC/E,MAAM,GAAG,GAAG,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,QAAQ,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3D,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;CACJ"}
@@ -0,0 +1,83 @@
1
+ import { type Device } from "./device.js";
2
+ import { type Buffer } from "./memory.js";
3
+ import type { Target } from "./target.js";
4
+ import type { StreamSet } from "./stream.js";
5
+ import type { BindTable } from "./binding.js";
6
+ import type { RasterPipeline, ComputePipeline } from "./pipeline.js";
7
+ export type DynamicOffsetRecord = Record<number, Iterable<number>> | (Iterable<number> | undefined)[];
8
+ export interface DrawBatch {
9
+ pipeline: RasterPipeline;
10
+ streamSet?: StreamSet;
11
+ bindTables?: (BindTable | GPUBindGroup | null | undefined)[];
12
+ vertexCount?: number;
13
+ indexCount?: number;
14
+ instanceCount?: number;
15
+ firstVertex?: number;
16
+ firstInstance?: number;
17
+ firstIndex?: number;
18
+ baseVertex?: number;
19
+ dynamicOffsets?: DynamicOffsetRecord;
20
+ indirect?: {
21
+ buffer: GPUBuffer | Buffer;
22
+ offset?: number;
23
+ };
24
+ }
25
+ export interface ComputeBatch {
26
+ pipeline: ComputePipeline;
27
+ workgroups?: [number, number, number];
28
+ bindTables?: (BindTable | GPUBindGroup | null | undefined)[];
29
+ dynamicOffsets?: DynamicOffsetRecord;
30
+ indirect?: {
31
+ buffer: GPUBuffer | Buffer;
32
+ offset?: number;
33
+ };
34
+ }
35
+ /**
36
+ * Encapsulates a self-contained render pass with redundant driver state filtering.
37
+ */
38
+ export declare class RenderPassNode {
39
+ readonly label: string;
40
+ target: Target;
41
+ readonly draws: DrawBatch[];
42
+ private _customRecorder?;
43
+ private _activeBindGroups;
44
+ private _activeHasDynamicOffsets;
45
+ private _activeVbos;
46
+ private _activeVboOffsets;
47
+ private _scratchResolved;
48
+ constructor(target: Target, label?: string);
49
+ addDraw(batch: DrawBatch): this;
50
+ /**
51
+ * Registers custom imperative hardware recording callback, bypassing queued batch list.
52
+ */
53
+ record(recorder: (pass: GPURenderPassEncoder) => void): this;
54
+ clear(): void;
55
+ execute(encoder: GPUCommandEncoder): void;
56
+ }
57
+ /**
58
+ * Encapsulates a compute pass dispatching compute batches.
59
+ */
60
+ export declare class ComputePassNode {
61
+ readonly label: string;
62
+ readonly dispatches: ComputeBatch[];
63
+ private _customRecorder?;
64
+ private _activeBindGroups;
65
+ private _activeHasDynamicOffsets;
66
+ private _scratchResolved;
67
+ constructor(label?: string);
68
+ addDispatch(batch: ComputeBatch): this;
69
+ record(recorder: (pass: GPUComputePassEncoder) => void): this;
70
+ clear(): void;
71
+ execute(encoder: GPUCommandEncoder): void;
72
+ }
73
+ /**
74
+ * Linear pass execution orchestrator.
75
+ * Records passes into a single GPUCommandEncoder and submits to queue in one command buffer.
76
+ */
77
+ export declare class PassSequence {
78
+ readonly passes: (RenderPassNode | ComputePassNode)[];
79
+ add(pass: RenderPassNode | ComputePassNode): this;
80
+ clear(): void;
81
+ execute(device: Device | GPUDevice, label?: string): void;
82
+ }
83
+ //# sourceMappingURL=sequence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence.d.ts","sourceRoot":"","sources":["../../awgpu/sequence.ts"],"names":[],"mappings":"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"}