@luma.gl/webgpu 9.1.0-alpha.9 → 9.1.0-beta.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 (85) hide show
  1. package/dist/adapter/helpers/accessor-to-format.js +1 -0
  2. package/dist/adapter/helpers/accessor-to-format.js.map +1 -0
  3. package/dist/adapter/helpers/convert-texture-format.js +1 -0
  4. package/dist/adapter/helpers/convert-texture-format.js.map +1 -0
  5. package/dist/adapter/helpers/get-bind-group.d.ts +3 -1
  6. package/dist/adapter/helpers/get-bind-group.d.ts.map +1 -1
  7. package/dist/adapter/helpers/get-bind-group.js +18 -4
  8. package/dist/adapter/helpers/get-bind-group.js.map +1 -0
  9. package/dist/adapter/helpers/get-vertex-buffer-layout.js +4 -3
  10. package/dist/adapter/helpers/get-vertex-buffer-layout.js.map +1 -0
  11. package/dist/adapter/helpers/webgpu-parameters.js +1 -0
  12. package/dist/adapter/helpers/webgpu-parameters.js.map +1 -0
  13. package/dist/adapter/resources/webgpu-buffer.js +1 -0
  14. package/dist/adapter/resources/webgpu-buffer.js.map +1 -0
  15. package/dist/adapter/resources/webgpu-command-encoder.d.ts +4 -4
  16. package/dist/adapter/resources/webgpu-command-encoder.d.ts.map +1 -1
  17. package/dist/adapter/resources/webgpu-command-encoder.js +22 -4
  18. package/dist/adapter/resources/webgpu-command-encoder.js.map +1 -0
  19. package/dist/adapter/resources/webgpu-compute-pass.js +1 -0
  20. package/dist/adapter/resources/webgpu-compute-pass.js.map +1 -0
  21. package/dist/adapter/resources/webgpu-compute-pipeline.js +1 -0
  22. package/dist/adapter/resources/webgpu-compute-pipeline.js.map +1 -0
  23. package/dist/adapter/resources/webgpu-external-texture.js +1 -0
  24. package/dist/adapter/resources/webgpu-external-texture.js.map +1 -0
  25. package/dist/adapter/resources/webgpu-framebuffer.d.ts +1 -0
  26. package/dist/adapter/resources/webgpu-framebuffer.d.ts.map +1 -1
  27. package/dist/adapter/resources/webgpu-framebuffer.js +4 -0
  28. package/dist/adapter/resources/webgpu-framebuffer.js.map +1 -0
  29. package/dist/adapter/resources/webgpu-query-set.js +1 -0
  30. package/dist/adapter/resources/webgpu-query-set.js.map +1 -0
  31. package/dist/adapter/resources/webgpu-render-pass.d.ts.map +1 -1
  32. package/dist/adapter/resources/webgpu-render-pass.js +19 -6
  33. package/dist/adapter/resources/webgpu-render-pass.js.map +1 -0
  34. package/dist/adapter/resources/webgpu-render-pipeline.d.ts +1 -0
  35. package/dist/adapter/resources/webgpu-render-pipeline.d.ts.map +1 -1
  36. package/dist/adapter/resources/webgpu-render-pipeline.js +42 -6
  37. package/dist/adapter/resources/webgpu-render-pipeline.js.map +1 -0
  38. package/dist/adapter/resources/webgpu-sampler.d.ts +1 -1
  39. package/dist/adapter/resources/webgpu-sampler.d.ts.map +1 -1
  40. package/dist/adapter/resources/webgpu-sampler.js +15 -6
  41. package/dist/adapter/resources/webgpu-sampler.js.map +1 -0
  42. package/dist/adapter/resources/webgpu-shader.d.ts +2 -2
  43. package/dist/adapter/resources/webgpu-shader.d.ts.map +1 -1
  44. package/dist/adapter/resources/webgpu-shader.js +23 -19
  45. package/dist/adapter/resources/webgpu-shader.js.map +1 -0
  46. package/dist/adapter/resources/webgpu-texture-view.js +1 -0
  47. package/dist/adapter/resources/webgpu-texture-view.js.map +1 -0
  48. package/dist/adapter/resources/webgpu-texture.d.ts +2 -5
  49. package/dist/adapter/resources/webgpu-texture.d.ts.map +1 -1
  50. package/dist/adapter/resources/webgpu-texture.js +17 -38
  51. package/dist/adapter/resources/webgpu-texture.js.map +1 -0
  52. package/dist/adapter/resources/webgpu-vertex-array.d.ts.map +1 -1
  53. package/dist/adapter/resources/webgpu-vertex-array.js +3 -2
  54. package/dist/adapter/resources/webgpu-vertex-array.js.map +1 -0
  55. package/dist/adapter/webgpu-adapter.d.ts.map +1 -1
  56. package/dist/adapter/webgpu-adapter.js +3 -6
  57. package/dist/adapter/webgpu-adapter.js.map +1 -0
  58. package/dist/adapter/webgpu-canvas-context.d.ts +8 -9
  59. package/dist/adapter/webgpu-canvas-context.d.ts.map +1 -1
  60. package/dist/adapter/webgpu-canvas-context.js +56 -60
  61. package/dist/adapter/webgpu-canvas-context.js.map +1 -0
  62. package/dist/adapter/webgpu-device.d.ts +10 -12
  63. package/dist/adapter/webgpu-device.d.ts.map +1 -1
  64. package/dist/adapter/webgpu-device.js +41 -36
  65. package/dist/adapter/webgpu-device.js.map +1 -0
  66. package/dist/dist.dev.js +242 -179
  67. package/dist/dist.min.js +5 -1
  68. package/dist/index.cjs +222 -166
  69. package/dist/index.cjs.map +4 -4
  70. package/dist/index.js +1 -0
  71. package/dist/index.js.map +1 -0
  72. package/package.json +3 -3
  73. package/src/adapter/helpers/get-bind-group.ts +23 -4
  74. package/src/adapter/helpers/get-vertex-buffer-layout.ts +3 -3
  75. package/src/adapter/resources/webgpu-command-encoder.ts +26 -8
  76. package/src/adapter/resources/webgpu-framebuffer.ts +4 -0
  77. package/src/adapter/resources/webgpu-render-pass.ts +29 -14
  78. package/src/adapter/resources/webgpu-render-pipeline.ts +45 -6
  79. package/src/adapter/resources/webgpu-sampler.ts +16 -6
  80. package/src/adapter/resources/webgpu-shader.ts +23 -23
  81. package/src/adapter/resources/webgpu-texture.ts +31 -59
  82. package/src/adapter/resources/webgpu-vertex-array.ts +7 -2
  83. package/src/adapter/webgpu-adapter.ts +2 -7
  84. package/src/adapter/webgpu-canvas-context.ts +67 -69
  85. package/src/adapter/webgpu-device.ts +51 -44
