@forgeax/engine-rhi-webgpu 0.1.23 → 0.1.24

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.
@@ -1 +1 @@
1
- {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAwBV,gBAAgB,EAIhB,SAAS,EAcV,MAAM,qBAAqB,CAAC;AAqM7B;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAE/E;AA6qCD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG;IACnD,MAAM,EAAE,SAAS,CAAC;IAClB;6CACyC;IACzC,GAAG,EAAE,SAAS,CAAC;CAChB,CA2bA;AA0BD;;iFAEiF;AACjF,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,aAAa,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACvD,WAAW,IAAI,IAAI,CAAC;IACpB,gBAAgB,IAAI,sBAAsB,GAAG,IAAI,CAAC;IAClD,iBAAiB,IAAI,UAAU,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,oBAAoB,GAAG,gBAAgB,CAqGpF"}
1
+ {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../src/device.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAwBV,gBAAgB,EAIhB,SAAS,EAcV,MAAM,qBAAqB,CAAC;AAqM7B;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAE/E;AA6qCD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG;IACnD,MAAM,EAAE,SAAS,CAAC;IAClB;6CACyC;IACzC,GAAG,EAAE,SAAS,CAAC;CAChB,CA+bA;AA0BD;;iFAEiF;AACjF,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,aAAa,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACvD,WAAW,IAAI,IAAI,CAAC;IACpB,gBAAgB,IAAI,sBAAsB,GAAG,IAAI,CAAC;IAClD,iBAAiB,IAAI,UAAU,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,oBAAoB,GAAG,gBAAgB,CAqGpF"}
package/dist/index.d.ts CHANGED
@@ -13,8 +13,9 @@ import type { RequestAdapterOptions, Result, RhiAdapter, RhiCanvasContext, RhiDe
13
13
  export interface GpuLike {
14
14
  requestAdapter(options?: GPURequestAdapterOptions | undefined): Promise<GpuAdapterLike | null>;
15
15
  }
16
- /** The `GPUAdapter` subset accepted at the provider seam — only the `requestDevice` entry is consumed. */
16
+ /** The `GPUAdapter` subset accepted at the provider seam — capability limits plus `requestDevice`. */
17
17
  export interface GpuAdapterLike {
18
+ readonly limits?: GPUSupportedLimits | undefined;
18
19
  requestDevice(descriptor?: GPUDeviceDescriptor | undefined): Promise<GpuDeviceLike>;
19
20
  }
20
21
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAEV,qBAAqB,EACrB,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,WAAW,EACX,YAAY,EACb,MAAM,qBAAqB,CAAC;AAW7B;;;;;;;;;;GAUG;AACH,MAAM,WAAW,OAAO;IAEtB,cAAc,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CAChG;AAED,0GAA0G;AAC1G,MAAM,WAAW,cAAc;IAE7B,aAAa,CAAC,UAAU,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACrF;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAEpC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC;IACvD,aAAa,CAAC,UAAU,EAAE,oBAAoB,GAAG,OAAO,CAAC;IACzD,aAAa,CAAC,UAAU,CAAC,EAAE,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAAC;IACtE,qBAAqB,CAAC,UAAU,EAAE,4BAA4B,GAAG,OAAO,CAAC;IACzE,eAAe,CAAC,UAAU,EAAE,sBAAsB,GAAG,OAAO,CAAC;IAC7D,oBAAoB,CAAC,UAAU,EAAE,2BAA2B,GAAG,OAAO,CAAC;IACvE,oBAAoB,CAAC,UAAU,EAAE,2BAA2B,GAAG,OAAO,CAAC;IACvE,kBAAkB,CAAC,UAAU,EAAE,yBAAyB,GAAG,OAAO,CAAC;CACpE;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;IACtD,gBAAgB,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACpD;AA2BD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,aAAa,CACjC,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAyBtC;AA6CD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAkDzC;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjD,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAGhC;AA+DD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,cAAc,CAClC,IAAI,CAAC,EAAE,qBAAqB,GAAG,SAAS,EACxC,kBAAkB,CAAC,EAAE,iBAAiB,GAAG,eAAe,GAAG,SAAS,GACnE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAgCvC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,iBAAiB,GAAG,eAAe,GAC1C,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAiBpC;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,GAAG,EAAE,WAAW,GAAG;IAC9B,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;IAC9C,2BAA2B,EAAE,OAAO,2BAA2B,CAAC;IAChE,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;CAMnD,CAAC;AAQF,YAAY,EAGV,SAAS,EAGT,mBAAmB,EACnB,eAAe,EACf,yBAAyB,EACzB,MAAM,EACN,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,eAAe,EACf,yBAAyB,EACzB,KAAK,EACL,cAAc,EACd,wBAAwB,EACxB,QAAQ,EACR,kBAAkB,EAClB,yBAAyB,EACzB,gCAAgC,EAChC,oBAAoB,EACpB,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,IAAI,uBAAuB,EAE/C,MAAM,EACN,SAAS,EACT,QAAQ,EAER,UAAU,EACV,2BAA2B,EAC3B,gBAAgB,EAChB,OAAO,EAEP,iBAAiB,EACjB,qBAAqB,EACrB,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,WAAW,EACX,WAAW,EACX,SAAS,EACT,QAAQ,EACR,oBAAoB,EACpB,sBAAsB,EACtB,UAAU,EACV,sBAAsB,EACtB,OAAO,EACP,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,iBAAiB,EACjB,WAAW,EACX,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAkBzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAWlD,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1175,6 +1175,10 @@ function makeRhiDevice(rawDevice) {
1175
1175
  return probe;
1176
1176
  },
1177
1177
  queue,
1178
+ // The raw backend owns the only real loss-injection seam. Keep this
1179
+ // Promise as a transparent observation boundary; a test provider must
1180
+ // operate on the backend before this shim and must never be added to the
1181
+ // public RHI surface.
1178
1182
  lost: rawDevice.lost,
1179
1183
  createBuffer(desc) {
1180
1184
  const out = rawDevice.createBuffer(
@@ -1710,6 +1714,28 @@ function translateErrorEventToRhiError(event) {
1710
1714
  }
1711
1715
 
1712
1716
  // src/index.ts
1717
+ var DYNAMIC_DEVICE_LIMIT_KEYS = [
1718
+ "maxDynamicUniformBuffersPerPipelineLayout",
1719
+ "maxDynamicStorageBuffersPerPipelineLayout"
1720
+ ];
1721
+ var SYNTHETIC_DAWN_DYNAMIC_LIMIT_DEFAULT = 1e6;
1722
+ function normalizeDeviceDescriptor(adapter, descriptor) {
1723
+ const adapterLimits = adapter.limits;
1724
+ if (adapterLimits === void 0 || adapterLimits === null) return descriptor;
1725
+ const requiredLimits = { ...descriptor?.requiredLimits ?? {} };
1726
+ let changed = false;
1727
+ for (const key of DYNAMIC_DEVICE_LIMIT_KEYS) {
1728
+ const value = adapterLimits[key];
1729
+ if (!Number.isFinite(value) || value < 1) continue;
1730
+ const requested = requiredLimits[key];
1731
+ if (requested !== void 0 && (requested <= value || requested !== SYNTHETIC_DAWN_DYNAMIC_LIMIT_DEFAULT)) {
1732
+ continue;
1733
+ }
1734
+ requiredLimits[key] = value;
1735
+ changed = true;
1736
+ }
1737
+ return changed ? { ...descriptor ?? {}, requiredLimits } : descriptor;
1738
+ }
1713
1739
  function classifyRequestDeviceError(e) {
1714
1740
  const msg = e instanceof Error ? e.message : String(e);
1715
1741
  if (/feature/i.test(msg)) return featureNotEnabled();
@@ -1729,7 +1755,9 @@ async function requestDevice(opts = {}) {
1729
1755
  }
1730
1756
  let rawDevice;
1731
1757
  try {
1732
- rawDevice = await adapter.requestDevice(opts.deviceDescriptor);
1758
+ rawDevice = await adapter.requestDevice(
1759
+ normalizeDeviceDescriptor(adapter, opts.deviceDescriptor)
1760
+ );
1733
1761
  } catch (e) {
1734
1762
  return classifyRequestDeviceError(e);
1735
1763
  }
@@ -1819,7 +1847,7 @@ function makeRhiAdapter(rawAdapter) {
1819
1847
  let rawDevice;
1820
1848
  try {
1821
1849
  rawDevice = await rawAdapter.requestDevice(
1822
- opts
1850
+ normalizeDeviceDescriptor(rawAdapter, opts)
1823
1851
  );
1824
1852
  } catch (e) {
1825
1853
  return classifyRequestDeviceError(e);