@luma.gl/webgpu 9.1.0-alpha.9 → 9.1.0-beta.11

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 (82) 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.js +14 -2
  6. package/dist/adapter/helpers/get-bind-group.js.map +1 -0
  7. package/dist/adapter/helpers/get-vertex-buffer-layout.js +2 -1
  8. package/dist/adapter/helpers/get-vertex-buffer-layout.js.map +1 -0
  9. package/dist/adapter/helpers/webgpu-parameters.js +1 -0
  10. package/dist/adapter/helpers/webgpu-parameters.js.map +1 -0
  11. package/dist/adapter/resources/webgpu-buffer.js +1 -0
  12. package/dist/adapter/resources/webgpu-buffer.js.map +1 -0
  13. package/dist/adapter/resources/webgpu-command-encoder.d.ts +4 -4
  14. package/dist/adapter/resources/webgpu-command-encoder.d.ts.map +1 -1
  15. package/dist/adapter/resources/webgpu-command-encoder.js +22 -4
  16. package/dist/adapter/resources/webgpu-command-encoder.js.map +1 -0
  17. package/dist/adapter/resources/webgpu-compute-pass.js +1 -0
  18. package/dist/adapter/resources/webgpu-compute-pass.js.map +1 -0
  19. package/dist/adapter/resources/webgpu-compute-pipeline.js +1 -0
  20. package/dist/adapter/resources/webgpu-compute-pipeline.js.map +1 -0
  21. package/dist/adapter/resources/webgpu-external-texture.js +1 -0
  22. package/dist/adapter/resources/webgpu-external-texture.js.map +1 -0
  23. package/dist/adapter/resources/webgpu-framebuffer.d.ts +1 -0
  24. package/dist/adapter/resources/webgpu-framebuffer.d.ts.map +1 -1
  25. package/dist/adapter/resources/webgpu-framebuffer.js +4 -0
  26. package/dist/adapter/resources/webgpu-framebuffer.js.map +1 -0
  27. package/dist/adapter/resources/webgpu-query-set.js +1 -0
  28. package/dist/adapter/resources/webgpu-query-set.js.map +1 -0
  29. package/dist/adapter/resources/webgpu-render-pass.d.ts.map +1 -1
  30. package/dist/adapter/resources/webgpu-render-pass.js +19 -6
  31. package/dist/adapter/resources/webgpu-render-pass.js.map +1 -0
  32. package/dist/adapter/resources/webgpu-render-pipeline.d.ts.map +1 -1
  33. package/dist/adapter/resources/webgpu-render-pipeline.js +14 -0
  34. package/dist/adapter/resources/webgpu-render-pipeline.js.map +1 -0
  35. package/dist/adapter/resources/webgpu-sampler.d.ts +1 -1
  36. package/dist/adapter/resources/webgpu-sampler.d.ts.map +1 -1
  37. package/dist/adapter/resources/webgpu-sampler.js +15 -6
  38. package/dist/adapter/resources/webgpu-sampler.js.map +1 -0
  39. package/dist/adapter/resources/webgpu-shader.d.ts +2 -2
  40. package/dist/adapter/resources/webgpu-shader.d.ts.map +1 -1
  41. package/dist/adapter/resources/webgpu-shader.js +23 -19
  42. package/dist/adapter/resources/webgpu-shader.js.map +1 -0
  43. package/dist/adapter/resources/webgpu-texture-view.js +1 -0
  44. package/dist/adapter/resources/webgpu-texture-view.js.map +1 -0
  45. package/dist/adapter/resources/webgpu-texture.d.ts +2 -5
  46. package/dist/adapter/resources/webgpu-texture.d.ts.map +1 -1
  47. package/dist/adapter/resources/webgpu-texture.js +17 -38
  48. package/dist/adapter/resources/webgpu-texture.js.map +1 -0
  49. package/dist/adapter/resources/webgpu-vertex-array.d.ts.map +1 -1
  50. package/dist/adapter/resources/webgpu-vertex-array.js +3 -2
  51. package/dist/adapter/resources/webgpu-vertex-array.js.map +1 -0
  52. package/dist/adapter/webgpu-adapter.d.ts.map +1 -1
  53. package/dist/adapter/webgpu-adapter.js +3 -6
  54. package/dist/adapter/webgpu-adapter.js.map +1 -0
  55. package/dist/adapter/webgpu-canvas-context.d.ts +1 -0
  56. package/dist/adapter/webgpu-canvas-context.d.ts.map +1 -1
  57. package/dist/adapter/webgpu-canvas-context.js +21 -7
  58. package/dist/adapter/webgpu-canvas-context.js.map +1 -0
  59. package/dist/adapter/webgpu-device.d.ts +3 -7
  60. package/dist/adapter/webgpu-device.d.ts.map +1 -1
  61. package/dist/adapter/webgpu-device.js +30 -28
  62. package/dist/adapter/webgpu-device.js.map +1 -0
  63. package/dist/dist.dev.js +169 -124
  64. package/dist/dist.min.js +5 -1
  65. package/dist/index.cjs +152 -111
  66. package/dist/index.cjs.map +4 -4
  67. package/dist/index.js +1 -0
  68. package/dist/index.js.map +1 -0
  69. package/package.json +3 -3
  70. package/src/adapter/helpers/get-bind-group.ts +18 -2
  71. package/src/adapter/helpers/get-vertex-buffer-layout.ts +1 -1
  72. package/src/adapter/resources/webgpu-command-encoder.ts +26 -8
  73. package/src/adapter/resources/webgpu-framebuffer.ts +4 -0
  74. package/src/adapter/resources/webgpu-render-pass.ts +29 -14
  75. package/src/adapter/resources/webgpu-render-pipeline.ts +14 -0
  76. package/src/adapter/resources/webgpu-sampler.ts +16 -6
  77. package/src/adapter/resources/webgpu-shader.ts +23 -23
  78. package/src/adapter/resources/webgpu-texture.ts +31 -59
  79. package/src/adapter/resources/webgpu-vertex-array.ts +7 -2
  80. package/src/adapter/webgpu-adapter.ts +2 -7
  81. package/src/adapter/webgpu-canvas-context.ts +22 -7
  82. package/src/adapter/webgpu-device.ts +37 -36
