@luma.gl/test-utils 9.2.0-alpha.1 → 9.2.0-alpha.3

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 (76) hide show
  1. package/dist/create-test-device.d.ts +2 -1
  2. package/dist/create-test-device.d.ts.map +1 -1
  3. package/dist/create-test-device.js +29 -17
  4. package/dist/create-test-device.js.map +1 -1
  5. package/dist/index.cjs +80 -19
  6. package/dist/index.cjs.map +2 -2
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +1 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/null-device/null-device.d.ts +1 -0
  12. package/dist/null-device/null-device.d.ts.map +1 -1
  13. package/dist/null-device/null-device.js +4 -1
  14. package/dist/null-device/null-device.js.map +1 -1
  15. package/dist/null-device/resources/null-buffer.d.ts +8 -4
  16. package/dist/null-device/resources/null-buffer.d.ts.map +1 -1
  17. package/dist/null-device/resources/null-buffer.js +41 -4
  18. package/dist/null-device/resources/null-buffer.js.map +1 -1
  19. package/dist/null-device/resources/null-framebuffer.d.ts +1 -0
  20. package/dist/null-device/resources/null-framebuffer.d.ts.map +1 -1
  21. package/dist/null-device/resources/null-framebuffer.js +1 -0
  22. package/dist/null-device/resources/null-framebuffer.js.map +1 -1
  23. package/dist/null-device/resources/null-query-set.d.ts +1 -0
  24. package/dist/null-device/resources/null-query-set.d.ts.map +1 -1
  25. package/dist/null-device/resources/null-query-set.js +1 -0
  26. package/dist/null-device/resources/null-query-set.js.map +1 -1
  27. package/dist/null-device/resources/null-render-pass.d.ts +1 -0
  28. package/dist/null-device/resources/null-render-pass.d.ts.map +1 -1
  29. package/dist/null-device/resources/null-render-pass.js +1 -0
  30. package/dist/null-device/resources/null-render-pass.js.map +1 -1
  31. package/dist/null-device/resources/null-render-pipeline.d.ts +1 -0
  32. package/dist/null-device/resources/null-render-pipeline.d.ts.map +1 -1
  33. package/dist/null-device/resources/null-render-pipeline.js +1 -0
  34. package/dist/null-device/resources/null-render-pipeline.js.map +1 -1
  35. package/dist/null-device/resources/null-sampler.d.ts +1 -0
  36. package/dist/null-device/resources/null-sampler.d.ts.map +1 -1
  37. package/dist/null-device/resources/null-sampler.js +1 -0
  38. package/dist/null-device/resources/null-sampler.js.map +1 -1
  39. package/dist/null-device/resources/null-shader.d.ts +1 -0
  40. package/dist/null-device/resources/null-shader.d.ts.map +1 -1
  41. package/dist/null-device/resources/null-shader.js +1 -0
  42. package/dist/null-device/resources/null-shader.js.map +1 -1
  43. package/dist/null-device/resources/null-texture-view.d.ts +1 -0
  44. package/dist/null-device/resources/null-texture-view.d.ts.map +1 -1
  45. package/dist/null-device/resources/null-texture-view.js +1 -0
  46. package/dist/null-device/resources/null-texture-view.js.map +1 -1
  47. package/dist/null-device/resources/null-texture.d.ts +3 -1
  48. package/dist/null-device/resources/null-texture.d.ts.map +1 -1
  49. package/dist/null-device/resources/null-texture.js +4 -0
  50. package/dist/null-device/resources/null-texture.js.map +1 -1
  51. package/dist/null-device/resources/null-transform-feedback.d.ts +1 -0
  52. package/dist/null-device/resources/null-transform-feedback.d.ts.map +1 -1
  53. package/dist/null-device/resources/null-transform-feedback.js +1 -0
  54. package/dist/null-device/resources/null-transform-feedback.js.map +1 -1
  55. package/dist/null-device/resources/null-vertex-array.d.ts +1 -0
  56. package/dist/null-device/resources/null-vertex-array.d.ts.map +1 -1
  57. package/dist/null-device/resources/null-vertex-array.js +1 -0
  58. package/dist/null-device/resources/null-vertex-array.js.map +1 -1
  59. package/dist/performance-test-runner.js +1 -1
  60. package/dist/performance-test-runner.js.map +1 -1
  61. package/package.json +7 -7
  62. package/src/create-test-device.ts +42 -28
  63. package/src/index.ts +1 -0
  64. package/src/null-device/null-device.ts +5 -1
  65. package/src/null-device/resources/null-buffer.ts +60 -8
  66. package/src/null-device/resources/null-framebuffer.ts +1 -0
  67. package/src/null-device/resources/null-query-set.ts +1 -0
  68. package/src/null-device/resources/null-render-pass.ts +1 -0
  69. package/src/null-device/resources/null-render-pipeline.ts +2 -0
  70. package/src/null-device/resources/null-sampler.ts +1 -0
  71. package/src/null-device/resources/null-shader.ts +1 -0
  72. package/src/null-device/resources/null-texture-view.ts +2 -0
  73. package/src/null-device/resources/null-texture.ts +10 -3
  74. package/src/null-device/resources/null-transform-feedback.ts +1 -0
  75. package/src/null-device/resources/null-vertex-array.ts +1 -0
  76. package/src/performance-test-runner.ts +1 -1
@@ -4,28 +4,65 @@
4
4
  import { Buffer } from '@luma.gl/core';