@@ -8,10 +8,10 @@ export declare class WebGPUShader extends Shader {
8
8
  readonly device: WebGPUDevice;
9
9
  readonly handle: GPUShaderModule;
10
10
  constructor(device: WebGPUDevice, props: ShaderProps);
11
- _checkCompilationError(errorScope: Promise<GPUError | null>): Promise<void>;
11
+ get asyncCompilationStatus(): Promise<any>;
12
+ _checkCompilationError(): Promise<void>;
12
13
  destroy(): void;
13
14
  /** Returns compilation info for this shader */
14
15
  getCompilationInfo(): Promise<readonly CompilerMessage[]>;
15
- protected createHandle(): GPUShaderModule;
16
16
  }
17
17
  //# sourceMappingURL=webgpu-shader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webgpu-shader.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgpu-shader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,WAAW,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AAChE,OAAO,EAAC,MAAM,EAAM,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAC,YAAY,EAAC,4BAAyB;AAEnD;;GAEG;AACH,qBAAa,YAAa,SAAQ,MAAM;IACtC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;gBAErB,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW;IAY9C,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxE,OAAO,IAAI,IAAI;IAOxB,+CAA+C;IACzC,kBAAkB,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAO/D,SAAS,CAAC,YAAY,IAAI,eAAe;CAU1C"}