@@ -6,17 +6,16 @@
6
6
  // / <reference types="@webgpu/types" />
7
7
 
8
8
  import type {
9
- DeviceProps,
10
9
  DeviceInfo,
11
10
  DeviceLimits,
12
11
  DeviceFeature,
12
+ DeviceTextureFormatCapabilities,
13
13
  CanvasContextProps,
14
14
  BufferProps,
15
15
  SamplerProps,
16
16
  ShaderProps,
17
17
  Texture,
18
18
  TextureProps,
19
- TextureFormat,
20
19
  ExternalTextureProps,
21
20
  FramebufferProps,
22
21
  RenderPipelineProps,
@@ -28,7 +27,8 @@ import type {
28
27
  TransformFeedback,
29
28
  TransformFeedbackProps,
30
29
  QuerySet,
31
- QuerySetProps
30
+ QuerySetProps,
31
+ DeviceProps
32
32
  } from '@luma.gl/core';
33
33
  import {Device, DeviceFeatures} from '@luma.gl/core';
34
34
  import {WebGPUBuffer} from './resources/webgpu-buffer';
@@ -89,8 +89,13 @@ export class WebGPUDevice extends Device {
89
89
  device.addEventListener('uncapturederror', (event: Event) => {
90
90
  // TODO is this the right way to make sure the error is an Error instance?
91
91
  const errorMessage =
92
- event instanceof GPUUncapturedErrorEvent ? event.error.message : 'Unknown error';
93
- this.error(new Error(errorMessage));
92
+ event instanceof GPUUncapturedErrorEvent ? event.error.message : 'Unknown WebGPU error';
93
+ this.reportError(new Error(errorMessage));
94
+ if (this.props.debug) {
95
+ // eslint-disable-next-line no-debugger
96
+ debugger;
97
+ }
98
+ event.preventDefault();
94
99
  });
95
100
 
96
101
  // "Context" loss handling
@@ -101,14 +106,11 @@ export class WebGPUDevice extends Device {
101
106
  });
102
107
 
103
108
  // Note: WebGPU devices can be created without a canvas, for compute shader purposes
104
- // if (props.canvas) {
105
- this.canvasContext = new WebGPUCanvasContext(this, this.adapter, {
106
- canvas: props.canvas,
107
- height: props.height,
108
- width: props.width,
109
- container: props.container
110
- });
111
- // }
109
+ if (props.createCanvasContext) {
110
+ const canvasContextProps =
111
+ props.createCanvasContext === true ? {} : props.createCanvasContext;
112
+ this.canvasContext = new WebGPUCanvasContext(this, this.adapter, canvasContextProps);
113
+ }
112
114
  }
