@flighthq/render-wgpu 0.5.1-next.731.0ae0aa4 → 0.5.1-next.799.62ef0c7

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 (37) hide show
  1. package/README.md +2 -2
  2. package/dist/wgpuCompressedTexture.d.ts.map +1 -1
  3. package/dist/wgpuCompressedTexture.js +3 -2
  4. package/dist/wgpuCompressedTexture.js.map +1 -1
  5. package/dist/wgpuDraw.d.ts.map +1 -1
  6. package/dist/wgpuDraw.js +7 -6
  7. package/dist/wgpuDraw.js.map +1 -1
  8. package/dist/wgpuExternalTexture.d.ts.map +1 -1
  9. package/dist/wgpuExternalTexture.js +2 -2
  10. package/dist/wgpuExternalTexture.js.map +1 -1
  11. package/dist/wgpuFullscreenPass.d.ts.map +1 -1
  12. package/dist/wgpuFullscreenPass.js +2 -1
  13. package/dist/wgpuFullscreenPass.js.map +1 -1
  14. package/dist/wgpuHost.d.ts.map +1 -1
  15. package/dist/wgpuHost.js +4 -3
  16. package/dist/wgpuHost.js.map +1 -1
  17. package/dist/wgpuPipeline.js +2 -2
  18. package/dist/wgpuPipeline.js.map +1 -1
  19. package/dist/wgpuRenderState.js +3 -3
  20. package/dist/wgpuRenderState.js.map +1 -1
  21. package/dist/wgpuRenderTarget.d.ts.map +1 -1
  22. package/dist/wgpuRenderTarget.js +9 -3
  23. package/dist/wgpuRenderTarget.js.map +1 -1
  24. package/dist/wgpuRenderTargetPool.d.ts.map +1 -1
  25. package/dist/wgpuRenderTargetPool.js +2 -1
  26. package/dist/wgpuRenderTargetPool.js.map +1 -1
  27. package/dist/wgpuRenderTexturePool.d.ts.map +1 -1
  28. package/dist/wgpuRenderTexturePool.js +3 -2
  29. package/dist/wgpuRenderTexturePool.js.map +1 -1
  30. package/dist/wgpuShader.d.ts +2 -5
  31. package/dist/wgpuShader.d.ts.map +1 -1
  32. package/dist/wgpuShader.js +2 -1
  33. package/dist/wgpuShader.js.map +1 -1
  34. package/package.json +11 -11
  35. package/src/wgpuElement.test.ts +19 -13
  36. package/src/wgpuHost.test.ts +21 -16
  37. package/src/wgpuRenderState.test.ts +48 -30
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuRenderTargetPool.d.ts","sourceRoot":"","sources":["../src/wgpuRenderTargetPool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAQlC,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,oBAAoB,EAC1B,UAAU,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC,GACD,gBAAgB,CAqBlB;AAED,wBAAgB,0BAA0B,IAAI,oBAAoB,CAEjE;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAGpG;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAElG"}
1
+ {"version":3,"file":"wgpuRenderTargetPool.d.ts","sourceRoot":"","sources":["../src/wgpuRenderTargetPool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAQlC,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,oBAAoB,EAC1B,UAAU,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC,GACD,gBAAgB,CAqBlB;AAED,wBAAgB,0BAA0B,IAAI,oBAAoB,CAEjE;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAGpG;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAElG"}
@@ -1,3 +1,4 @@
1
+ import { createEntity } from '@flighthq/entity/contract';
1
2
  import { createWgpuRenderTarget, destroyWgpuRenderTarget } from './wgpuRenderTarget';
2
3
  // Lends reusable intermediate targets to multi-pass effect recipes. acquire/release are paired
3
4
  // brackets: every acquireWgpuRenderTarget must have a matching releaseWgpuRenderTarget. A released
@@ -23,7 +24,7 @@ export function acquireWgpuRenderTarget(state, pool, descriptor) {
23
24
  return createWgpuRenderTarget(state, descriptor.width, descriptor.height, format, descriptor.colorSpace, sampleCount);
24
25
  }
25
26
  export function createWgpuRenderTargetPool() {
26
- return { free: [] };
27
+ return createEntity({ free: [] });
27
28
  }
28
29
  export function destroyWgpuRenderTargetPool(state, pool) {
29
30
  for (const target of pool.free)
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuRenderTargetPool.js","sourceRoot":"","sources":["../src/wgpuRenderTargetPool.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAErF,+FAA+F;AAC/F,mGAAmG;AACnG,yFAAyF;AACzF,EAAE;AACF,MAAM,UAAU,uBAAuB,CACrC,KAAsB,EACtB,IAA0B,EAC1B,UAME;IAEF,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,KAAK,SAAS,IAAI,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/F,MAAM,KAAK,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAC3D,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC;IAC5D,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;IAEjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,IACE,SAAS,CAAC,KAAK,KAAK,CAAC;YACrB,SAAS,CAAC,MAAM,KAAK,CAAC;YACtB,SAAS,CAAC,MAAM,KAAK,MAAM;YAC3B,SAAS,CAAC,WAAW,KAAK,WAAW,EACrC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,MAAM,CAAC;YACvD,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACxH,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAsB,EAAE,IAA0B;IAC5F,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI;QAAE,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAA0B,EAAE,MAAwB;IAC1F,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"wgpuRenderTargetPool.js","sourceRoot":"","sources":["../src/wgpuRenderTargetPool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAQzD,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAErF,+FAA+F;AAC/F,mGAAmG;AACnG,yFAAyF;AACzF,EAAE;AACF,MAAM,UAAU,uBAAuB,CACrC,KAAsB,EACtB,IAA0B,EAC1B,UAME;IAEF,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,KAAK,SAAS,IAAI,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/F,MAAM,KAAK,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;IAC3D,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC;IAC5D,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;IAEjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,IACE,SAAS,CAAC,KAAK,KAAK,CAAC;YACrB,SAAS,CAAC,MAAM,KAAK,CAAC;YACtB,SAAS,CAAC,MAAM,KAAK,MAAM;YAC3B,SAAS,CAAC,WAAW,KAAK,WAAW,EACrC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,MAAM,CAAC;YACvD,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACxH,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAsB,EAAE,IAA0B;IAC5F,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI;QAAE,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAA0B,EAAE,MAAwB;IAC1F,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuRenderTexturePool.d.ts","sourceRoot":"","sources":["../src/wgpuRenderTexturePool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,qBAAqB,EAC3B,UAAU,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAC3C,aAAa,CASf;AAED,wBAAgB,2BAA2B,IAAI,qBAAqB,CAQnE;AAID,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAStG;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,qBAAqB,EAC3B,aAAa,EAAE,aAAa,GAC3B,IAAI,CAON;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,qBAAqB,EAC3B,WAAW,EAAE,aAAa,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,EAC5D,QAAQ,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,GACtD,CAAC,CAWH"}
1
+ {"version":3,"file":"wgpuRenderTexturePool.d.ts","sourceRoot":"","sources":["../src/wgpuRenderTexturePool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,sBAAsB,EACtB,aAAa,EACb,eAAe,EACf,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,qBAAqB,EAC3B,UAAU,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAC3C,aAAa,CASf;AAED,wBAAgB,2BAA2B,IAAI,qBAAqB,CAQnE;AAID,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAStG;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,qBAAqB,EAC3B,aAAa,EAAE,aAAa,GAC3B,IAAI,CAON;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,qBAAqB,EAC3B,WAAW,EAAE,aAAa,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,EAC5D,QAAQ,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,GACtD,CAAC,CAWH"}
@@ -1,3 +1,4 @@
1
+ import { createEntity } from '@flighthq/entity/contract';
1
2
  import { createRenderTexture, resetTextureUvTransform } from '@flighthq/texture/contract';
2
3
  import { createWgpuRenderTargetPool, destroyWgpuRenderTargetPool } from './wgpuRenderTargetPool';
3
4
  import { destroyWgpuRenderTexture, invalidateWgpuRenderTexture } from './wgpuRenderTexture';
@@ -12,13 +13,13 @@ export function acquireWgpuRenderTexture(state, pool, descriptor) {
12
13
  return renderTexture;
13
14
  }
14
15
  export function createWgpuRenderTexturePool() {
15
- return {
16
+ return createEntity({
16
17
  device: null,
17
18
  destroyed: false,
18
19
  effectTargets: createWgpuRenderTargetPool(),
19
20
  free: [],
20
21
  leased: new Set(),
21
- };
22
+ });
22
23
  }
23
24
  // Destroys both free and outstanding handles. Shutdown does not require callers to recover every
24
25
  // displayed lease first; the pool becomes permanently unusable afterward.
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuRenderTexturePool.js","sourceRoot":"","sources":["../src/wgpuRenderTexturePool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAS1F,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAE5F,MAAM,UAAU,wBAAwB,CACtC,KAAsB,EACtB,IAA2B,EAC3B,UAA4C;IAE5C,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACzE,2BAA2B,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC9D,uBAAuB,CAAC,aAAa,CAAC,CAAC;IACvC,aAAa,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,MAAM,CAAC;IAC3D,2BAA2B,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,OAAO;QACL,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,KAAK;QAChB,aAAa,EAAE,0BAA0B,EAAE;QAC3C,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,IAAI,GAAG,EAAE;KAClB,CAAC;AACJ,CAAC;AAED,iGAAiG;AACjG,0EAA0E;AAC1E,MAAM,UAAU,4BAA4B,CAAC,KAAsB,EAAE,IAA2B;IAC9F,IAAI,IAAI,CAAC,SAAS;QAAE,OAAO;IAC3B,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,KAAK,MAAM,aAAa,IAAI,QAAQ;QAAE,wBAAwB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACrF,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACrB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACpB,2BAA2B,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACvD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAsB,EACtB,IAA2B,EAC3B,aAA4B;IAE5B,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,2BAA2B,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IAC9D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAsB,EACtB,IAA2B,EAC3B,WAA4D,EAC5D,QAAuD;IAEvD,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,IAAI,CAAC;QACH,KAAK,MAAM,UAAU,IAAI,WAAW;YAAE,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QACvG,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;YAAS,CAAC;QACT,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAAC,MAAoB,EAAE,UAA4C;IACrG,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAChC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAClC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAClC,MAAM,CAAC,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,CAAC;IACtD,MAAM,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACvG,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;IAC5C,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAChC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,MAAM,CAAC;IACpD,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACpG,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IAC1C,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAsB,EAAE,IAA2B;IAC3E,IAAI,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAChF,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAsB,EAAE,IAA2B;IAC3E,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC7B,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"wgpuRenderTexturePool.js","sourceRoot":"","sources":["../src/wgpuRenderTexturePool.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,8 @@
1
- import type { ColorScaleBias, RenderProxy, WgpuRenderState } from '@flighthq/types/contract';
1
+ import type { ColorScaleBias, RenderProxy, WgpuBindGroupLayouts, WgpuRenderState } from '@flighthq/types/contract';
2
2
  import { BlendMode } from '@flighthq/types/contract';
3
3
  export declare const UNIFORM_BYTE_SIZE = 128;
4
4
  type StencilMode = 'normal' | 'masked' | 'maskwrite';
5
- export declare function createWgpuBindGroupLayouts(device: GPUDevice): {
6
- uniformBindGroupLayout: GPUBindGroupLayout;
7
- textureBindGroupLayout: GPUBindGroupLayout;
8
- };
5
+ export declare function createWgpuBindGroupLayouts(device: GPUDevice): WgpuBindGroupLayouts;
9
6
  export declare function createWgpuPipelineLayout(device: GPUDevice, uniformBindGroupLayout: GPUBindGroupLayout, textureBindGroupLayout: GPUBindGroupLayout): GPUPipelineLayout;
10
7
  export declare function getActiveWgpuPipeline(state: WgpuRenderState): GPURenderPipeline;
11
8
  export declare function getWgpuBlendState(blendMode: BlendMode | null): GPUBlendState;
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuShader.d.ts","sourceRoot":"","sources":["../src/wgpuShader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAkBrD,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAiHrC,KAAK,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AAyBrD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG;IAC7D,sBAAsB,EAAE,kBAAkB,CAAC;IAC3C,sBAAsB,EAAE,kBAAkB,CAAC;CAC5C,CAmBA;AAID,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EACjB,sBAAsB,EAAE,kBAAkB,EAC1C,sBAAsB,EAAE,kBAAkB,GACzC,iBAAiB,CAInB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,iBAAiB,CAQ/E;AAeD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,CAE5E;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,WAAW,EAAE,WAAW,GACvB,iBAAiB,CAgDnB;AAID,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,YAAY,EACzB,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EACzE,QAAQ,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1C,IAAI,CAgBN;AAID,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,eAAe,EACtB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EACjF,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,MAAM,CAcR;AAKD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,EACtB,WAAW,EAAE;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACrF,EACD,cAAc,EAAE,cAAc,GAAG,IAAI,EACrC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,oBAAoB,UAAQ,GAC3B,MAAM,CAsDR"}
1
+ {"version":3,"file":"wgpuShader.d.ts","sourceRoot":"","sources":["../src/wgpuShader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACnH,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAkBrD,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAiHrC,KAAK,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AAyBrD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,oBAAoB,CAmBlF;AAID,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EACjB,sBAAsB,EAAE,kBAAkB,EAC1C,sBAAsB,EAAE,kBAAkB,GACzC,iBAAiB,CAInB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,iBAAiB,CAQ/E;AAeD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,GAAG,aAAa,CAE5E;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,WAAW,EAAE,WAAW,GACvB,iBAAiB,CAgDnB;AAID,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,YAAY,EACzB,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EACzE,QAAQ,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1C,IAAI,CAgBN;AAID,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,eAAe,EACtB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EACjF,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,MAAM,CAcR;AAKD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,EACtB,WAAW,EAAE;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACrF,EACD,cAAc,EAAE,cAAc,GAAG,IAAI,EACrC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,oBAAoB,UAAQ,GAC3B,MAAM,CAsDR"}
@@ -1,3 +1,4 @@
1
+ import { createEntity } from '@flighthq/entity/contract';
1
2
  import { BlendMode } from '@flighthq/types/contract';
2
3
  import { getWgpuSurfaceRenderExtent } from './wgpuAntialias';
3
4
  import { getWgpuRenderStateDeviceResources, getWgpuRenderStateRuntime } from './wgpuRenderState';
@@ -158,7 +159,7 @@ export function createWgpuBindGroupLayouts(device) {
158
159
  { binding: 1, visibility: GPUShaderStage.FRAGMENT, sampler: { type: 'filtering' } },
159
160
  ],
160
161
  });
161
- return { uniformBindGroupLayout, textureBindGroupLayout };
162
+ return createEntity({ uniformBindGroupLayout, textureBindGroupLayout });
162
163
  }
163
164
  // ---- Pipeline creation ----
164
165
  export function createWgpuPipelineLayout(device, uniformBindGroupLayout, textureBindGroupLayout) {
@@ -1 +1 @@
1
- {"version":3,"file":"wgpuShader.js","sourceRoot":"","sources":["../src/wgpuShader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wgpuShader.js","sourceRoot":"","sources":["../src/wgpuShader.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/render-wgpu",
3
- "version": "0.5.1-next.731.0ae0aa4",
3
+ "version": "0.5.1-next.799.62ef0c7",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,16 +38,16 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/color": "0.5.1-next.731.0ae0aa4",
42
- "@flighthq/entity": "0.5.1-next.731.0ae0aa4",
43
- "@flighthq/geometry": "0.5.1-next.731.0ae0aa4",
44
- "@flighthq/log": "0.5.1-next.731.0ae0aa4",
45
- "@flighthq/render": "0.5.1-next.731.0ae0aa4",
46
- "@flighthq/registry": "0.5.1-next.731.0ae0aa4",
47
- "@flighthq/signals": "0.5.1-next.731.0ae0aa4",
48
- "@flighthq/bitmap": "0.5.1-next.731.0ae0aa4",
49
- "@flighthq/texture": "0.5.1-next.731.0ae0aa4",
50
- "@flighthq/types": "0.5.1-next.731.0ae0aa4"
41
+ "@flighthq/color": "0.5.1-next.799.62ef0c7",
42
+ "@flighthq/entity": "0.5.1-next.799.62ef0c7",
43
+ "@flighthq/geometry": "0.5.1-next.799.62ef0c7",
44
+ "@flighthq/log": "0.5.1-next.799.62ef0c7",
45
+ "@flighthq/render": "0.5.1-next.799.62ef0c7",
46
+ "@flighthq/registry": "0.5.1-next.799.62ef0c7",
47
+ "@flighthq/signals": "0.5.1-next.799.62ef0c7",
48
+ "@flighthq/bitmap": "0.5.1-next.799.62ef0c7",
49
+ "@flighthq/texture": "0.5.1-next.799.62ef0c7",
50
+ "@flighthq/types": "0.5.1-next.799.62ef0c7"
51
51
  },
52
52
  "peerDependencies": {
53
53
  "@webgpu/types": "^0.1.70"
@@ -6,12 +6,16 @@ import {
6
6
  setWgpuRenderSurfaceProvider,
7
7
  } from './wgpuElement';
8
8
 
9
+ function entityProvider(fields: Omit<WgpuRenderSurfaceProvider, keyof Entity>): WgpuRenderSurfaceProvider {
10
+ return createEntity(fields);
11
+ }
12
+
9
13
  describe('createWgpuCanvasElement', () => {
10
14
  afterEach(() => resetWgpuRenderSurfaceProviderForTest());
11
15
 
12
16
  it('preserves the canonical provider result identity', () => {
13
17
  const surface = {} as HTMLCanvasElement;
14
- setWgpuRenderSurfaceProvider({ createRenderSurface: () => surface });
18
+ setWgpuRenderSurfaceProvider(entityProvider({ createRenderSurface: () => surface }));
15
19
  expect(createWgpuCanvasElement(100, 200, 2)).toBe(surface);
16
20
  });
17
21
 
@@ -22,7 +26,7 @@ describe('createWgpuCanvasElement', () => {
22
26
  });
23
27
 
24
28
  it('throws the same setup error when the provider refuses', () => {
25
- setWgpuRenderSurfaceProvider({ createRenderSurface: () => null });
29
+ setWgpuRenderSurfaceProvider(entityProvider({ createRenderSurface: () => null }));
26
30
  expect(() => createWgpuCanvasElement(100, 200)).toThrowError(/enableHostWebWgpuRenderSurface\(\)/);
27
31
  });
28
32
  });
@@ -37,7 +41,7 @@ describe('createWgpuRenderSurface', () => {
37
41
  it('passes exact dimensions and the default pixel ratio to the selected provider', () => {
38
42
  const surface = {} as HTMLCanvasElement;
39
43
  const createRenderSurface = vi.fn(() => surface);
40
- setWgpuRenderSurfaceProvider({ createRenderSurface });
44
+ setWgpuRenderSurfaceProvider(entityProvider({ createRenderSurface }));
41
45
  expect(createWgpuRenderSurface(100, 200)).toBe(surface);
42
46
  expect(createRenderSurface).toHaveBeenCalledOnce();
43
47
  expect(createRenderSurface).toHaveBeenCalledWith(100, 200, 1);
@@ -46,7 +50,7 @@ describe('createWgpuRenderSurface', () => {
46
50
  it('passes an explicit pixel ratio and preserves the provider result identity', () => {
47
51
  const surface = {} as HTMLCanvasElement;
48
52
  const createRenderSurface = vi.fn(() => surface);
49
- setWgpuRenderSurfaceProvider({ createRenderSurface });
53
+ setWgpuRenderSurfaceProvider(entityProvider({ createRenderSurface }));
50
54
  expect(createWgpuRenderSurface(300, 150, 2.5)).toBe(surface);
51
55
  expect(createRenderSurface).toHaveBeenCalledWith(300, 150, 2.5);
52
56
  });
@@ -54,8 +58,8 @@ describe('createWgpuRenderSurface', () => {
54
58
  it('selects replacements and reset restores omission', () => {
55
59
  const first = {} as HTMLCanvasElement;
56
60
  const second = {} as HTMLCanvasElement;
57
- const firstProvider = { createRenderSurface: vi.fn(() => first) };
58
- const secondProvider = { createRenderSurface: vi.fn(() => second) };
61
+ const firstProvider = entityProvider({ createRenderSurface: vi.fn(() => first) });
62
+ const secondProvider = entityProvider({ createRenderSurface: vi.fn(() => second) });
59
63
  setWgpuRenderSurfaceProvider(firstProvider);
60
64
  expect(getWgpuRenderSurfaceProvider()).toBe(firstProvider);
61
65
  expect(createWgpuRenderSurface(1, 2)).toBe(first);
@@ -68,20 +72,20 @@ describe('createWgpuRenderSurface', () => {
68
72
  });
69
73
 
70
74
  it('preserves provider refusal as null', () => {
71
- setWgpuRenderSurfaceProvider({ createRenderSurface: () => null });
75
+ setWgpuRenderSurfaceProvider(entityProvider({ createRenderSurface: () => null }));
72
76
  expect(createWgpuRenderSurface(100, 200)).toBeNull();
73
77
  });
74
78
 
75
79
  it('lets a native host provide a surface without reading document', () => {
76
80
  const surface = {} as HTMLCanvasElement;
77
- setWgpuRenderSurfaceProvider({ createRenderSurface: () => surface });
81
+ setWgpuRenderSurfaceProvider(entityProvider({ createRenderSurface: () => surface }));
78
82
  withThrowingDocument(() => expect(createWgpuRenderSurface(100, 200)).toBe(surface));
79
83
  });
80
84
 
81
85
  it('returns null for omission and refusal without reading document', () => {
82
86
  withThrowingDocument(() => {
83
87
  expect(createWgpuRenderSurface(100, 200)).toBeNull();
84
- setWgpuRenderSurfaceProvider({ createRenderSurface: () => null });
88
+ setWgpuRenderSurfaceProvider(entityProvider({ createRenderSurface: () => null }));
85
89
  expect(createWgpuRenderSurface(100, 200)).toBeNull();
86
90
  });
87
91
  });
@@ -91,7 +95,7 @@ describe('getWgpuRenderSurfaceProvider', () => {
91
95
  afterEach(() => resetWgpuRenderSurfaceProviderForTest());
92
96
 
93
97
  it('returns the exact selected provider', () => {
94
- const provider = { createRenderSurface: () => ({}) as HTMLCanvasElement };
98
+ const provider = entityProvider({ createRenderSurface: () => ({}) as HTMLCanvasElement });
95
99
  setWgpuRenderSurfaceProvider(provider);
96
100
  expect(getWgpuRenderSurfaceProvider()).toBe(provider);
97
101
  });
@@ -99,7 +103,7 @@ describe('getWgpuRenderSurfaceProvider', () => {
99
103
 
100
104
  describe('resetWgpuRenderSurfaceProviderForTest', () => {
101
105
  it('restores provider omission', () => {
102
- setWgpuRenderSurfaceProvider({ createRenderSurface: () => ({}) as HTMLCanvasElement });
106
+ setWgpuRenderSurfaceProvider(entityProvider({ createRenderSurface: () => ({}) as HTMLCanvasElement }));
103
107
  resetWgpuRenderSurfaceProviderForTest();
104
108
  expect(getWgpuRenderSurfaceProvider()).toBeNull();
105
109
  expect(createWgpuRenderSurface(1, 1)).toBeNull();
@@ -110,8 +114,8 @@ describe('setWgpuRenderSurfaceProvider', () => {
110
114
  afterEach(() => resetWgpuRenderSurfaceProviderForTest());
111
115
 
112
116
  it('replaces the selected provider', () => {
113
- const first = { createRenderSurface: () => ({}) as HTMLCanvasElement };
114
- const second = { createRenderSurface: () => ({}) as HTMLCanvasElement };
117
+ const first = entityProvider({ createRenderSurface: () => ({}) as HTMLCanvasElement });
118
+ const second = entityProvider({ createRenderSurface: () => ({}) as HTMLCanvasElement });
115
119
  setWgpuRenderSurfaceProvider(first);
116
120
  setWgpuRenderSurfaceProvider(second);
117
121
  expect(getWgpuRenderSurfaceProvider()).toBe(second);
@@ -133,3 +137,5 @@ function withThrowingDocument(run: () => void): void {
133
137
  else Object.defineProperty(globalThis, 'document', descriptor);
134
138
  }
135
139
  }
140
+ import { createEntity } from '@flighthq/entity/contract';
141
+ import type { Entity, WgpuRenderSurfaceProvider } from '@flighthq/types/contract';
@@ -1,4 +1,5 @@
1
- import type { WgpuHostBackend } from '@flighthq/types/contract';
1
+ import { createEntity } from '@flighthq/entity/contract';
2
+ import type { Entity, WgpuHostBackend } from '@flighthq/types/contract';
2
3
  import { afterEach, beforeAll, describe, expect, it, vi } from 'vitest';
3
4
 
4
5
  import {
@@ -17,11 +18,15 @@ import {
17
18
  import { installWgpuMock } from './wgpuTestHelper';
18
19
 
19
20
  function fakeBackend(): WgpuHostBackend {
20
- return {
21
+ return entityBackend({
21
22
  acquire: vi.fn(),
22
23
  isSupported: vi.fn(() => true),
23
24
  release: vi.fn(),
24
- } as WgpuHostBackend;
25
+ });
26
+ }
27
+
28
+ function entityBackend(fields: Omit<WgpuHostBackend, keyof Entity>): WgpuHostBackend {
29
+ return createEntity(fields);
25
30
  }
26
31
 
27
32
  beforeAll(installWgpuMock);
@@ -51,7 +56,7 @@ describe('createWebWgpuHostBackend', () => {
51
56
  it('tears down whatever it is handed, leaving the ownership decision to the caller', async () => {
52
57
  const backend = createWebWgpuHostBackend();
53
58
  const acquired = await backend.acquire(document.createElement('canvas'), {});
54
- const acquisition = { ...acquired, ownership: 'caller' } as const;
59
+ const acquisition = createEntity({ ...acquired, ownership: 'caller' as const });
55
60
  const unconfigure = vi.spyOn(acquisition.context, 'unconfigure');
56
61
  const destroy = vi.spyOn(acquisition.device, 'destroy');
57
62
 
@@ -111,12 +116,12 @@ describe('setWgpuHostBackend', () => {
111
116
  const acquired = await web.acquire(document.createElement('canvas'), {});
112
117
  // Flight-owned: the state acquired these, so destroying it releases them. The caller-owned case is the
113
118
  // opposite assertion and lives in its own test below.
114
- const acquisition = { ...acquired, ownership: 'flight' } as const;
115
- const backend: WgpuHostBackend = {
119
+ const acquisition = createEntity({ ...acquired, ownership: 'flight' as const });
120
+ const backend = entityBackend({
116
121
  acquire: vi.fn(async () => acquisition),
117
122
  isSupported: vi.fn(() => true),
118
123
  release: vi.fn(),
119
- };
124
+ });
120
125
  const canvas = document.createElement('canvas');
121
126
  setWgpuHostBackend(backend);
122
127
 
@@ -135,15 +140,15 @@ describe('setWgpuHostBackend', () => {
135
140
  it('releases flight-owned handles through the selected backend when initialization fails', async () => {
136
141
  const web = createWebWgpuHostBackend();
137
142
  const acquired = await web.acquire(document.createElement('canvas'), {});
138
- const acquisition = { ...acquired, ownership: 'flight' } as const;
143
+ const acquisition = createEntity({ ...acquired, ownership: 'flight' as const });
139
144
  const configure = vi.spyOn(acquisition.context, 'configure').mockImplementationOnce(() => {
140
145
  throw new Error('configure failed');
141
146
  });
142
- const backend: WgpuHostBackend = {
147
+ const backend = entityBackend({
143
148
  acquire: vi.fn(async () => acquisition),
144
149
  isSupported: vi.fn(() => true),
145
150
  release: vi.fn(),
146
- };
151
+ });
147
152
  setWgpuHostBackend(backend);
148
153
 
149
154
  expect(() => createWgpuRenderState(acquisition, _pipeline)).toThrow('configure failed');
@@ -161,20 +166,20 @@ describe('setWgpuHostBackend', () => {
161
166
  it('O2: never releases caller-owned handles when initialization fails, whatever the backend does', async () => {
162
167
  const web = createWebWgpuHostBackend();
163
168
  const acquired = await web.acquire(document.createElement('canvas'), {});
164
- const acquisition = { ...acquired, ownership: 'caller' } as const;
169
+ const acquisition = createEntity({ ...acquired, ownership: 'caller' as const });
165
170
  const configure = vi.spyOn(acquisition.context, 'configure').mockImplementationOnce(() => {
166
171
  throw new Error('configure failed');
167
172
  });
168
173
  const destroy = vi.spyOn(acquisition.device, 'destroy');
169
174
  const unconfigure = vi.spyOn(acquisition.context, 'unconfigure');
170
- const backend: WgpuHostBackend = {
175
+ const backend = entityBackend({
171
176
  acquire: vi.fn(async () => acquisition),
172
177
  isSupported: vi.fn(() => true),
173
178
  release: vi.fn((held) => {
174
179
  held.context.unconfigure();
175
180
  held.device.destroy();
176
181
  }),
177
- };
182
+ });
178
183
  setWgpuHostBackend(backend);
179
184
 
180
185
  expect(() => createWgpuRenderState(acquisition, _pipeline)).toThrow('configure failed');
@@ -192,15 +197,15 @@ describe('setWgpuHostBackend', () => {
192
197
  it('O1: never releases caller-owned handles when the state is destroyed', async () => {
193
198
  const web = createWebWgpuHostBackend();
194
199
  const acquired = await web.acquire(document.createElement('canvas'), {});
195
- const acquisition = { ...acquired, ownership: 'caller' } as const;
200
+ const acquisition = createEntity({ ...acquired, ownership: 'caller' as const });
196
201
  const destroy = vi.spyOn(acquisition.device, 'destroy');
197
- const backend: WgpuHostBackend = {
202
+ const backend = entityBackend({
198
203
  acquire: vi.fn(async () => acquisition),
199
204
  isSupported: vi.fn(() => true),
200
205
  release: vi.fn((held) => {
201
206
  held.device.destroy();
202
207
  }),
203
- };
208
+ });
204
209
  setWgpuHostBackend(backend);
205
210
 
206
211
  const state = createWgpuRenderState(acquisition, _pipeline);
@@ -15,6 +15,7 @@ import {
15
15
  } from '@flighthq/render/contract';
16
16
  import { createDisplayObject } from '@flighthq/scene2d/contract';
17
17
  import type {
18
+ Entity,
18
19
  RenderEffectPaddingResolver,
19
20
  RenderRootGuard,
20
21
  RenderState,
@@ -59,6 +60,13 @@ import {
59
60
  import { createWgpuRenderStateForTest, installWgpuMock } from './wgpuTestHelper';
60
61
  import { registerWgpuTextureResolver } from './wgpuTextureResolver';
61
62
 
63
+ function expectEntitySlot(slot: object & { readonly [EntityRuntimeKey]?: unknown }, fields: object): void {
64
+ const { [EntityRuntimeKey]: entityRuntime, ...slotFields } = slot;
65
+ expect(slotFields).toEqual(fields);
66
+ expect(Object.hasOwn(slot, EntityRuntimeKey)).toBe(true);
67
+ expect(entityRuntime).toBeUndefined();
68
+ }
69
+
62
70
  beforeAll(() => {
63
71
  installWgpuMock();
64
72
  });
@@ -80,6 +88,10 @@ function createWgpuRenderStateRuntime(deviceState: ReturnType<typeof createWgpuD
80
88
  return createWgpuRenderStateRuntimeWithPipeline(deviceState, _testPipeline);
81
89
  }
82
90
 
91
+ function entityHostBackend(fields: Omit<WgpuHostBackend, keyof Entity>): WgpuHostBackend {
92
+ return createEntity(fields);
93
+ }
94
+
83
95
  function createWgpuOffscreenRenderState(source: WgpuRenderState): WgpuRenderState {
84
96
  const pipeline: WgpuPipeline = createWgpuPipeline(getWgpuRenderStateRuntime(source).registries);
85
97
  const state = createDeviceOnlyWgpuRenderState(source.deviceState, pipeline, {
@@ -129,13 +141,15 @@ describe('createWgpuAcquisitionFromCanvasElement', () => {
129
141
  // ★ NULL, NOT THROW. "This environment cannot give me WebGPU" is an expected outcome, not API misuse, so
130
142
  // it reports through the return value like every other expected failure in this SDK.
131
143
  it('returns null when the host cannot acquire, rather than rejecting', async () => {
132
- setWgpuHostBackend({
133
- acquire: vi.fn(async () => {
134
- throw new Error('no adapter');
144
+ setWgpuHostBackend(
145
+ entityHostBackend({
146
+ acquire: vi.fn(async () => {
147
+ throw new Error('no adapter');
148
+ }),
149
+ isSupported: vi.fn(() => false),
150
+ release: vi.fn(),
135
151
  }),
136
- isSupported: vi.fn(() => false),
137
- release: vi.fn(),
138
- });
152
+ );
139
153
 
140
154
  await expect(createWgpuAcquisitionFromCanvasElement(document.createElement('canvas'))).resolves.toBeNull();
141
155
  setWgpuHostBackend(null);
@@ -455,13 +469,13 @@ describe('createWgpuRenderState', () => {
455
469
  it('keeps exact caller-owned handles usable through every shared-state teardown', async () => {
456
470
  const owner = await createWgpuRenderStateForTest();
457
471
  const canvas = document.createElement('canvas');
458
- const acquisition = {
472
+ const acquisition = createEntity({
459
473
  context: owner.context,
460
474
  device: owner.device,
461
475
  format: owner.format,
462
- ownership: 'caller',
476
+ ownership: 'caller' as const,
463
477
  surface: owner.surface,
464
- } as const;
478
+ });
465
479
  let contextUsable = true;
466
480
  let deviceUsable = true;
467
481
  const originalCreateBuffer = acquisition.device.createBuffer.bind(acquisition.device);
@@ -557,11 +571,13 @@ describe('createWgpuRenderStateFromCanvasElement', () => {
557
571
  const owner = await createWgpuRenderStateForTest();
558
572
  const acquisition = { ...ownerAcquisition(owner), ownership: 'flight' } as const;
559
573
  const released: Readonly<WgpuHostAcquisition>[] = [];
560
- setWgpuHostBackend({
561
- acquire: vi.fn(async () => acquisition),
562
- isSupported: vi.fn(() => true),
563
- release: vi.fn((held: Readonly<WgpuHostAcquisition>) => released.push(held)),
564
- });
574
+ setWgpuHostBackend(
575
+ entityHostBackend({
576
+ acquire: vi.fn(async () => acquisition),
577
+ isSupported: vi.fn(() => true),
578
+ release: vi.fn((held: Readonly<WgpuHostAcquisition>) => released.push(held)),
579
+ }),
580
+ );
565
581
 
566
582
  const state = await createWgpuRenderStateFromCanvasElement(document.createElement('canvas'));
567
583
  destroyWgpuRenderState(state);
@@ -574,7 +590,7 @@ describe('createWgpuRenderStateFromCanvasElement', () => {
574
590
  it('forwards the acquisition options, which the render options no longer carry', async () => {
575
591
  const owner = await createWgpuRenderStateForTest();
576
592
  const acquire = vi.fn(async () => ({ ...ownerAcquisition(owner), ownership: 'flight' }) as const);
577
- setWgpuHostBackend({ acquire, isSupported: vi.fn(() => true), release: vi.fn() });
593
+ setWgpuHostBackend(entityHostBackend({ acquire, isSupported: vi.fn(() => true), release: vi.fn() }));
578
594
  const canvas = document.createElement('canvas');
579
595
 
580
596
  const state = await createWgpuRenderStateFromCanvasElement(canvas, {
@@ -623,26 +639,26 @@ describe('createWgpuRenderStateRuntime', () => {
623
639
  registry: 'WgpuRenderEffect',
624
640
  shape: 'keyed',
625
641
  });
626
- expect(runtime.registries.compressedTextureDecoder).toEqual({
642
+ expectEntitySlot(runtime.registries.compressedTextureDecoder, {
627
643
  entry: null,
628
644
  onMiss: 'Unregistered',
629
645
  registry: 'WgpuCompressedTextureDecoder',
630
646
  shape: 'slot',
631
647
  });
632
648
  expect(runtime.registries.colorAdjustments).toBeUndefined();
633
- expect(runtime.registries.compressedTextureUpload).toEqual({
649
+ expectEntitySlot(runtime.registries.compressedTextureUpload, {
634
650
  entry: null,
635
651
  onMiss: 'Unregistered',
636
652
  registry: 'WgpuCompressedTextureUpload',
637
653
  shape: 'slot',
638
654
  });
639
- expect(runtime.registries.shapeRasterizer).toEqual({
655
+ expectEntitySlot(runtime.registries.shapeRasterizer, {
640
656
  entry: null,
641
657
  onMiss: 'Unregistered',
642
658
  registry: 'WgpuShapeRasterizer',
643
659
  shape: 'slot',
644
660
  });
645
- expect(runtime.registries.strokeTessellator).toEqual({
661
+ expectEntitySlot(runtime.registries.strokeTessellator, {
646
662
  entry: null,
647
663
  onMiss: 'Rasterize',
648
664
  registry: 'StrokeTessellator',
@@ -965,11 +981,13 @@ describe('releaseWgpuAcquisition', () => {
965
981
  const owner = await createWgpuRenderStateForTest();
966
982
  const acquisition = { ...ownerAcquisition(owner), ownership: 'caller' } as const;
967
983
  const released: Readonly<WgpuHostAcquisition>[] = [];
968
- setWgpuHostBackend({
969
- acquire: vi.fn(async () => acquisition),
970
- isSupported: vi.fn(() => true),
971
- release: vi.fn((held: Readonly<WgpuHostAcquisition>) => released.push(held)),
972
- });
984
+ setWgpuHostBackend(
985
+ entityHostBackend({
986
+ acquire: vi.fn(async () => acquisition),
987
+ isSupported: vi.fn(() => true),
988
+ release: vi.fn((held: Readonly<WgpuHostAcquisition>) => released.push(held)),
989
+ }),
990
+ );
973
991
 
974
992
  releaseWgpuAcquisition(acquisition);
975
993
 
@@ -997,14 +1015,14 @@ describe('wgpu acquisition lifecycle', () => {
997
1015
  ): { backend: WgpuHostBackend; released: Readonly<WgpuHostAcquisition>[] } => {
998
1016
  const released: Readonly<WgpuHostAcquisition>[] = [];
999
1017
  return {
1000
- backend: {
1018
+ backend: entityHostBackend({
1001
1019
  acquire: vi.fn(async () => acquisition),
1002
1020
  isSupported: vi.fn(() => true),
1003
1021
  release: vi.fn((held: Readonly<WgpuHostAcquisition>) => {
1004
1022
  released.push(held);
1005
1023
  held.device.destroy();
1006
1024
  }),
1007
- },
1025
+ }),
1008
1026
  released,
1009
1027
  };
1010
1028
  };
@@ -1087,7 +1105,7 @@ describe('wgpu acquisition lifecycle', () => {
1087
1105
  });
1088
1106
 
1089
1107
  function ownerAcquisition(owner: WgpuPresentationRenderState): Omit<WgpuHostAcquisition, 'ownership'> {
1090
- return { context: owner.context, device: owner.device, format: owner.format, surface: owner.surface };
1108
+ return createEntity({ context: owner.context, device: owner.device, format: owner.format, surface: owner.surface });
1091
1109
  }
1092
1110
 
1093
1111
  describe('WgpuPipeline snapshots', () => {
@@ -1164,13 +1182,13 @@ describe('WgpuPresentationSurface', () => {
1164
1182
  return width;
1165
1183
  },
1166
1184
  };
1167
- const acquisition = {
1185
+ const acquisition = createEntity({
1168
1186
  context: owner.context,
1169
1187
  device: owner.device,
1170
1188
  format: owner.format,
1171
- ownership: 'caller',
1189
+ ownership: 'caller' as const,
1172
1190
  surface,
1173
- } as const;
1191
+ });
1174
1192
  const canvas = document.createElement('canvas');
1175
1193
 
1176
1194
  const state = createWgpuRenderState(acquisition);