5
5
  export class NullBuffer extends Buffer {
6
6
  device;
7
+ handle = 'null';
7
8
  byteLength;
9
+ _storage;
8
10
  constructor(device, props = {}) {
9
11
  super(device, props);
10
12
  this.device = device;
11
13
  const byteOffset = props.byteOffset || 0;
12
14
  const byteLength = props.byteLength ?? (props.data ? props.data.byteLength + byteOffset : 0);
13
- // assert(byteLength >= 0);
14
15
  this.byteLength = byteLength;
16
+ this._storage = new ArrayBuffer(byteLength);
17
+ // If initial data is provided, copy it in
18
+ if (props.data) {
19
+ this.write(props.data, byteOffset);
20
+ }
15
21
  this.trackAllocatedMemory(byteLength);
16
22
  }
17
23
  destroy() {
18
24
  if (!this.destroyed) {
19
25
  super.destroy();
20
26
  this.trackDeallocatedMemory();
27
+ // @ts-expect-error
28
+ this.handle = null;
29
+ // Clear internal storage
30
+ this._storage = new ArrayBuffer(0);
31
+ }
32
+ }
33
+ write(data, byteOffset = 0) {
34
+ const source = ArrayBuffer.isView(data)
35
+ ? new Uint8Array(data.buffer, data.byteOffset, data.byteLength)
36
+ : new Uint8Array(data);
37
+ const target = new Uint8Array(this._storage, byteOffset, source.byteLength);
38
+ if (byteOffset + source.byteLength > this.byteLength) {
39
+ throw new RangeError(`NullBuffer.write(): write would overflow buffer`);
21
40
  }
41
+ target.set(source);
42
+ this._setDebugData(data, byteOffset, source.byteLength);
43
+ }
44
+ async mapAndWriteAsync(callback, byteOffset = 0, byteLength = this.byteLength - byteOffset) {
45
+ const view = new Uint8Array(this._storage, byteOffset, byteLength);
46
+ const tempBuffer = new Uint8Array(view.length); // safe scratch copy
47
+ callback(tempBuffer.buffer, 'copied');
48
+ view.set(tempBuffer);
49
+ this._setDebugData(view, byteOffset, byteLength);
22
50
  }
23
51
  async readAsync(byteOffset = 0, byteLength) {
24
52
  byteLength = byteLength ?? this.byteLength - byteOffset;
25
- return new Uint8Array(byteLength);
53
+ if (byteOffset + byteLength > this.byteLength) {
54
+ throw new RangeError(`NullBuffer.readAsync(): read would overflow buffer`);
55
+ }
56
+ const view = new Uint8Array(this._storage, byteOffset, byteLength);
57
+ return new Uint8Array(view); // return a copy
26
58
  }
27
- write(data, byteOffset = 0) {
28
- // assert(data.byteLength + byteOffset <= this.byteLength);
59
+ async mapAndReadAsync(callback, byteOffset = 0, byteLength = this.byteLength - byteOffset) {
60
+ const view = new Uint8Array(this._storage, byteOffset, byteLength);
61
+ const copy = new Uint8Array(view); // copy to protect memory
62
+ return callback(copy.buffer, 'copied');
63
+ }
64
+ readSyncWebGL() {
65
+ throw new Error('NullBuffer.readSyncWebGL() not implemented');
29
66
  }
30
67
  }
31
68
  //# sourceMappingURL=null-buffer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"null-buffer.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-buffer.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AAGrC,MAAM,OAAO,UAAW,SAAQ,MAAM;IACpC,MAAM,CAAa;IAEnB,UAAU,CAAS;IAEnB,YAAY,MAAkB,EAAE,QAAqB,EAAE;QACrD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7F,2BAA2B;QAE3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAEQ,OAAO;QACd,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,UAAmB;QACjD,UAAU,GAAG,UAAU,IAAI,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QACxD,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,IAAqB,EAAE,aAAqB,CAAC;QACjD,2DAA2D;IAC7D,CAAC;CACF"}
1
+ {"version":3,"file":"null-buffer.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-buffer.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import type { NullDevice } from "../null-device.js";
4
4
  import type { NullTextureView } from "./null-texture-view.js";
5
5
  export declare class NullFramebuffer extends Framebuffer {
6
6
  device: NullDevice;
7
+ readonly handle: null;
7
8
  colorAttachments: NullTextureView[];
8
9
  depthStencilAttachment: NullTextureView | null;
9
10
  constructor(device: NullDevice, props: FramebufferProps);
@@ -1 +1 @@
1
- {"version":3,"file":"null-framebuffer.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-framebuffer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAC,UAAU,EAAC,0BAAuB;AAC/C,OAAO,KAAK,EAAC,eAAe,EAAC,+BAA4B;AAEzD,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,MAAM,EAAE,UAAU,CAAC;IAEnB,gBAAgB,EAAE,eAAe,EAAE,CAAM;IACzC,sBAAsB,EAAE,eAAe,GAAG,IAAI,CAAQ;gBAE1C,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB;cAKpC,iBAAiB,IAAI,IAAI;CAG7C"}
1
+ {"version":3,"file":"null-framebuffer.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-framebuffer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAC,UAAU,EAAC,0BAAuB;AAC/C,OAAO,KAAK,EAAC,eAAe,EAAC,+BAA4B;AAEzD,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,MAAM,OAAQ;IAEvB,gBAAgB,EAAE,eAAe,EAAE,CAAM;IACzC,sBAAsB,EAAE,eAAe,GAAG,IAAI,CAAQ;gBAE1C,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB;cAKpC,iBAAiB,IAAI,IAAI;CAG7C"}
@@ -4,6 +4,7 @@
4
4
  import { Framebuffer } from '@luma.gl/core';
5
5
  export class NullFramebuffer extends Framebuffer {
6
6
  device;
7
+ handle = null;
7
8
  colorAttachments = [];
8
9
  depthStencilAttachment = null;
9
10
  constructor(device, props) {
@@ -1 +1 @@
1
- {"version":3,"file":"null-framebuffer.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-framebuffer.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAI1C,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC9C,MAAM,CAAa;IAEnB,gBAAgB,GAAsB,EAAE,CAAC;IACzC,sBAAsB,GAA2B,IAAI,CAAC;IAEtD,YAAY,MAAkB,EAAE,KAAuB;QACrD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEkB,iBAAiB;QAClC,oDAAoD;IACtD,CAAC;CACF"}
1
+ {"version":3,"file":"null-framebuffer.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-framebuffer.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAI1C,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC9C,MAAM,CAAa;IACV,MAAM,GAAG,IAAI,CAAC;IAEvB,gBAAgB,GAAsB,EAAE,CAAC;IACzC,sBAAsB,GAA2B,IAAI,CAAC;IAEtD,YAAY,MAAkB,EAAE,KAAuB;QACrD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEkB,iBAAiB;QAClC,oDAAoD;IACtD,CAAC;CACF"}
@@ -2,6 +2,7 @@ import { QuerySet, QuerySetProps } from '@luma.gl/core';
2
2
  import { NullDevice } from "../null-device.js";
3
3
  export declare class NullQuerySet extends QuerySet {
4
4
  device: NullDevice;
5
+ readonly handle: null;
5
6
  constructor(device: NullDevice, props: QuerySetProps);
6
7
  }
7
8
  //# sourceMappingURL=null-query-set.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"null-query-set.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-query-set.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,UAAU,EAAC,0BAAuB;AAE1C,qBAAa,YAAa,SAAQ,QAAQ;IACxC,MAAM,EAAE,UAAU,CAAC;gBAEP,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa;CAIrD"}
1
+ {"version":3,"file":"null-query-set.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-query-set.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,MAAM,eAAe,CAAC;AACtD,OAAO,EAAC,UAAU,EAAC,0BAAuB;AAE1C,qBAAa,YAAa,SAAQ,QAAQ;IACxC,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,MAAM,OAAQ;gBAEX,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa;CAIrD"}
@@ -4,6 +4,7 @@
4
4
  import { QuerySet } from '@luma.gl/core';
5
5
  export class NullQuerySet extends QuerySet {
6
6
  device;
7
+ handle = null;
7
8
  constructor(device, props) {
8
9
  super(device, props);
9
10
  this.device = device;
@@ -1 +1 @@
1
- {"version":3,"file":"null-query-set.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-query-set.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,QAAQ,EAAgB,MAAM,eAAe,CAAC;AAGtD,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,MAAM,CAAa;IAEnB,YAAY,MAAkB,EAAE,KAAoB;QAClD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"null-query-set.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-query-set.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,QAAQ,EAAgB,MAAM,eAAe,CAAC;AAGtD,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,MAAM,CAAa;IACV,MAAM,GAAG,IAAI,CAAC;IAEvB,YAAY,MAAkB,EAAE,KAAoB;QAClD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
@@ -2,6 +2,7 @@ import { RenderPass, RenderPassProps, RenderPassParameters } from '@luma.gl/core
2
2
  import { NullDevice } from "../null-device.js";
3
3
  export declare class NullRenderPass extends RenderPass {
4
4
  readonly device: NullDevice;
5
+ readonly handle: null;
5
6
  constructor(device: NullDevice, props: RenderPassProps);
6
7
  end(): void;
7
8
  pushDebugGroup(groupLabel: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"null-render-pass.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-render-pass.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,UAAU,EAAE,eAAe,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAChF,OAAO,EAAC,UAAU,EAAC,0BAAuB;AAE1C,qBAAa,cAAe,SAAQ,UAAU;IAC5C,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBAEhB,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe;IAKtD,GAAG,IAAI,IAAI;IAEX,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IACxC,aAAa,IAAI,IAAI;IACrB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAE5C,aAAa,CAAC,UAAU,GAAE,oBAAyB,GAAG,IAAI;IAE1D,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAC7C,iBAAiB,IAAI,IAAI;CAC1B"}
1
+ {"version":3,"file":"null-render-pass.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-render-pass.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,UAAU,EAAE,eAAe,EAAE,oBAAoB,EAAC,MAAM,eAAe,CAAC;AAChF,OAAO,EAAC,UAAU,EAAC,0BAAuB;AAE1C,qBAAa,cAAe,SAAQ,UAAU;IAC5C,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,OAAQ;gBAEX,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,eAAe;IAKtD,GAAG,IAAI,IAAI;IAEX,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IACxC,aAAa,IAAI,IAAI;IACrB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAE5C,aAAa,CAAC,UAAU,GAAE,oBAAyB,GAAG,IAAI;IAE1D,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAC7C,iBAAiB,IAAI,IAAI;CAC1B"}
@@ -4,6 +4,7 @@
4
4
  import { RenderPass } from '@luma.gl/core';
5
5
  export class NullRenderPass extends RenderPass {
6
6
  device;
7
+ handle = null;
7
8
  constructor(device, props) {
8
9
  super(device, props);
9
10
  this.device = device;
@@ -1 +1 @@
1
- {"version":3,"file":"null-render-pass.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-render-pass.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,UAAU,EAAwC,MAAM,eAAe,CAAC;AAGhF,MAAM,OAAO,cAAe,SAAQ,UAAU;IACnC,MAAM,CAAa;IAE5B,YAAY,MAAkB,EAAE,KAAsB;QACpD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,GAAG,KAAU,CAAC;IAEd,cAAc,CAAC,UAAkB,IAAS,CAAC;IAC3C,aAAa,KAAU,CAAC;IACxB,iBAAiB,CAAC,WAAmB,IAAS,CAAC;IAE/C,aAAa,CAAC,aAAmC,EAAE,IAAS,CAAC;IAE7D,mBAAmB,CAAC,UAAkB,IAAS,CAAC;IAChD,iBAAiB,KAAU,CAAC;CAC7B"}
1
+ {"version":3,"file":"null-render-pass.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-render-pass.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,UAAU,EAAwC,MAAM,eAAe,CAAC;AAGhF,MAAM,OAAO,cAAe,SAAQ,UAAU;IACnC,MAAM,CAAa;IACnB,MAAM,GAAG,IAAI,CAAC;IAEvB,YAAY,MAAkB,EAAE,KAAsB;QACpD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,GAAG,KAAU,CAAC;IAEd,cAAc,CAAC,UAAkB,IAAS,CAAC;IAC3C,aAAa,KAAU,CAAC;IACxB,iBAAiB,CAAC,WAAmB,IAAS,CAAC;IAE/C,aAAa,CAAC,aAAmC,EAAE,IAAS,CAAC;IAE7D,mBAAmB,CAAC,UAAkB,IAAS,CAAC;IAChD,iBAAiB,KAAU,CAAC;CAC7B"}
@@ -5,6 +5,7 @@ import { NullShader } from "./null-shader.js";
5
5
  /** Creates a new render pipeline */
6
6
  export declare class NullRenderPipeline extends RenderPipeline {
7
7
  device: NullDevice;
8
+ readonly handle: null;
8
9
  vs: NullShader;
9
10
  fs: NullShader;
10
11
  uniforms: Record<string, UniformValue>;
@@ -1 +1 @@
1
- {"version":3,"file":"null-render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-render-pipeline.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,OAAO,EACP,UAAU,EACV,WAAW,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAC,UAAU,EAAC,0BAAuB;AAC/C,OAAO,EAAC,UAAU,EAAC,yBAAsB;AAEzC,oCAAoC;AACpC,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,MAAM,EAAE,UAAU,CAAC;IACnB,EAAE,EAAE,UAAU,CAAC;IACf,EAAE,EAAE,UAAU,CAAC;IAEf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAM;IAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;gBAE3B,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,mBAAmB;IAc1D,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIpD,IAAI,CAAC,OAAO,EAAE;QACZ,UAAU,EAAE,UAAU,CAAC;QACvB,WAAW,EAAE,WAAW,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO;CAMZ"}
1
+ {"version":3,"file":"null-render-pipeline.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-render-pipeline.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,OAAO,EACP,UAAU,EACV,WAAW,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAC,UAAU,EAAC,0BAAuB;AAC/C,OAAO,EAAC,UAAU,EAAC,yBAAsB;AAEzC,oCAAoC;AACpC,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,MAAM,OAAQ;IAEvB,EAAE,EAAE,UAAU,CAAC;IACf,EAAE,EAAE,UAAU,CAAC;IAEf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAM;IAC5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;gBAE3B,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,mBAAmB;IAc1D,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIpD,IAAI,CAAC,OAAO,EAAE;QACZ,UAAU,EAAE,UAAU,CAAC;QACvB,WAAW,EAAE,WAAW,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO;CAMZ"}
@@ -5,6 +5,7 @@ import { RenderPipeline } from '@luma.gl/core';
5
5
  /** Creates a new render pipeline */
6
6
  export class NullRenderPipeline extends RenderPipeline {
7
7
  device;
8
+ handle = null;
8
9
  vs;
9
10
  fs;
10
11
  uniforms = {};
@@ -1 +1 @@
1
- {"version":3,"file":"null-render-pipeline.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-render-pipeline.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AASpC,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAK7C,oCAAoC;AACpC,MAAM,OAAO,kBAAmB,SAAQ,cAAc;IACpD,MAAM,CAAa;IACnB,EAAE,CAAa;IACf,EAAE,CAAa;IAEf,QAAQ,GAAiC,EAAE,CAAC;IAC5C,QAAQ,GAA4B,EAAE,CAAC;IAEvC,YAAY,MAAkB,EAAE,KAA0B;QACxD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAgB,CAAC;QACjC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAgB,CAAC;QAEjC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI;YACxC,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,QAAiC;QAC3C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,OAKJ;QACC,MAAM,EAAC,UAAU,EAAE,WAAW,EAAC,GAAG,OAAO,CAAC;QAC1C,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACzC,WAAW,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"null-render-pipeline.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-render-pipeline.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AASpC,OAAO,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AAK7C,oCAAoC;AACpC,MAAM,OAAO,kBAAmB,SAAQ,cAAc;IACpD,MAAM,CAAa;IACV,MAAM,GAAG,IAAI,CAAC;IAEvB,EAAE,CAAa;IACf,EAAE,CAAa;IAEf,QAAQ,GAAiC,EAAE,CAAC;IAC5C,QAAQ,GAA4B,EAAE,CAAC;IAEvC,YAAY,MAAkB,EAAE,KAA0B;QACxD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAgB,CAAC;QACjC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAgB,CAAC;QAEjC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI;YACxC,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,QAAiC;QAC3C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,OAKJ;QACC,MAAM,EAAC,UAAU,EAAE,WAAW,EAAC,GAAG,OAAO,CAAC;QAC1C,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACzC,WAAW,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -2,6 +2,7 @@ import { Sampler, SamplerProps } from '@luma.gl/core';
2
2
  import type { NullDevice } from "../null-device.js";
3
3
  export declare class NullSampler extends Sampler {
4
4
  readonly device: NullDevice;
5
+ readonly handle: null;
5
6
  constructor(device: NullDevice, props: SamplerProps);
6
7
  }
7
8
  //# sourceMappingURL=null-sampler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"null-sampler.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-sampler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAC,UAAU,EAAC,0BAAuB;AAE/C,qBAAa,WAAY,SAAQ,OAAO;IACtC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBAEhB,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY;CAIpD"}
1
+ {"version":3,"file":"null-sampler.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-sampler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAC,UAAU,EAAC,0BAAuB;AAE/C,qBAAa,WAAY,SAAQ,OAAO;IACtC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,OAAQ;gBAEX,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY;CAIpD"}
@@ -4,6 +4,7 @@
4
4
  import { Sampler } from '@luma.gl/core';
5
5
  export class NullSampler extends Sampler {
6
6
  device;
7
+ handle = null;
7
8
  constructor(device, props) {
8
9
  super(device, props);
9
10
  this.device = device;
@@ -1 +1 @@
1
- {"version":3,"file":"null-sampler.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-sampler.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,OAAO,EAAe,MAAM,eAAe,CAAC;AAGpD,MAAM,OAAO,WAAY,SAAQ,OAAO;IAC7B,MAAM,CAAa;IAE5B,YAAY,MAAkB,EAAE,KAAmB;QACjD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"null-sampler.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-sampler.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,OAAO,EAAe,MAAM,eAAe,CAAC;AAGpD,MAAM,OAAO,WAAY,SAAQ,OAAO;IAC7B,MAAM,CAAa;IACnB,MAAM,GAAG,IAAI,CAAC;IAEvB,YAAY,MAAkB,EAAE,KAAmB;QACjD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
@@ -2,6 +2,7 @@ import { Shader, ShaderProps, CompilerMessage } from '@luma.gl/core';
2
2
  import { NullDevice } from "../null-device.js";
3
3
  export declare class NullShader extends Shader {
4
4
  readonly device: NullDevice;
5
+ readonly handle: null;
5
6
  constructor(device: NullDevice, props: ShaderProps);
6
7
  get asyncCompilationStatus(): Promise<any>;
7
8
  getCompilationInfo(): Promise<readonly CompilerMessage[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"null-shader.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-shader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AACnE,OAAO,EAAC,UAAU,EAAC,0BAAuB;AAE1C,qBAAa,UAAW,SAAQ,MAAM;IACpC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBAEhB,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW;IAKlD,IAAI,sBAAsB,IAAI,OAAO,CAAC,GAAG,CAAC,CAEzC;IAEK,kBAAkB,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;CAGhE"}
1
+ {"version":3,"file":"null-shader.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-shader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AACnE,OAAO,EAAC,UAAU,EAAC,0BAAuB;AAE1C,qBAAa,UAAW,SAAQ,MAAM;IACpC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,OAAQ;gBAEX,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW;IAKlD,IAAI,sBAAsB,IAAI,OAAO,CAAC,GAAG,CAAC,CAEzC;IAEK,kBAAkB,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;CAGhE"}
@@ -4,6 +4,7 @@
4
4
  import { Shader } from '@luma.gl/core';
5
5
  export class NullShader extends Shader {
6
6
  device;
7
+ handle = null;
7
8
  constructor(device, props) {
8
9
  super(device, props);
9
10
  this.device = device;
@@ -1 +1 @@
1
- {"version":3,"file":"null-shader.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-shader.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,MAAM,EAA+B,MAAM,eAAe,CAAC;AAGnE,MAAM,OAAO,UAAW,SAAQ,MAAM;IAC3B,MAAM,CAAa;IAE5B,YAAY,MAAkB,EAAE,KAAkB;QAChD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
1
+ {"version":3,"file":"null-shader.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-shader.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,MAAM,EAA+B,MAAM,eAAe,CAAC;AAGnE,MAAM,OAAO,UAAW,SAAQ,MAAM;IAC3B,MAAM,CAAa;IACnB,MAAM,GAAG,IAAI,CAAC;IAEvB,YAAY,MAAkB,EAAE,KAAkB;QAChD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
@@ -4,6 +4,7 @@ import type { NullDevice } from "../null-device.js";
4
4
  import type { NullTexture } from "./null-texture.js";
5
5
  export declare class NullTextureView extends TextureView {
6
6
  readonly device: NullDevice;
7
+ readonly handle: null;
7
8
  readonly texture: NullTexture;
8
9
  constructor(device: NullDevice, props: TextureViewProps & {
9
10
  texture: NullTexture;
@@ -1 +1 @@
1
- {"version":3,"file":"null-texture-view.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-texture-view.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,EAAC,WAAW,EAAU,MAAM,eAAe,CAAC;AAEnD,OAAO,KAAK,EAAC,UAAU,EAAC,0BAAuB;AAC/C,OAAO,KAAK,EAAC,WAAW,EAAC,0BAAuB;AAEhD,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;gBAElB,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB,GAAG;QAAC,OAAO,EAAE,WAAW,CAAA;KAAC;CAMjF"}
1
+ {"version":3,"file":"null-texture-view.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-texture-view.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,EAAC,WAAW,EAAU,MAAM,eAAe,CAAC;AAEnD,OAAO,KAAK,EAAC,UAAU,EAAC,0BAAuB;AAC/C,OAAO,KAAK,EAAC,WAAW,EAAC,0BAAuB;AAEhD,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,OAAQ;IAEvB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;gBAElB,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB,GAAG;QAAC,OAAO,EAAE,WAAW,CAAA;KAAC;CAMjF"}
@@ -4,6 +4,7 @@
4
4
  import { TextureView, Texture } from '@luma.gl/core';
5
5
  export class NullTextureView extends TextureView {
6
6
  device;
7
+ handle = null;
7
8
  texture;
8
9
  constructor(device, props) {
9
10
  super(device, { ...Texture.defaultProps, ...props });
@@ -1 +1 @@
1
- {"version":3,"file":"null-texture-view.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-texture-view.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AAKnD,MAAM,OAAO,eAAgB,SAAQ,WAAW;IACrC,MAAM,CAAa;IACnB,OAAO,CAAc;IAE9B,YAAY,MAAkB,EAAE,KAAgD;QAC9E,KAAK,CAAC,MAAM,EAAE,EAAC,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,KAAK,EAAC,CAAC,CAAC;QAEnD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC/B,CAAC;CACF"}
1
+ {"version":3,"file":"null-texture-view.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-texture-view.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AAKnD,MAAM,OAAO,eAAgB,SAAQ,WAAW;IACrC,MAAM,CAAa;IACnB,MAAM,GAAG,IAAI,CAAC;IAEd,OAAO,CAAc;IAE9B,YAAY,MAAkB,EAAE,KAAgD;QAC9E,KAAK,CAAC,MAAM,EAAE,EAAC,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,KAAK,EAAC,CAAC,CAAC;QAEnD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC/B,CAAC;CACF"}
@@ -1,10 +1,11 @@
1
- import type { TextureProps, TextureViewProps, CopyExternalImageOptions, CopyImageDataOptions } from '@luma.gl/core';
1
+ import type { TextureProps, TextureViewProps, CopyExternalImageOptions, CopyImageDataOptions, Sampler, SamplerProps } from '@luma.gl/core';
2
2
  import { Texture } from '@luma.gl/core';
3
3
  import { NullDevice } from "../null-device.js";
4
4
  import { NullSampler } from "./null-sampler.js";
5
5
  import { NullTextureView } from "./null-texture-view.js";
6
6
  export declare class NullTexture extends Texture {
7
7
  readonly device: NullDevice;
8
+ readonly handle: null;
8
9
  sampler: NullSampler;
9
10
  view: NullTextureView;
10
11
  constructor(device: NullDevice, props: TextureProps);
@@ -14,6 +15,7 @@ export declare class NullTexture extends Texture {
14
15
  width: number;
15
16
  height: number;
16
17
  };
18
+ setSampler(sampler?: Sampler | SamplerProps): void;
17
19
  copyImageData(options: CopyImageDataOptions): void;
18
20
  generateMipmapsWebGL(): void;
19
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"null-texture.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-texture.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,UAAU,EAAC,0BAAuB;AAC1C,OAAO,EAAC,WAAW,EAAC,0BAAuB;AAC3C,OAAO,EAAC,eAAe,EAAC,+BAA4B;AAEpD,qBAAa,WAAY,SAAQ,OAAO;IACtC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAE5B,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,eAAe,CAAC;gBAEV,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY;IAwB1C,OAAO,IAAI,IAAI;IAOxB,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,eAAe;IAIpD,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC;IAqB5E,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAIlD,oBAAoB,IAAI,IAAI;CAGtC"}
1
+ {"version":3,"file":"null-texture.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-texture.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,OAAO,EACP,YAAY,EACb,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,UAAU,EAAC,0BAAuB;AAC1C,OAAO,EAAC,WAAW,EAAC,0BAAuB;AAC3C,OAAO,EAAC,eAAe,EAAC,+BAA4B;AAEpD,qBAAa,WAAY,SAAQ,OAAO;IACtC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,OAAQ;IAEvB,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,eAAe,CAAC;gBAEV,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY;IAwB1C,OAAO,IAAI,IAAI;IAOxB,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,eAAe;IAIpD,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC;IAqB5E,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI;IAI3D,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAIlD,oBAAoB,IAAI,IAAI;CAG7B"}
@@ -6,6 +6,7 @@ import { NullSampler } from "./null-sampler.js";
6
6
  import { NullTextureView } from "./null-texture-view.js";
7
7
  export class NullTexture extends Texture {
8
8
  device;
9
+ handle = null;
9
10
  sampler;
10
11
  view;
11
12
  constructor(device, props) {
@@ -49,6 +50,9 @@ export class NullTexture extends Texture {
49
50
  this.height = height;
50
51
  return { width, height };
51
52
  }
53
+ setSampler(sampler) {
54
+ // ignore
55
+ }
52
56
  copyImageData(options) {
53
57
  throw new Error('copyImageData not implemented');
54
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"null-texture.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-texture.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AASpC,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAC,WAAW,EAAC,0BAAuB;AAC3C,OAAO,EAAC,eAAe,EAAC,+BAA4B;AAEpD,MAAM,OAAO,WAAY,SAAQ,OAAO;IAC7B,MAAM,CAAa;IAE5B,OAAO,CAAc;IACrB,IAAI,CAAkB;IAEtB,YAAY,MAAkB,EAAE,KAAmB;QACjD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAErB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,2BAA2B;QAC3B,4BAA4B;QAE5B,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEhE,IAAI,CAAC,IAAI,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE;YAC3C,GAAG,KAAK;YACR,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,CAAC;YAChB,eAAe,EAAE,CAAC;SACnB,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAEQ,OAAO;QACd,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,UAAU,CAAC,KAAuB;QAChC,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,EAAC,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;IACrE,CAAC;IAED,iBAAiB,CAAC,OAAiC;QACjD,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAEvC,MAAM,EAAC,KAAK,EAAE,IAAI,EAAC,GAAG,OAAO,CAAC;QAE9B,iCAAiC;QACjC,2DAA2D;QAC3D,WAAW;QACX,MAAM,aAAa,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,aAAa,EAAE,SAAS,CAAC,CAAC;QAC/E,IAAI;QAEJ,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAK,IAAoB,CAAC,KAAK,CAAC;QAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAK,IAAoB,CAAC,MAAM,CAAC;QAE9D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,OAAO,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC;IACzB,CAAC;IAEQ,aAAa,CAAC,OAA6B;QAClD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAEQ,oBAAoB;QAC3B,SAAS;IACX,CAAC;CACF"}
1
+ {"version":3,"file":"null-texture.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-texture.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAWpC,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAC,WAAW,EAAC,0BAAuB;AAC3C,OAAO,EAAC,eAAe,EAAC,+BAA4B;AAEpD,MAAM,OAAO,WAAY,SAAQ,OAAO;IAC7B,MAAM,CAAa;IACnB,MAAM,GAAG,IAAI,CAAC;IAEvB,OAAO,CAAc;IACrB,IAAI,CAAkB;IAEtB,YAAY,MAAkB,EAAE,KAAmB;QACjD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAErB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,2BAA2B;QAC3B,4BAA4B;QAE5B,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEhE,IAAI,CAAC,IAAI,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE;YAC3C,GAAG,KAAK;YACR,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,CAAC;YAChB,eAAe,EAAE,CAAC;SACnB,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAEQ,OAAO;QACd,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,UAAU,CAAC,KAAuB;QAChC,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,EAAC,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;IACrE,CAAC;IAED,iBAAiB,CAAC,OAAiC;QACjD,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAEvC,MAAM,EAAC,KAAK,EAAE,IAAI,EAAC,GAAG,OAAO,CAAC;QAE9B,iCAAiC;QACjC,2DAA2D;QAC3D,WAAW;QACX,MAAM,aAAa,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,aAAa,EAAE,SAAS,CAAC,CAAC;QAC/E,IAAI;QAEJ,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAK,IAAoB,CAAC,KAAK,CAAC;QAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAK,IAAoB,CAAC,MAAM,CAAC;QAE9D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,OAAO,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC;IACzB,CAAC;IAEQ,UAAU,CAAC,OAAgC;QAClD,SAAS;IACX,CAAC;IAED,aAAa,CAAC,OAA6B;QACzC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,oBAAoB;QAClB,SAAS;IACX,CAAC;CACF"}
@@ -3,6 +3,7 @@ import { TransformFeedback, Buffer, BufferRange } from '@luma.gl/core';
3
3
  import type { NullDevice } from "../null-device.js";
4
4
  export declare class NullTransformFeedback extends TransformFeedback {
5
5
  readonly device: NullDevice;
6
+ readonly handle: null;
6
7
  readonly layout: ShaderLayout;
7
8
  buffers: Record<string, Buffer | BufferRange>;
8
9
  constructor(device: NullDevice, props: TransformFeedbackProps);
@@ -1 +1 @@
1
- {"version":3,"file":"null-transform-feedback.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-transform-feedback.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,iBAAiB,EAAE,YAAY,EAAE,sBAAsB,EAAC,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAC,iBAAiB,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,EAAC,UAAU,EAAC,0BAAuB;AAE/C,qBAAa,qBAAsB,SAAQ,iBAAiB;IAC1D,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAE5B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,CAAM;gBAEvC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,sBAAsB;IAY7D,KAAK,CAAC,QAAQ,GAAE,iBAAgC,GAAG,IAAI;IAEvD,GAAG,IAAI,IAAI;IAEX,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,IAAI;IAQ/D,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAIrF,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI;CAGxE"}
1
+ {"version":3,"file":"null-transform-feedback.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-transform-feedback.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,iBAAiB,EAAE,YAAY,EAAE,sBAAsB,EAAC,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAC,iBAAiB,EAAE,MAAM,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,EAAC,UAAU,EAAC,0BAAuB;AAE/C,qBAAa,qBAAsB,SAAQ,iBAAiB;IAC1D,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,OAAQ;IAEvB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,CAAM;gBAEvC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,sBAAsB;IAY7D,KAAK,CAAC,QAAQ,GAAE,iBAAgC,GAAG,IAAI;IAEvD,GAAG,IAAI,IAAI;IAEX,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,IAAI;IAQ/D,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAIrF,SAAS,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI;CAGxE"}
@@ -4,6 +4,7 @@
4
4
  import { TransformFeedback } from '@luma.gl/core';
5
5
  export class NullTransformFeedback extends TransformFeedback {
6
6
  device;
7
+ handle = null;
7
8
  layout;
8
9
  buffers = {};
9
10
  constructor(device, props) {
@@ -1 +1 @@
1
- {"version":3,"file":"null-transform-feedback.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-transform-feedback.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,iBAAiB,EAAsB,MAAM,eAAe,CAAC;AAGrE,MAAM,OAAO,qBAAsB,SAAQ,iBAAiB;IACjD,MAAM,CAAa;IAEnB,MAAM,CAAe;IAC9B,OAAO,GAAyC,EAAE,CAAC;IAEnD,YAAY,MAAkB,EAAE,KAA6B;QAC3D,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAEhC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,WAA8B,YAAY,IAAS,CAAC;IAE1D,GAAG,KAAU,CAAC;IAEd,UAAU,CAAC,OAA6C;QACtD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAElB,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,SAAS,CAAC,cAA+B,EAAE,aAAmC;QAC5E,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,aAAa,CAAC;IAC/C,CAAC;IAED,SAAS,CAAC,cAA+B;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;IAC9C,CAAC;CACF"}
1
+ {"version":3,"file":"null-transform-feedback.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-transform-feedback.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,iBAAiB,EAAsB,MAAM,eAAe,CAAC;AAGrE,MAAM,OAAO,qBAAsB,SAAQ,iBAAiB;IACjD,MAAM,CAAa;IACnB,MAAM,GAAG,IAAI,CAAC;IAEd,MAAM,CAAe;IAC9B,OAAO,GAAyC,EAAE,CAAC;IAEnD,YAAY,MAAkB,EAAE,KAA6B;QAC3D,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAEhC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,WAA8B,YAAY,IAAS,CAAC;IAE1D,GAAG,KAAU,CAAC;IAEd,UAAU,CAAC,OAA6C;QACtD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAElB,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,SAAS,CAAC,cAA+B,EAAE,aAAmC;QAC5E,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,aAAa,CAAC;IAC/C,CAAC;IAED,SAAS,CAAC,cAA+B;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;IAC9C,CAAC;CACF"}
@@ -4,6 +4,7 @@ import { VertexArray } from '@luma.gl/core';
4
4
  import type { NullDevice } from "../null-device.js";
5
5
  export declare class NullVertexArray extends VertexArray {
6
6
  device: NullDevice;
7
+ readonly handle: null;
7
8
  constructor(device: NullDevice, props: VertexArrayProps);
8
9
  setIndexBuffer(indexBuffer: Buffer | null): void;
9
10
  /** Set a location in vertex attributes array to a buffer, enables the location, sets divisor */
@@ -1 +1 @@
1
- {"version":3,"file":"null-vertex-array.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-vertex-array.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAC,UAAU,EAAC,0BAAuB;AAE/C,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,MAAM,EAAE,UAAU,CAAC;gBAGP,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB;IAKvD,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIhD,gGAAgG;IAChG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAQ1D,gBAAgB,IAAI,IAAI;IAExB,iBAAiB,IAAI,IAAI;IAEhB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;CAC5E"}
1
+ {"version":3,"file":"null-vertex-array.d.ts","sourceRoot":"","sources":["../../../src/null-device/resources/null-vertex-array.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAC,MAAM,EAAE,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAC,UAAU,EAAC,0BAAuB;AAE/C,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,MAAM,OAAQ;gBAGX,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,gBAAgB;IAKvD,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIhD,gGAAgG;IAChG,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAQ1D,gBAAgB,IAAI,IAAI;IAExB,iBAAiB,IAAI,IAAI;IAEhB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;CAC5E"}
@@ -4,6 +4,7 @@
4
4
  import { VertexArray } from '@luma.gl/core';
5
5
  export class NullVertexArray extends VertexArray {
6
6
  device;
7
+ handle = null;
7
8
  // Create a VertexArray
8
9
  constructor(device, props) {
9
10
  super(device, props);
@@ -1 +1 @@
1
- {"version":3,"file":"null-vertex-array.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-vertex-array.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAI1C,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC9C,MAAM,CAAa;IAEnB,uBAAuB;IACvB,YAAY,MAAkB,EAAE,KAAuB;QACrD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,cAAc,CAAC,WAA0B;QACvC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,gGAAgG;IAChG,SAAS,CAAC,QAAgB,EAAE,eAAuB;QACjD,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC;IAC9C,CAAC;IAED,gBAAgB,KAAU,CAAC;IAE3B,iBAAiB,KAAU,CAAC;IAEnB,gBAAgB,CAAC,QAAgB,EAAE,KAAwB,IAAS,CAAC;CAC/E"}
1
+ {"version":3,"file":"null-vertex-array.js","sourceRoot":"","sources":["../../../src/null-device/resources/null-vertex-array.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAIpC,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAI1C,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC9C,MAAM,CAAa;IACV,MAAM,GAAG,IAAI,CAAC;IAEvB,uBAAuB;IACvB,YAAY,MAAkB,EAAE,KAAuB;QACrD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,cAAc,CAAC,WAA0B;QACvC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,gGAAgG;IAChG,SAAS,CAAC,QAAgB,EAAE,eAAuB;QACjD,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC;IAC9C,CAAC;IAED,gBAAgB,KAAU,CAAC;IAE3B,iBAAiB,KAAU,CAAC;IAEnB,gBAAgB,CAAC,QAAgB,EAAE,KAAwB,IAAS,CAAC;CAC/E"}
@@ -23,7 +23,7 @@ export class PerformanceTestRunner extends TestRunner {
23
23
  this._fps?.timeStart();
24
24
  // @ts-ignore TODO
25
25
  if (this._fps.count > this.testOptions.maxFramesToRender) {
26
- animationProps.done();
26
+ animationProps['done']();
27
27
  }
28
28
  return true;
29
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"performance-test-runner.js","sourceRoot":"","sources":["../src/performance-test-runner.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,KAAK,EAAO,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,UAAU,EAAsC,yBAAsB;AAI9E,MAAM,OAAO,qBAAsB,SAAQ,UAAU;IAC3C,MAAM,GAAiB,IAAI,CAAC;IAC5B,IAAI,GAAgB,IAAI,CAAC;IAEjC,YAAY,KAAiC;QAC3C,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE;YAC9B,iBAAiB,EAAE,EAAE;YACrB,SAAS,EAAE,EAAE;SACd,CAAC,CAAC;IACL,CAAC;IAEQ,YAAY,CAAC,QAA4B;QAChD,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,EAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEQ,YAAY,CAAC,cAAmC;QACvD,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QAEvB,kBAAkB;QAClB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;YACzD,cAAc,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,MAAM,CAAC,QAA4B;QAC1C,mBAAmB;QACnB,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAEpC,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,EAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAC,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,EAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAC,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"performance-test-runner.js","sourceRoot":"","sources":["../src/performance-test-runner.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,KAAK,EAAO,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,UAAU,EAAsC,yBAAsB;AAI9E,MAAM,OAAO,qBAAsB,SAAQ,UAAU;IAC3C,MAAM,GAAiB,IAAI,CAAC;IAC5B,IAAI,GAAgB,IAAI,CAAC;IAEjC,YAAY,KAAiC;QAC3C,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE;YAC9B,iBAAiB,EAAE,EAAE;YACrB,SAAS,EAAE,EAAE;SACd,CAAC,CAAC;IACL,CAAC;IAEQ,YAAY,CAAC,QAA4B;QAChD,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,EAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEQ,YAAY,CAAC,cAAmC;QACvD,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QAEvB,kBAAkB;QAClB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;YACzD,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,MAAM,CAAC,QAA4B;QAC1C,mBAAmB;QACnB,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAEpC,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,EAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAC,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,EAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAC,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luma.gl/test-utils",
3
- "version": "9.2.0-alpha.1",
3
+ "version": "9.2.0-alpha.3",
4
4
  "description": "Automated WebGL testing utilities with Puppeteer and image diffing",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -36,15 +36,15 @@
36
36
  "pre-build": "echo test utils has no bundle"
37
37
  },
38
38
  "peerDependencies": {
39
- "@luma.gl/core": "9.2.0-alpha.0",
40
- "@luma.gl/engine": "9.2.0-alpha.0",
41
- "@luma.gl/shadertools": "9.2.0-alpha.0",
42
- "@luma.gl/webgl": "9.2.0-alpha.0",
43
- "@luma.gl/webgpu": "9.2.0-alpha.0"
39
+ "@luma.gl/core": "9.2.0-alpha.1",
40
+ "@luma.gl/engine": "9.2.0-alpha.1",
41
+ "@luma.gl/shadertools": "9.2.0-alpha.1",
42
+ "@luma.gl/webgl": "9.2.0-alpha.1",
43
+ "@luma.gl/webgpu": "9.2.0-alpha.1"
44
44
  },
45
45
  "dependencies": {
46
46
  "@probe.gl/env": "^4.0.8",
47
47
  "@probe.gl/stats": "^4.0.8"
48
48
  },
49
- "gitHead": "d6d2f791f2ce96f4b5acb68e05faea62c35440fb"
49
+ "gitHead": "16fcea2620b1fd45cb744de730c2622a724cc15b"
50
50
  }
@@ -9,26 +9,7 @@ import {webgpuAdapter, WebGPUDevice} from '@luma.gl/webgpu';
9
9
  import {nullAdapter} from './null-device/null-adapter';
10
10
  import {NullDevice} from './null-device/null-device';
11
11
 
12
- const DEFAULT_CANVAS_CONTEXT_PROPS: CanvasContextProps = {
13
- width: 1,
14
- height: 1
15
- };
16
-
17
- // TODO - replace with Promise.withResolvers once we upgrade TS baseline
18
- const withResolvers = <T>(): {
19
- promise: Promise<T>;
20
- resolve: (t: T) => void;
21
- reject: (error: Error) => void;
22
- } => {
23
- let resolve;
24
- let reject;
25
- const promise = new Promise<T>((_resolve, _reject) => {
26
- resolve = _resolve;
27
- reject = _reject;
28
- });
29
- // @ts-ignore Assigned in callback.
30
- return {promise, resolve, reject};
31
- };
12
+ const DEFAULT_CANVAS_CONTEXT_PROPS: CanvasContextProps = {width: 1, height: 1};
32
13
 
33
14
  /** A null device intended for testing - @note Only available after getTestDevices() has completed */
34
15
  let nullDevicePromise = makeNullTestDevice();
@@ -39,11 +20,26 @@ const webgpuDevicePromise = makeWebGPUTestDevice();
39
20
 
40
21
  /** Includes WebGPU device if available */
41
22
  export async function getTestDevices(
42
- types: ('webgl' | 'webgpu' | 'null' | 'unknown')[] = ['webgl', 'webgpu']
23
+ types: Readonly<('webgl' | 'webgpu' | 'null' | 'unknown')[]> = ['webgl', 'webgpu']
43
24
  ): Promise<Device[]> {
44
- return (
45
- [await getNullTestDevice(), await getWebGLTestDevice(), await getWebGPUTestDevice()] as Device[]
46
- ).filter(device => types.includes(device?.type));
25
+ const promises = types.map(type => getTestDevice(type));
26
+ const devices = await Promise.all(promises);
27
+ return devices.filter(device => device !== null);
28
+ }
29
+
30
+ export async function getTestDevice(
31
+ type: 'webgl' | 'webgpu' | 'null' | 'unknown'
32
+ ): Promise<Device | null> {
33
+ switch (type) {
34
+ case 'webgl':
35
+ return webglDevicePromise;
36
+ case 'webgpu':
37
+ return webgpuDevicePromise;
38
+ case 'null':
39
+ return nullDevicePromise;
40
+ case 'unknown':
41
+ return null;
42
+ }
47
43
  }
48
44
 
49
45
  /** returns WebGPU device promise, if available */
@@ -70,7 +66,7 @@ async function makeWebGPUTestDevice(): Promise<WebGPUDevice | null> {
70
66
  adapters: [webgpuAdapter],
71
67
  createCanvasContext: DEFAULT_CANVAS_CONTEXT_PROPS,
72
68
  debug: true
73
- })) as WebGPUDevice;
69
+ })) as unknown as WebGPUDevice;
74
70
  webgpuDeviceResolvers.resolve(webgpuDevice);
75
71
  } catch (error) {
76
72
  log.error(String(error))();
@@ -91,7 +87,7 @@ async function makeWebGLTestDevice(): Promise<WebGLDevice> {
91
87
  createCanvasContext: DEFAULT_CANVAS_CONTEXT_PROPS,
92
88
  debug: true,
93
89
  debugWebGL: true
94
- })) as WebGLDevice;
90
+ })) as unknown as WebGLDevice;
95
91
  webglDeviceResolvers.resolve(webglDevice);
96
92
  } catch (error) {
97
93
  log.error(String(error))();
@@ -107,12 +103,12 @@ async function makeNullTestDevice(): Promise<NullDevice> {
107
103
  try {
108
104
  const nullDevice = (await luma.createDevice({
109
105
  id: 'null-test-device',
110
- type: 'unknown',
106
+ type: 'null',
111
107
  adapters: [nullAdapter],
112
108
  createCanvasContext: DEFAULT_CANVAS_CONTEXT_PROPS,
113
109
  debug: true,
114
110
  debugWebGL: true
115
- })) as NullDevice;
111
+ })) as unknown as NullDevice;
116
112
  nullDeviceResolvers.resolve(nullDevice);
117
113
  } catch (error) {
118
114
  log.error(String(error))();
@@ -121,3 +117,21 @@ async function makeNullTestDevice(): Promise<NullDevice> {
121
117
  }
122
118
  return nullDeviceResolvers.promise;
123
119
  }
120
+
121
+ // HELPERS
122
+
123
+ // TODO - replace with Promise.withResolvers once we upgrade TS baseline
124
+ function withResolvers<T>(): {
125
+ promise: Promise<T>;
126
+ resolve: (t: T) => void;
127
+ reject: (error: Error) => void;
128
+ } {
129
+ let resolve;
130
+ let reject;
131
+ const promise = new Promise<T>((_resolve, _reject) => {
132
+ resolve = _resolve;
133
+ reject = _reject;
134
+ });
135
+ // @ts-ignore Assigned in callback.
136
+ return {promise, resolve, reject};
137
+ }
package/src/index.ts CHANGED
@@ -10,6 +10,7 @@ export {PerformanceTestRunner} from './performance-test-runner';
10
10
  // TEST DEVICES
11
11
  export {
12
12
  getTestDevices,
13
+ getTestDevice,
13
14
  getWebGLTestDevice,
14
15
  getWebGPUTestDevice,
15
16
  getNullTestDevice