1
+ {"version":3,"file":"webgpu-shader.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgpu-shader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,WAAW,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AAChE,OAAO,EAAC,MAAM,EAAM,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAC,YAAY,EAAC,4BAAyB;AAEnD;;GAEG;AACH,qBAAa,YAAa,SAAQ,MAAM;IACtC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;gBAErB,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW;IAqBpD,IAAI,sBAAsB,IAAI,OAAO,CAAC,GAAG,CAAC,CAEzC;IAEK,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAcpC,OAAO,IAAI,IAAI;IAOxB,+CAA+C;IACzC,kBAAkB,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;CAIhE"}
@@ -11,21 +11,33 @@ export class WebGPUShader extends Shader {
11
11
  constructor(device, props) {
12
12
  super(device, props);
13
13
  this.device = device;
14
+ const isGLSL = props.source.includes('#version');
15
+ if (this.props.language === 'glsl' || isGLSL) {
16
+ throw new Error('GLSL shaders are not supported in WebGPU');
17
+ }
14
18
  this.device.handle.pushErrorScope('validation');
15
- this.handle = this.props.handle || this.createHandle();
19
+ this.handle = this.props.handle || this.device.handle.createShaderModule({ code: props.source });
20
+ this.device.handle.popErrorScope().then((error) => {
21
+ if (error) {
22
+ log.error(`${this} creation failed:\n"${error.message}"`, this, this.props.source)();
23
+ }
24
+ });
16
25
  this.handle.label = this.props.id;
17
- this._checkCompilationError(this.device.handle.popErrorScope());
26
+ this._checkCompilationError();
27
+ }
28
+ get asyncCompilationStatus() {
29
+ return this.getCompilationInfo().then(() => this.compilationStatus);
18
30
  }
19
- async _checkCompilationError(errorScope) {
20
- const error = (await errorScope);
21
- if (error) {
22
- // The `Shader` base class will determine if debug window should be opened based on props
23
- this.debugShader();
24
- const shaderLog = await this.getCompilationInfo();
25
- log.error(`Shader compilation error: ${error.message}`, shaderLog)();
31
+ async _checkCompilationError() {
32
+ const shaderLog = await this.getCompilationInfo();
33
+ const hasErrors = Boolean(shaderLog.find(msg => msg.type === 'error'));
34
+ this.compilationStatus = hasErrors ? 'error' : 'success';
35
+ this.debugShader();
36
+ if (this.compilationStatus === 'error') {
37
+ log.error(`Shader compilation error`, shaderLog)();
26
38
  // Note: Even though this error is asynchronous and thrown after the constructor completes,
27
39
  // it will result in a useful stack trace leading back to the constructor
28
- throw new Error(`Shader compilation error: ${error.message}`);
40
+ // throw new Error(`Shader compilation error`);
29
41
  }
30
42
  }
31
43
  destroy() {
@@ -39,13 +51,5 @@ export class WebGPUShader extends Shader {
39
51
  const compilationInfo = await this.handle.getCompilationInfo();
40
52
  return compilationInfo.messages;
41
53
  }
42
- // PRIVATE METHODS
43
- createHandle() {
44
- const { source } = this.props;
45
- const isGLSL = source.includes('#version');
46
- if (this.props.language === 'glsl' || isGLSL) {
47
- throw new Error('GLSL shaders are not supported in WebGPU');
48
- }
49
- return this.device.handle.createShaderModule({ code: source });
50
- }
51
54
  }
55
+ //# sourceMappingURL=webgpu-shader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu-shader.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgpu-shader.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,MAAM,EAAE,GAAG,EAAC,MAAM,eAAe,CAAC;AAG1C;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,MAAM;IAC7B,MAAM,CAAe;IACrB,MAAM,CAAkB;IAEjC,YAAY,MAAoB,EAAE,KAAkB;QAClD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,MAAM,IAAI,MAAM,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAC,CAAC,CAAC;QAC/F,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,KAAsB,EAAE,EAAE;YACjE,IAAI,KAAK,EAAE,CAAC;gBACV,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,uBAAuB,KAAK,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACvF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACzD,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,IAAI,CAAC,iBAAiB,KAAK,OAAO,EAAE,CAAC;YACvC,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,SAAS,CAAC,EAAE,CAAC;YACnD,2FAA2F;YAC3F,yEAAyE;YACzE,+CAA+C;QACjD,CAAC;IACH,CAAC;IAEQ,OAAO;QACd,0DAA0D;QAC1D,yBAAyB;QACzB,4BAA4B;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,+CAA+C;IAC/C,KAAK,CAAC,kBAAkB;QACtB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC/D,OAAO,eAAe,CAAC,QAAQ,CAAC;IAClC,CAAC;CACF"}
@@ -33,3 +33,4 @@ export class WebGPUTextureView extends TextureView {
33
33
  this.handle = null;
34
34
  }
35
35
  }
36
+ //# sourceMappingURL=webgpu-texture-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu-texture-view.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgpu-texture-view.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,WAAW,EAAmB,MAAM,eAAe,CAAC;AAuB5D;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IACvC,MAAM,CAAe;IACrB,MAAM,CAAiB;IACvB,OAAO,CAAgB;IAEhC,YAAY,MAAoB,EAAE,KAAwD;QACxF,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAE7B,IAAI,CAAC,MAAM;YACT,IAAI,CAAC,MAAM;gBACX,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;oBAC7B,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAqB;oBACjE,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS;oBACpD,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,wBAAwB;oBAC5D,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,wBAAwB;oBAC9D,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC,wBAAwB;iBAChE,CAAC,CAAC;QACL,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACpC,CAAC;IAEQ,OAAO;QACd,gDAAgD;QAChD,yBAAyB;QACzB,4BAA4B;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;CACF"}
@@ -6,8 +6,6 @@ import { WebGPUTextureView } from "./webgpu-texture-view.js";
6
6
  export declare class WebGPUTexture extends Texture {
7
7
  readonly device: WebGPUDevice;
8
8
  readonly handle: GPUTexture;
9
- height: number;
10
- width: number;
11
9
  sampler: WebGPUSampler;
12
10
  view: WebGPUTextureView;
13
11
  constructor(device: WebGPUDevice, props: TextureProps);
@@ -34,9 +32,8 @@ export declare class WebGPUTexture extends Texture {
34
32
  width: number;
35
33
  height: number;
36
34
  };
37
- /** Set image */
38
- setImage(options: {
39
- source: ExternalImage;
35
+ copyExternalImage(options: {
36
+ image: ExternalImage;
40
37
  width?: number;
41
38
  height?: number;
42
39
  depth?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"webgpu-texture.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgpu-texture.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,YAAY,EAKZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAGtC,OAAO,KAAK,EAAC,YAAY,EAAC,4BAAyB;AACnD,OAAO,EAAC,aAAa,EAAC,4BAAyB;AAC/C,OAAO,EAAC,iBAAiB,EAAC,iCAA8B;AAWxD,qBAAa,aAAc,SAAQ,OAAO;IACxC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAEnB,MAAM,EAAE,MAAM,CAAK;IACnB,KAAK,EAAE,MAAM,CAAK;IAE3B,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,EAAE,iBAAiB,CAAC;gBASZ,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY;IAiB5C,OAAO,IAAI,IAAI;IAMxB,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB;IAItD,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IA4C/C,SAAS,CAAC,YAAY,IAAI,UAAU;IAsBpC,kEAAkE;IAClE,oBAAoB,IAAI,cAAc;IAItC;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI;IAMjD,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAI3C,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI/E,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI/E,kBAAkB,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAI/D,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAIjD,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAIzD,OAAO,CAAC,OAAO,EAAE;QAAC,IAAI,EAAE,GAAG,CAAA;KAAC,GAAG;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC;IA2B9D,gBAAgB;IAChB,QAAQ,CAAC,OAAO,EAAE;QAChB,MAAM,EAAE,aAAa,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,MAAM,CAAC,EAAE,KAAK,GAAG,cAAc,GAAG,YAAY,CAAC;QAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC9B,GAAG;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC;CA6GpC"}
1
+ {"version":3,"file":"webgpu-texture.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgpu-texture.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,YAAY,EAKZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAGtC,OAAO,KAAK,EAAC,YAAY,EAAC,4BAAyB;AACnD,OAAO,EAAC,aAAa,EAAC,4BAAyB;AAC/C,OAAO,EAAC,iBAAiB,EAAC,iCAA8B;AAWxD,qBAAa,aAAc,SAAQ,OAAO;IACxC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAE5B,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,EAAE,iBAAiB,CAAC;gBAEZ,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY;IAa5C,OAAO,IAAI,IAAI;IAMxB,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB;IAItD,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IA4C/C,SAAS,CAAC,YAAY,IAAI,UAAU;IAsBpC,kEAAkE;IAClE,oBAAoB,IAAI,cAAc;IAItC;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI;IAMjD,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAI3C,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI/E,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI/E,kBAAkB,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAI/D,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAIjD,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAIzD,OAAO,CAAC,OAAO,EAAE;QAAC,IAAI,EAAE,GAAG,CAAA;KAAC,GAAG;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC;IAW9D,iBAAiB,CAAC,OAAO,EAAE;QACzB,KAAK,EAAE,aAAa,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,MAAM,CAAC,EAAE,KAAK,GAAG,cAAc,GAAG,YAAY,CAAC;QAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC9B,GAAG;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC;CAgHpC"}
@@ -13,28 +13,17 @@ const BASE_DIMENSIONS = {
13
13
  export class WebGPUTexture extends Texture {
14
14
  device;
15
15
  handle;
16
- height = 1;
17
- width = 1;
18
16
  sampler;
19
17
  view;
20
- // static async createFromImageURL(src, usage = 0) {
21
- // const img = document.createElement('img');
22
- // img.src = src;
23
- // await img.decode();
24
- // return WebGPUTexture(img, usage);
25
- // }
26
18
  constructor(device, props) {
27
19
  super(device, props);
28
20
  this.device = device;
29
- if (props.data instanceof Promise) {
30
- props.data.then(resolvedImageData => {
31
- // @ts-expect-error
32
- this.props = { ...this.props, data: resolvedImageData };
33
- this.initialize(this.props);
34
- });
35
- return;
21
+ // Texture base class strips out the data prop, so we need to add it back in
22
+ const propsWithData = { ...this.props };
23
+ if (props.data) {
24
+ propsWithData.data = props.data;
36
25
  }
37
- this.initialize(props);
26
+ this.initialize(propsWithData);
38
27
  }
39
28
  destroy() {
40
29
  this.handle?.destroy();
@@ -50,7 +39,7 @@ export class WebGPUTexture extends Texture {
50
39
  this.handle.label ||= this.id;
51
40
  if (this.props.data) {
52
41
  if (Texture.isExternalImage(this.props.data)) {
53
- this.setImage({ source: this.props.data });
42
+ this.copyExternalImage({ image: this.props.data });
54
43
  }
55
44
  else {
56
45
  this.setData({ data: this.props.data });
@@ -135,36 +124,25 @@ export class WebGPUTexture extends Texture {
135
124
  throw new Error('not implemented');
136
125
  }
137
126
  setData(options) {
138
- let source = options.data;
139
127
  if (ArrayBuffer.isView(options.data)) {
140
128
  const clampedArray = new Uint8ClampedArray(options.data.buffer);
141
129
  // TODO - pass through src data color space as ImageData Options?
142
- source = new ImageData(clampedArray, this.width, this.height);
130
+ const image = new ImageData(clampedArray, this.width, this.height);
131
+ return this.copyExternalImage({ image });
143
132
  }
144
- return this.setImage({ source });
133
+ throw new Error('Texture.setData: Use CommandEncoder to upload data to texture in WebGPU');
145
134
  }
146
- // setDataFromTypedArray(data): this {
147
- // const textureDataBuffer = this.device.handle.createBuffer({
148
- // size: data.byteLength,
149
- // usage: Buffer.COPY_DST | Buffer.COPY_SRC,
150
- // mappedAtCreation: true
151
- // });
152
- // new Uint8Array(textureDataBuffer.getMappedRange()).set(data);
153
- // textureDataBuffer.unmap();
154
- // this.setBuffer(textureDataBuffer);
155
- // textureDataBuffer.destroy();
156
- // return this;
157
- // }
158
- /** Set image */
159
- setImage(options) {
160
- const size = Texture.getExternalImageSize(options.source);
161
- const { source, width = size.width, height = size.height, depth = 1, sourceX = 0, sourceY = 0, mipLevel = 0, x = 0, y = 0, z = 0, aspect = 'all', colorSpace = 'srgb', premultipliedAlpha = false } = options;
135
+ copyExternalImage(options) {
136
+ const size = Texture.getExternalImageSize(options.image);
137
+ const opts = { ...Texture.defaultCopyExternalImageOptions, ...size, ...options };
138
+ const { image, sourceX, sourceY, width, height, depth, mipLevel, x, y, z, aspect, colorSpace, premultipliedAlpha, flipY } = opts;
162
139
  // TODO - max out width
163
140
  this.device.handle.queue.copyExternalImageToTexture(
164
141
  // source: GPUImageCopyExternalImage
165
142
  {
166
- source,
167
- origin: [sourceX, sourceY]
143
+ source: image,
144
+ origin: [sourceX, sourceY],
145
+ flipY
168
146
  },
169
147
  // destination: GPUImageCopyTextureTagged
170
148
  {
@@ -180,3 +158,4 @@ export class WebGPUTexture extends Texture {
180
158
  return { width, height };
181
159
  }
182
160
  }
161
+ //# sourceMappingURL=webgpu-texture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu-texture.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgpu-texture.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAEtC,OAAO,EAAC,sBAAsB,EAAC,6CAA0C;AAEzE,OAAO,EAAC,aAAa,EAAC,4BAAyB;AAC/C,OAAO,EAAC,iBAAiB,EAAC,iCAA8B;AAExD,MAAM,eAAe,GAAuC;IAC1D,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,UAAU,EAAE,IAAI;IAChB,IAAI,EAAE,IAAI;IACV,YAAY,EAAE,IAAI;IAClB,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,MAAM,OAAO,aAAc,SAAQ,OAAO;IAC/B,MAAM,CAAe;IACrB,MAAM,CAAa;IAE5B,OAAO,CAAgB;IACvB,IAAI,CAAoB;IAExB,YAAY,MAAoB,EAAE,KAAmB;QACnD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,4EAA4E;QAC5E,MAAM,aAAa,GAAG,EAAC,GAAG,IAAI,CAAC,KAAK,EAAC,CAAC;QACtC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAEQ,OAAO;QACd,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QACvB,4BAA4B;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,UAAU,CAAC,KAAuB;QAChC,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAC,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;IACvE,CAAC;IAES,UAAU,CAAC,KAAmB;QACtC,mBAAmB;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;QAE9B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,IAAI,CAAC,iBAAiB,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAC,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAC,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACjC,6DAA6D;QAC7D,4DAA4D;QAC5D,kDAAkD;QAClD,8CAA8C;QAC9C,0CAA0C;QAC1C,oCAAoC;QACpC,kCAAkC;QAElC,qGAAqG;QACrG,kCAAkC;QAClC,IAAI,CAAC,OAAO;YACV,KAAK,CAAC,OAAO,YAAY,aAAa;gBACpC,CAAC,CAAC,KAAK,CAAC,OAAO;gBACf,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAE1D,qEAAqE;QACrE,iEAAiE;QACjE,mBAAmB;QAEnB,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAC,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;QAC/E,6BAA6B;QAC7B,mCAAmC;QACnC,kBAAkB;QAClB,mBAAmB;QACnB,iBAAiB;QACjB,sBAAsB;QACtB,mBAAmB;IACrB,CAAC;IAES,YAAY;QACpB,8CAA8C;QAC9C,mBAAmB;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;QAC9D,mBAAmB;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;QAEjE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;YACtC,KAAK,EAAE,IAAI,CAAC,EAAE;YACd,IAAI,EAAE;gBACJ,KAAK;gBACL,MAAM;gBACN,kBAAkB,EAAE,IAAI,CAAC,KAAK;aAC/B;YACD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ;YAC7D,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC;YAC1C,MAAM,EAAE,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3C,aAAa,EAAE,IAAI,CAAC,SAAS;YAC7B,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;SAChC,CAAC,CAAC;IACL,CAAC;IAED,kEAAkE;IAClE,oBAAoB;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAC,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,OAA+B;QACxC,IAAI,CAAC,OAAO;YACV,OAAO,YAAY,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,IAAmB;QAClC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,gBAAgB,CAAC,OAAsB,EAAE,KAAc,EAAE,MAAe;QACtE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,gBAAgB,CAAC,OAAsB,EAAE,KAAc,EAAE,MAAe;QACtE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,kBAAkB,CAAC,IAAqB,EAAE,KAAc;QACtD,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,mBAAmB,CAAC,IAAsB;QACxC,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,uBAAuB,CAAC,IAA0B;QAChD,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,OAAoB;QAC1B,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChE,iEAAiE;YACjE,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC7F,CAAC;IAED,iBAAiB,CAAC,OAcjB;QACC,MAAM,IAAI,GAAG,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,EAAC,GAAG,OAAO,CAAC,+BAA+B,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,EAAC,CAAC;QAC/E,MAAM,EACJ,KAAK,EACL,OAAO,EACP,OAAO,EACP,KAAK,EACL,MAAM,EACN,KAAK,EACL,QAAQ,EACR,CAAC,EACD,CAAC,EACD,CAAC,EACD,MAAM,EACN,UAAU,EACV,kBAAkB,EAClB,KAAK,EACN,GAAG,IAAI,CAAC;QAET,uBAAuB;QAEvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B;QACjD,oCAAoC;QACpC;YACE,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;YAC1B,KAAK;SACN;QACD,yCAAyC;QACzC;YACE,OAAO,EAAE,IAAI,CAAC,MAAM;YACpB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACjB,QAAQ;YACR,MAAM;YACN,UAAU;YACV,kBAAkB;SACnB;QACD,wBAAwB;QACxB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CACvB,CAAC;QACF,OAAO,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC;IACzB,CAAC;CAsEF"}
@@ -1 +1 @@
1
- {"version":3,"file":"webgpu-vertex-array.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgpu-vertex-array.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAC,MAAM,eAAe,CAAC;AAChF,OAAO,EAAC,WAAW,EAAM,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAC,YAAY,EAAC,4BAAyB;AAK9C,gCAAgC;AAChC,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAE1C;IAED,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;gBAGX,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB;IAKhD,OAAO,IAAI,IAAI;IAExB;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAK3C,oGAAoG;IACpG,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAS1C,gBAAgB,CACvB,UAAU,EAAE,UAAU,EACtB,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI;IAsBE,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAQxD;;;OAGG;IACH,MAAM,CAAC,gCAAgC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAGjE"}
1
+ {"version":3,"file":"webgpu-vertex-array.d.ts","sourceRoot":"","sources":["../../../src/adapter/resources/webgpu-vertex-array.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAC,MAAM,eAAe,CAAC;AAChF,OAAO,EAAC,WAAW,EAAM,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAC,YAAY,EAAC,4BAAyB;AAK9C,gCAAgC;AAChC,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAE1C;IAED,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;gBAGX,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,gBAAgB;IAKhD,OAAO,IAAI,IAAI;IAExB;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAK3C,oGAAoG;IACpG,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAS1C,gBAAgB,CACvB,UAAU,EAAE,UAAU,EACtB,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI;IA2BE,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAQxD;;;OAGG;IACH,MAAM,CAAC,gCAAgC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAGjE"}
@@ -38,7 +38,7 @@ export class WebGPUVertexArray extends VertexArray {
38
38
  const webgpuIndexBuffer = this.indexBuffer;
39
39
  if (webgpuIndexBuffer?.handle) {
40
40
  // Note we can't unset an index buffer
41
- log.warn('setting index buffer', webgpuIndexBuffer?.handle, webgpuIndexBuffer?.indexType)();
41
+ log.info(3, 'setting index buffer', webgpuIndexBuffer?.handle, webgpuIndexBuffer?.indexType)();
42
42
  webgpuRenderPass.handle.setIndexBuffer(webgpuIndexBuffer?.handle,
43
43
  // @ts-expect-error TODO - we must enforce type
44
44
  webgpuIndexBuffer?.indexType);
@@ -46,7 +46,7 @@ export class WebGPUVertexArray extends VertexArray {
46
46
  for (let location = 0; location < this.maxVertexAttributes; location++) {
47
47
  const webgpuBuffer = this.attributes[location];
48
48
  if (webgpuBuffer?.handle) {
49
- log.warn(`setting vertex buffer ${location}`, webgpuBuffer?.handle)();
49
+ log.info(3, `setting vertex buffer ${location}`, webgpuBuffer?.handle)();
50
50
  webgpuRenderPass.handle.setVertexBuffer(location, webgpuBuffer?.handle);
51
51
  }
52
52
  }
@@ -66,3 +66,4 @@ export class WebGPUVertexArray extends VertexArray {
66
66
  return getBrowser() === 'Chrome';
67
67
  }
68
68
  }
69
+ //# sourceMappingURL=webgpu-vertex-array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu-vertex-array.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgpu-vertex-array.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,WAAW,EAAE,GAAG,EAAC,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAOzC,gCAAgC;AAChC,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IAChD,IAAa,CAAC,MAAM,CAAC,WAAW,CAAC;QAC/B,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAEQ,MAAM,CAAe;IAC9B,kDAAkD;IACzC,MAAM,CAAQ;IAEvB,uBAAuB;IACvB,YAAY,MAAoB,EAAE,KAAuB;QACvD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEQ,OAAO,KAAU,CAAC;IAE3B;;;OAGG;IACH,cAAc,CAAC,MAAqB;QAClC,8FAA8F;QAC9F,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED,oGAAoG;IACpG,SAAS,CAAC,UAAkB,EAAE,MAAc;QAC1C,sBAAsB;QACtB,oDAAoD;QACpD,2CAA2C;QAC3C,IAAI;QAEJ,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;IACvC,CAAC;IAEQ,gBAAgB,CACvB,UAAsB,EACtB,UAAmB,EACnB,UAAmB;QAEnB,MAAM,gBAAgB,GAAG,UAA8B,CAAC;QACxD,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAA2B,CAAC;QAC3D,IAAI,iBAAiB,EAAE,MAAM,EAAE,CAAC;YAC9B,sCAAsC;YACtC,GAAG,CAAC,IAAI,CACN,CAAC,EACD,sBAAsB,EACtB,iBAAiB,EAAE,MAAM,EACzB,iBAAiB,EAAE,SAAS,CAC7B,EAAE,CAAC;YACJ,gBAAgB,CAAC,MAAM,CAAC,cAAc,CACpC,iBAAiB,EAAE,MAAM;YACzB,+CAA+C;YAC/C,iBAAiB,EAAE,SAAS,CAC7B,CAAC;QACJ,CAAC;QACD,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,QAAQ,EAAE,EAAE,CAAC;YACvE,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAiB,CAAC;YAC/D,IAAI,YAAY,EAAE,MAAM,EAAE,CAAC;gBACzB,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,yBAAyB,QAAQ,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC;gBACzE,gBAAgB,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QACD,oFAAoF;IACtF,CAAC;IAEQ,iBAAiB,CAAC,UAAsB;QAC/C,qCAAqC;QACrC,mFAAmF;QACnF,4EAA4E;IAC9E,CAAC;IAED,qBAAqB;IAErB;;;OAGG;IACH,MAAM,CAAC,gCAAgC,CAAC,MAAc;QACpD,OAAO,UAAU,EAAE,KAAK,QAAQ,CAAC;IACnC,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"webgpu-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/webgpu-adapter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAE,WAAW,EAAqB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAC,YAAY,EAAC,2BAAwB;AAI7C,qBAAa,aAAc,SAAQ,OAAO;IACxC,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,YAAkC;;IAQ/C,mCAAmC;IACnC,WAAW,IAAI,OAAO;IAIhB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA+DjD,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC;CAGvD;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
1
+ {"version":3,"file":"webgpu-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/webgpu-adapter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAE,WAAW,EAAM,MAAM,eAAe,CAAC;AACxD,OAAO,EAAC,YAAY,EAAC,2BAAwB;AAI7C,qBAAa,aAAc,SAAQ,OAAO;IACxC,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,YAAkC;;IAQ/C,mCAAmC;IACnC,WAAW,IAAI,OAAO;IAIhB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA0DjD,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC;CAGvD;AAED,eAAO,MAAM,aAAa,eAAsB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  // luma.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- import { Adapter, CanvasContext, log } from '@luma.gl/core';
4
+ import { Adapter, log } from '@luma.gl/core';
5
5
  import { WebGPUDevice } from "./webgpu-device.js";
6
6
  // / <reference types="@webgpu/types" />
7
7
  export class WebGPUAdapter extends Adapter {
@@ -32,7 +32,7 @@ export class WebGPUAdapter extends Adapter {
32
32
  log.probe(2, 'Adapter available', adapterInfo)();
33
33
  const requiredFeatures = [];
34
34
  const requiredLimits = {};
35
- if (props.requestMaxLimits) {
35
+ if (props._requestMaxLimits) {
36
36
  // Require all features
37
37
  requiredFeatures.push(...Array.from(adapter.features));
38
38
  // Require all limits
@@ -51,10 +51,6 @@ export class WebGPUAdapter extends Adapter {
51
51
  requiredLimits
52
52
  });
53
53
  log.probe(1, 'GPUDevice available')();
54
- if (typeof props.canvas === 'string') {
55
- await CanvasContext.pageLoaded;
56
- log.probe(1, 'DOM is loaded')();
57
- }
58
54
  const device = new WebGPUDevice(props, gpuDevice, adapter, adapterInfo);
59
55
  log.probe(1, 'Device created. For more info, set chrome://flags/#enable-webgpu-developer-features')();
60
56
  log.table(1, device.info)();
@@ -66,3 +62,4 @@ export class WebGPUAdapter extends Adapter {
66
62
  }
67
63
  }
68
64
  export const webgpuAdapter = new WebGPUAdapter();
65
+ //# sourceMappingURL=webgpu-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu-adapter.js","sourceRoot":"","sources":["../../src/adapter/webgpu-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Texture, TextureFormat, CanvasContextProps } from '@luma.gl/core';
1
+ import type { DepthStencilTextureFormat, CanvasContextProps } from '@luma.gl/core';
2
2
  import { CanvasContext } from '@luma.gl/core';
3
3
  import { WebGPUDevice } from "./webgpu-device.js";
4
4
  import { WebGPUFramebuffer } from "./resources/webgpu-framebuffer.js";
@@ -10,19 +10,18 @@ import { WebGPUTexture } from "./resources/webgpu-texture.js";
10
10
  */
11
11
  export declare class WebGPUCanvasContext extends CanvasContext {
12
12
  readonly device: WebGPUDevice;
13
- readonly gpuCanvasContext: GPUCanvasContext;
14
- /** Format of returned textures: "bgra8unorm", "rgba8unorm", "rgba16float". */
15
- readonly format: TextureFormat;
16
- /** Default stencil format for depth textures */
17
- readonly depthStencilFormat: TextureFormat;
13
+ readonly handle: GPUCanvasContext;
18
14
  private depthStencilAttachment;
15
+ get [Symbol.toStringTag](): string;
19
16
  constructor(device: WebGPUDevice, adapter: GPUAdapter, props: CanvasContextProps);
20
17
  /** Destroy any textures produced while configured and remove the context configuration. */
21
18
  destroy(): void;
22
19
  /** Update framebuffer with properly resized "swap chain" texture views */
23
- getCurrentFramebuffer(): WebGPUFramebuffer;
20
+ getCurrentFramebuffer(options?: {
21
+ depthStencilFormat?: DepthStencilTextureFormat | false;
22
+ }): WebGPUFramebuffer;
24
23
  /** Resizes and updates render targets if necessary */
25
- update(): void;
24
+ updateSize(size: [newWidth: number, newHeight: number]): void;
26
25
  resize(options?: {
27
26
  width?: number;
28
27
  height?: number;
@@ -31,6 +30,6 @@ export declare class WebGPUCanvasContext extends CanvasContext {
31
30
  /** Wrap the current canvas context texture in a luma.gl texture */
32
31
  getCurrentTexture(): WebGPUTexture;
33
32
  /** We build render targets on demand (i.e. not when size changes but when about to render) */
34
- _createDepthStencilAttachment(): Texture;
33
+ _createDepthStencilAttachment(depthStencilFormat: DepthStencilTextureFormat): WebGPUTexture;
35
34
  }
36
35
  //# sourceMappingURL=webgpu-canvas-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webgpu-canvas-context.d.ts","sourceRoot":"","sources":["../../src/adapter/webgpu-canvas-context.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAC,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAC,aAAa,EAAM,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAC,YAAY,EAAC,2BAAwB;AAC7C,OAAO,EAAC,iBAAiB,EAAC,0CAAuC;AACjE,OAAO,EAAC,aAAa,EAAC,sCAAmC;AAEzD;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,aAAa,CAA6D;IAC3F,gDAAgD;IAChD,QAAQ,CAAC,kBAAkB,EAAE,aAAa,CAAiB;IAE3D,OAAO,CAAC,sBAAsB,CAAwB;gBAE1C,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB;IAehF,2FAA2F;IAC3F,OAAO,IAAI,IAAI;IAIf,0EAA0E;IAC1E,qBAAqB,IAAI,iBAAiB;IA2B1C,sDAAsD;IACtD,MAAM;IA6BN,MAAM,CAAC,OAAO,CAAC,EAAE;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;KAAC,GAAG,IAAI;IAI7F,mEAAmE;IACnE,iBAAiB,IAAI,aAAa;IAQlC,8FAA8F;IAC9F,6BAA6B;CAY9B"}
1
+ {"version":3,"file":"webgpu-canvas-context.d.ts","sourceRoot":"","sources":["../../src/adapter/webgpu-canvas-context.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,yBAAyB,EAAE,kBAAkB,EAAC,MAAM,eAAe,CAAC;AACjF,OAAO,EAAC,aAAa,EAAe,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAC,YAAY,EAAC,2BAAwB;AAC7C,OAAO,EAAC,iBAAiB,EAAC,0CAAuC;AACjE,OAAO,EAAC,aAAa,EAAC,sCAAmC;AAEzD;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAElC,OAAO,CAAC,sBAAsB,CAA8B;IAE5D,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;gBAEW,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB;IAShF,2FAA2F;IAC3F,OAAO,IAAI,IAAI;IAIf,0EAA0E;IAC1E,qBAAqB,CACnB,OAAO,GAAE;QAAC,kBAAkB,CAAC,EAAE,yBAAyB,GAAG,KAAK,CAAA;KAE/D,GACA,iBAAiB;IA4BpB,sDAAsD;IACtD,UAAU,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,IAAI;IAkB7D,MAAM,CAAC,OAAO,CAAC,EAAE;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;KAAC,GAAG,IAAI;IAe7F,mEAAmE;IACnE,iBAAiB,IAAI,aAAa;IAQlC,8FAA8F;IAC9F,6BAA6B,CAAC,kBAAkB,EAAE,yBAAyB,GAAG,aAAa;CAY5F"}
@@ -1,8 +1,7 @@
1
1
  // luma.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- import { CanvasContext, log } from '@luma.gl/core';
5
- import { getWebGPUTextureFormat } from "./helpers/convert-texture-format.js";
4
+ import { CanvasContext, Texture, log } from '@luma.gl/core';
6
5
  import { WebGPUFramebuffer } from "./resources/webgpu-framebuffer.js";
7
6
  /**
8
7
  * Holds a WebGPU Canvas Context
@@ -11,98 +10,95 @@ import { WebGPUFramebuffer } from "./resources/webgpu-framebuffer.js";
11
10
  */
12
11
  export class WebGPUCanvasContext extends CanvasContext {
13
12
  device;
14
- gpuCanvasContext;
15
- /** Format of returned textures: "bgra8unorm", "rgba8unorm", "rgba16float". */
16
- format = navigator.gpu.getPreferredCanvasFormat();
17
- /** Default stencil format for depth textures */
18
- depthStencilFormat = 'depth24plus';
13
+ handle;
19
14
  depthStencilAttachment = null;
15
+ get [Symbol.toStringTag]() {
16
+ return 'WebGPUCanvasContext';
17
+ }
20
18
  constructor(device, adapter, props) {
21
19
  super(props);
22
20
  this.device = device;
23
- // TODO - hack to trigger resize?
24
- this.width = -1;
25
- this.height = -1;
21
+ // Base class constructor cannot access derived methods/fields, so we need to call these functions in the subclass constructor
26
22
  this._setAutoCreatedCanvasId(`${this.device.id}-canvas`);
27
- // @ts-ignore TODO - we don't handle OffscreenRenderingContext.
28
- this.gpuCanvasContext = this.canvas.getContext('webgpu');
29
- // TODO this has been replaced
30
- // this.format = this.gpuCanvasContext.getPreferredFormat(adapter);
31
- this.format = 'bgra8unorm';
23
+ this.updateSize([this.drawingBufferWidth, this.drawingBufferHeight]);
32
24
  }
33
25
  /** Destroy any textures produced while configured and remove the context configuration. */
34
26
  destroy() {
35
- this.gpuCanvasContext.unconfigure();
27
+ this.handle.unconfigure();
36
28
  }
37
29
  /** Update framebuffer with properly resized "swap chain" texture views */
38
- getCurrentFramebuffer() {
39
- // Ensure the canvas context size is updated
40
- this.update();
41
- // Wrap the current canvas context texture in a luma.gl texture
42
- // const currentColorAttachment = this.device.createTexture({
43
- // id: 'default-render-target',
44
- // handle: this.gpuCanvasContext.getCurrentTexture(),
45
- // format: this.format,
46
- // width: this.width,
47
- // height: this.height
48
- // });
30
+ getCurrentFramebuffer(options = {
31
+ depthStencilFormat: 'depth24plus'
32
+ }) {
49
33
  // Wrap the current canvas context texture in a luma.gl texture
50
34
  const currentColorAttachment = this.getCurrentTexture();
51
- this.width = currentColorAttachment.width;
52
- this.height = currentColorAttachment.height;
35
+ // TODO - temporary debug code
36
+ if (currentColorAttachment.width !== this.drawingBufferWidth ||
37
+ currentColorAttachment.height !== this.drawingBufferHeight) {
38
+ const [oldWidth, oldHeight] = this.getDrawingBufferSize();
39
+ this.drawingBufferWidth = currentColorAttachment.width;
40
+ this.drawingBufferHeight = currentColorAttachment.height;
41
+ log.log(1, `${this}: Resized to compensate for initial canvas size mismatch ${oldWidth}x${oldHeight} => ${this.drawingBufferWidth}x${this.drawingBufferHeight}px`)();
42
+ }
53
43
  // Resize the depth stencil attachment
54
- this._createDepthStencilAttachment();
44
+ if (options?.depthStencilFormat) {
45
+ this._createDepthStencilAttachment(options?.depthStencilFormat);
46
+ }
55
47
  return new WebGPUFramebuffer(this.device, {
56
48
  colorAttachments: [currentColorAttachment],
57
49
  depthStencilAttachment: this.depthStencilAttachment
58
50
  });
59
51
  }
60
52
  /** Resizes and updates render targets if necessary */
61
- update() {
62
- const [width, height] = this.getPixelSize();
63
- const sizeChanged = width !== this.width || height !== this.height;
64
- if (sizeChanged) {
65
- this.width = width;
66
- this.height = height;
67
- if (this.depthStencilAttachment) {
68
- this.depthStencilAttachment.destroy();
69
- this.depthStencilAttachment = null;
70
- }
71
- // Reconfigure the canvas size.
72
- // https://www.w3.org/TR/webgpu/#canvas-configuration
73
- this.gpuCanvasContext.configure({
74
- device: this.device.handle,
75
- format: getWebGPUTextureFormat(this.format),
76
- // Can be used to define e.g. -srgb views
77
- // viewFormats: [...]
78
- colorSpace: this.props.colorSpace,
79
- alphaMode: this.props.alphaMode
80
- });
81
- log.log(1, `Resized to ${this.width}x${this.height}px`)();
53
+ updateSize(size) {
54
+ if (this.depthStencilAttachment) {
55
+ this.depthStencilAttachment.destroy();
56
+ this.depthStencilAttachment = null;
82
57
  }
58
+ // Reconfigure the canvas size.
59
+ // https://www.w3.org/TR/webgpu/#canvas-configuration
60
+ this.handle.configure({
61
+ device: this.device.handle,
62
+ format: this.device.preferredColorFormat,
63
+ // Can be used to define e.g. -srgb views
64
+ // viewFormats: [...]
65
+ colorSpace: this.props.colorSpace,
66
+ alphaMode: this.props.alphaMode
67
+ });
83
68
  }
84
69
  resize(options) {
85
- this.update();
70
+ if (!this.device.handle)
71
+ return;
72
+ if (this.props.autoResize) {
73
+ return;
74
+ }
75
+ // Resize browser context .
76
+ if (this.canvas) {
77
+ const devicePixelRatio = this.getDevicePixelRatio(options?.useDevicePixels);
78
+ this._setDevicePixelRatio(devicePixelRatio, options);
79
+ return;
80
+ }
86
81
  }
87
82
  /** Wrap the current canvas context texture in a luma.gl texture */
88
83
  getCurrentTexture() {
89
- return this.device._createTexture({
84
+ return this.device.createTexture({
90
85
  id: `${this.id}#color-texture`,
91
- handle: this.gpuCanvasContext.getCurrentTexture(),
92
- format: this.format
86
+ handle: this.handle.getCurrentTexture(),
87
+ format: this.device.preferredColorFormat
93
88
  });
94
89
  }
95
90
  /** We build render targets on demand (i.e. not when size changes but when about to render) */
96
- _createDepthStencilAttachment() {
91
+ _createDepthStencilAttachment(depthStencilFormat) {
97
92
  if (!this.depthStencilAttachment) {
98
93
  this.depthStencilAttachment = this.device.createTexture({
99
94
  id: `${this.id}#depth-stencil-texture`,
100
- format: this.depthStencilFormat,
101
- width: this.width,
102
- height: this.height,
103
- usage: GPUTextureUsage.RENDER_ATTACHMENT
95
+ usage: Texture.RENDER_ATTACHMENT,
96
+ format: depthStencilFormat,
97
+ width: this.drawingBufferWidth,
98
+ height: this.drawingBufferHeight
104
99
  });
105
100
  }
106
101
  return this.depthStencilAttachment;
107
102
  }
108
103
  }
104
+ //# sourceMappingURL=webgpu-canvas-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu-canvas-context.js","sourceRoot":"","sources":["../../src/adapter/webgpu-canvas-context.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { DeviceProps, DeviceInfo, DeviceLimits, CanvasContextProps, BufferProps, SamplerProps, ShaderProps, Texture, TextureProps, TextureFormat, ExternalTextureProps, FramebufferProps, RenderPipelineProps, ComputePipelineProps, RenderPassProps, ComputePassProps, VertexArrayProps, TransformFeedback, TransformFeedbackProps, QuerySet, QuerySetProps } from '@luma.gl/core';
1
+ import type { DeviceInfo, DeviceLimits, DeviceTextureFormatCapabilities, CanvasContextProps, BufferProps, SamplerProps, ShaderProps, Texture, TextureProps, ExternalTextureProps, FramebufferProps, RenderPipelineProps, ComputePipelineProps, RenderPassProps, ComputePassProps, VertexArrayProps, TransformFeedback, TransformFeedbackProps, QuerySet, QuerySetProps, DeviceProps } from '@luma.gl/core';
2
2
  import { Device, DeviceFeatures } from '@luma.gl/core';
3
3
  import { WebGPUBuffer } from "./resources/webgpu-buffer.js";
4
4
  import { WebGPUTexture } from "./resources/webgpu-texture.js";
@@ -14,12 +14,12 @@ import { WebGPUVertexArray } from "./resources/webgpu-vertex-array.js";
14
14
  import { WebGPUCanvasContext } from "./webgpu-canvas-context.js";
15
15
  /** WebGPU Device implementation */
16
16
  export declare class WebGPUDevice extends Device {
17
- /** type of this device */
18
- readonly type = "webgpu";
19
17
  /** The underlying WebGPU device */
20
18
  readonly handle: GPUDevice;
21
- readonly adapter: GPUAdapter;
22
- readonly adapterInfo: GPUAdapterInfo;
19
+ /** type of this device */
20
+ readonly type = "webgpu";
21
+ readonly preferredColorFormat: "rgba8unorm" | "bgra8unorm";
22
+ readonly preferredDepthFormat = "depth24plus";
23
23
  readonly features: DeviceFeatures;
24
24
  readonly info: DeviceInfo;
25
25
  readonly limits: DeviceLimits;
@@ -27,20 +27,17 @@ export declare class WebGPUDevice extends Device {
27
27
  reason: 'destroyed';
28
28
  message: string;
29
29
  }>;
30
+ renderPass: WebGPURenderPass | null;
30
31
  canvasContext: WebGPUCanvasContext | null;
31
32
  private _isLost;
32
33
  commandEncoder: GPUCommandEncoder | null;
33
- renderPass: WebGPURenderPass | null;
34
+ readonly adapter: GPUAdapter;
35
+ readonly adapterInfo: GPUAdapterInfo;
34
36
  constructor(props: DeviceProps, device: GPUDevice, adapter: GPUAdapter, adapterInfo: GPUAdapterInfo);
35
37
  destroy(): void;
36
- isTextureFormatSupported(format: TextureFormat): boolean;
37
- /** @todo implement proper check? */
38
- isTextureFormatFilterable(format: TextureFormat): boolean;
39
- /** @todo implement proper check? */
40
- isTextureFormatRenderable(format: TextureFormat): boolean;
41
38
  get isLost(): boolean;
42
39
  createBuffer(props: BufferProps | ArrayBuffer | ArrayBufferView): WebGPUBuffer;
43
- _createTexture(props: TextureProps): WebGPUTexture;
40
+ createTexture(props: TextureProps): WebGPUTexture;
44
41
  createExternalTexture(props: ExternalTextureProps): WebGPUExternalTexture;
45
42
  createShader(props: ShaderProps): WebGPUShader;
46
43
  createSampler(props: SamplerProps): WebGPUSampler;
@@ -60,6 +57,7 @@ export declare class WebGPUDevice extends Device {
60
57
  submit(): void;
61
58
  protected _getInfo(): DeviceInfo;
62
59
  protected _getFeatures(): DeviceFeatures;
60
+ _getDeviceSpecificTextureFormatCapabilities(capabilities: DeviceTextureFormatCapabilities): DeviceTextureFormatCapabilities;
63
61
  copyExternalImageToTexture(options: {
64
62
  texture: Texture;
65
63
  mipLevel?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"webgpu-device.d.ts","sourceRoot":"","sources":["../../src/adapter/webgpu-device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webgpu-device.d.ts","sourceRoot":"","sources":["../../src/adapter/webgpu-device.ts"],"names":[],"mappings":"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"}