113
115
 
114
116
  // TODO
@@ -120,34 +122,16 @@ export class WebGPUDevice extends Device {
120
122
  this.handle.destroy();
121
123
  }
122
124
 
123
- isTextureFormatSupported(format: TextureFormat): boolean {
124
- return !format.includes('webgl');
125
- }
126
-
127
- /** @todo implement proper check? */
128
- isTextureFormatFilterable(format: TextureFormat): boolean {
129
- return (
130
- this.isTextureFormatSupported(format) &&
131
- !format.startsWith('depth') &&
132
- !format.startsWith('stencil')
133
- );
134
- }
135
-
136
- /** @todo implement proper check? */
137
- isTextureFormatRenderable(format: TextureFormat): boolean {
138
- return this.isTextureFormatSupported(format);
139
- }
140
-
141
125
  get isLost(): boolean {
142
126
  return this._isLost;
143
127
  }
144
128
 
145
129
  createBuffer(props: BufferProps | ArrayBuffer | ArrayBufferView): WebGPUBuffer {
146
- const newProps = this._getBufferProps(props);
130
+ const newProps = this._normalizeBufferProps(props);
147
131
  return new WebGPUBuffer(this, newProps);
148
132
  }
149
133
 
150
- _createTexture(props: TextureProps): WebGPUTexture {
134
+ createTexture(props: TextureProps): WebGPUTexture {
151
135
  return new WebGPUTexture(this, props);
152
136
  }
153
137
 
@@ -212,13 +196,17 @@ export class WebGPUDevice extends Device {
212
196
  }
213
197
 
214
198
  submit(): void {
215
- // this.renderPass?.end();
216
199
  const commandBuffer = this.commandEncoder?.finish();
217
200
  if (commandBuffer) {
201
+ this.handle.pushErrorScope('validation');
218
202
  this.handle.queue.submit([commandBuffer]);
203
+ this.handle.popErrorScope().then((error: GPUError | null) => {
204
+ if (error) {
205
+ this.reportError(new Error(`WebGPU command submission failed: ${error.message}`));
206
+ }
207
+ });
219
208
  }
220
209
  this.commandEncoder = null;
221
- // this.renderPass = null;
222
210
  }
223
211
 
224
212
  // PRIVATE METHODS
@@ -280,9 +268,22 @@ export class WebGPUDevice extends Device {
280
268
  features.add(feature);
281
269
  }
282
270
 
283
- return new DeviceFeatures(Array.from(features), this.props.disabledFeatures);
271
+ return new DeviceFeatures(Array.from(features), this.props._disabledFeatures);
272
+ }
273
+
274
+ override _getDeviceSpecificTextureFormatCapabilities(
275
+ capabilities: DeviceTextureFormatCapabilities
276
+ ): DeviceTextureFormatCapabilities {
277
+ const {format} = capabilities;
278
+ if (format.includes('webgl')) {
279
+ return {format, create: false, render: false, filter: false, blend: false, store: false};
280
+ }
281
+ return capabilities;
284
282
  }
285
283
 
284
+ // DEPRECATED METHODS
285
+
286
+ // @deprecated
286
287
  copyExternalImageToTexture(options: {
287
288
  texture: Texture;
288
289
  mipLevel?: number;