@luma.gl/webgpu 9.1.9 → 9.2.0-alpha.2

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 (100) hide show
  1. package/dist/adapter/helpers/accessor-to-format.js +1 -0
  2. package/dist/adapter/helpers/accessor-to-format.js.map +1 -1
  3. package/dist/adapter/helpers/get-bind-group.d.ts +3 -1
  4. package/dist/adapter/helpers/get-bind-group.d.ts.map +1 -1
  5. package/dist/adapter/helpers/get-bind-group.js +28 -10
  6. package/dist/adapter/helpers/get-bind-group.js.map +1 -1
  7. package/dist/adapter/helpers/get-vertex-buffer-layout.js +5 -5
  8. package/dist/adapter/helpers/get-vertex-buffer-layout.js.map +1 -1
  9. package/dist/adapter/helpers/webgpu-parameters.d.ts.map +1 -1
  10. package/dist/adapter/helpers/webgpu-parameters.js +89 -75
  11. package/dist/adapter/helpers/webgpu-parameters.js.map +1 -1
  12. package/dist/adapter/resources/webgpu-buffer.d.ts +13 -16
  13. package/dist/adapter/resources/webgpu-buffer.d.ts.map +1 -1
  14. package/dist/adapter/resources/webgpu-buffer.js +132 -93
  15. package/dist/adapter/resources/webgpu-buffer.js.map +1 -1
  16. package/dist/adapter/resources/webgpu-command-buffer.d.ts +10 -0
  17. package/dist/adapter/resources/webgpu-command-buffer.d.ts.map +1 -0
  18. package/dist/adapter/resources/webgpu-command-buffer.js +18 -0
  19. package/dist/adapter/resources/webgpu-command-buffer.js.map +1 -0
  20. package/dist/adapter/resources/webgpu-command-encoder.d.ts +12 -5
  21. package/dist/adapter/resources/webgpu-command-encoder.d.ts.map +1 -1
  22. package/dist/adapter/resources/webgpu-command-encoder.js +28 -5
  23. package/dist/adapter/resources/webgpu-command-encoder.js.map +1 -1
  24. package/dist/adapter/resources/webgpu-compute-pass.js +1 -1
  25. package/dist/adapter/resources/webgpu-compute-pass.js.map +1 -1
  26. package/dist/adapter/resources/webgpu-compute-pipeline.d.ts +2 -2
  27. package/dist/adapter/resources/webgpu-compute-pipeline.d.ts.map +1 -1
  28. package/dist/adapter/resources/webgpu-compute-pipeline.js.map +1 -1
  29. package/dist/adapter/resources/webgpu-external-texture.d.ts +2 -2
  30. package/dist/adapter/resources/webgpu-external-texture.d.ts.map +1 -1
  31. package/dist/adapter/resources/webgpu-external-texture.js.map +1 -1
  32. package/dist/adapter/resources/webgpu-framebuffer.d.ts +3 -2
  33. package/dist/adapter/resources/webgpu-framebuffer.d.ts.map +1 -1
  34. package/dist/adapter/resources/webgpu-framebuffer.js +1 -0
  35. package/dist/adapter/resources/webgpu-framebuffer.js.map +1 -1
  36. package/dist/adapter/resources/webgpu-pipeline-layout.d.ts +2 -2
  37. package/dist/adapter/resources/webgpu-pipeline-layout.d.ts.map +1 -1
  38. package/dist/adapter/resources/webgpu-pipeline-layout.js +5 -2
  39. package/dist/adapter/resources/webgpu-pipeline-layout.js.map +1 -1
  40. package/dist/adapter/resources/webgpu-render-pass.d.ts.map +1 -1
  41. package/dist/adapter/resources/webgpu-render-pass.js +11 -6
  42. package/dist/adapter/resources/webgpu-render-pass.js.map +1 -1
  43. package/dist/adapter/resources/webgpu-render-pipeline.d.ts +5 -4
  44. package/dist/adapter/resources/webgpu-render-pipeline.d.ts.map +1 -1
  45. package/dist/adapter/resources/webgpu-render-pipeline.js +33 -20
  46. package/dist/adapter/resources/webgpu-render-pipeline.js.map +1 -1
  47. package/dist/adapter/resources/webgpu-sampler.js +1 -1
  48. package/dist/adapter/resources/webgpu-sampler.js.map +1 -1
  49. package/dist/adapter/resources/webgpu-shader.d.ts.map +1 -1
  50. package/dist/adapter/resources/webgpu-shader.js +7 -8
  51. package/dist/adapter/resources/webgpu-shader.js.map +1 -1
  52. package/dist/adapter/resources/webgpu-texture-view.d.ts.map +1 -1
  53. package/dist/adapter/resources/webgpu-texture-view.js +15 -10
  54. package/dist/adapter/resources/webgpu-texture-view.js.map +1 -1
  55. package/dist/adapter/resources/webgpu-texture.d.ts +4 -37
  56. package/dist/adapter/resources/webgpu-texture.d.ts.map +1 -1
  57. package/dist/adapter/resources/webgpu-texture.js +97 -126
  58. package/dist/adapter/resources/webgpu-texture.js.map +1 -1
  59. package/dist/adapter/resources/webgpu-vertex-array.d.ts +2 -2
  60. package/dist/adapter/resources/webgpu-vertex-array.d.ts.map +1 -1
  61. package/dist/adapter/resources/webgpu-vertex-array.js +2 -2
  62. package/dist/adapter/resources/webgpu-vertex-array.js.map +1 -1
  63. package/dist/adapter/webgpu-adapter.d.ts +2 -3
  64. package/dist/adapter/webgpu-adapter.d.ts.map +1 -1
  65. package/dist/adapter/webgpu-adapter.js +54 -43
  66. package/dist/adapter/webgpu-adapter.js.map +1 -1
  67. package/dist/adapter/webgpu-canvas-context.d.ts +7 -15
  68. package/dist/adapter/webgpu-canvas-context.d.ts.map +1 -1
  69. package/dist/adapter/webgpu-canvas-context.js +50 -72
  70. package/dist/adapter/webgpu-canvas-context.js.map +1 -1
  71. package/dist/adapter/webgpu-device.d.ts +16 -27
  72. package/dist/adapter/webgpu-device.d.ts.map +1 -1
  73. package/dist/adapter/webgpu-device.js +48 -65
  74. package/dist/adapter/webgpu-device.js.map +1 -1
  75. package/dist/dist.dev.js +1919 -1520
  76. package/dist/dist.min.js +6 -5
  77. package/dist/index.cjs +1749 -1397
  78. package/dist/index.cjs.map +4 -4
  79. package/package.json +3 -3
  80. package/src/adapter/helpers/get-bind-group.ts +31 -11
  81. package/src/adapter/helpers/get-vertex-buffer-layout.ts +5 -5
  82. package/src/adapter/helpers/webgpu-parameters.ts +114 -102
  83. package/src/adapter/resources/webgpu-buffer.ts +163 -102
  84. package/src/adapter/resources/webgpu-command-buffer.ts +24 -0
  85. package/src/adapter/resources/webgpu-command-encoder.ts +34 -4
  86. package/src/adapter/resources/webgpu-compute-pass.ts +1 -1
  87. package/src/adapter/resources/webgpu-compute-pipeline.ts +2 -2
  88. package/src/adapter/resources/webgpu-external-texture.ts +2 -2
  89. package/src/adapter/resources/webgpu-framebuffer.ts +3 -2
  90. package/src/adapter/resources/webgpu-pipeline-layout.ts +8 -3
  91. package/src/adapter/resources/webgpu-render-pass.ts +11 -6
  92. package/src/adapter/resources/webgpu-render-pipeline.ts +39 -24
  93. package/src/adapter/resources/webgpu-sampler.ts +1 -1
  94. package/src/adapter/resources/webgpu-shader.ts +11 -8
  95. package/src/adapter/resources/webgpu-texture-view.ts +14 -8
  96. package/src/adapter/resources/webgpu-texture.ts +106 -186
  97. package/src/adapter/resources/webgpu-vertex-array.ts +2 -2
  98. package/src/adapter/webgpu-adapter.ts +72 -58
  99. package/src/adapter/webgpu-canvas-context.ts +62 -82
  100. package/src/adapter/webgpu-device.ts +66 -105
@@ -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,109 +10,88 @@ 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;
20
15
  get [Symbol.toStringTag]() {
21
16
  return 'WebGPUCanvasContext';
22
17
  }
23
18
  constructor(device, adapter, props) {
24
19
  super(props);
20
+ const context = this.canvas.getContext('webgpu');
21
+ if (!context) {
22
+ throw new Error(`${this}: Failed to create WebGPU canvas context`);
23
+ }
25
24
  this.device = device;
26
- // TODO - ugly hack to trigger first resize
27
- this.width = -1;
28
- this.height = -1;
25
+ this.handle = context;
26
+ // Base class constructor cannot access derived methods/fields, so we need to call these functions in the subclass constructor
29
27
  this._setAutoCreatedCanvasId(`${this.device.id}-canvas`);
30
- // @ts-ignore TODO - we don't handle OffscreenRenderingContext.
31
- this.gpuCanvasContext = this.canvas.getContext('webgpu');
32
- // TODO this has been replaced
33
- // this.format = this.gpuCanvasContext.getPreferredFormat(adapter);
34
- this.format = 'bgra8unorm';
28
+ this._updateDevice();
35
29
  }
36
30
  /** Destroy any textures produced while configured and remove the context configuration. */
37
31
  destroy() {
38
- this.gpuCanvasContext.unconfigure();
32
+ this.handle.unconfigure();
33
+ super.destroy();
39
34
  }
40
35
  /** Update framebuffer with properly resized "swap chain" texture views */
41
- getCurrentFramebuffer() {
42
- // Ensure the canvas context size is updated
43
- this.update();
44
- // Wrap the current canvas context texture in a luma.gl texture
45
- // const currentColorAttachment = this.device.createTexture({
46
- // id: 'default-render-target',
47
- // handle: this.gpuCanvasContext.getCurrentTexture(),
48
- // format: this.format,
49
- // width: this.width,
50
- // height: this.height
51
- // });
36
+ getCurrentFramebuffer(options = {
37
+ depthStencilFormat: 'depth24plus'
38
+ }) {
52
39
  // Wrap the current canvas context texture in a luma.gl texture
53
40
  const currentColorAttachment = this.getCurrentTexture();
54
- this.width = currentColorAttachment.width;
55
- this.height = currentColorAttachment.height;
41
+ // TODO - temporary debug code
42
+ if (currentColorAttachment.width !== this.drawingBufferWidth ||
43
+ currentColorAttachment.height !== this.drawingBufferHeight) {
44
+ const [oldWidth, oldHeight] = this.getDrawingBufferSize();
45
+ this.drawingBufferWidth = currentColorAttachment.width;
46
+ this.drawingBufferHeight = currentColorAttachment.height;
47
+ log.log(1, `${this}: Resized to compensate for initial canvas size mismatch ${oldWidth}x${oldHeight} => ${this.drawingBufferWidth}x${this.drawingBufferHeight}px`)();
48
+ }
56
49
  // Resize the depth stencil attachment
57
- this._createDepthStencilAttachment();
50
+ if (options?.depthStencilFormat) {
51
+ this._createDepthStencilAttachment(options?.depthStencilFormat);
52
+ }
58
53
  return new WebGPUFramebuffer(this.device, {
59
54
  colorAttachments: [currentColorAttachment],
60
55
  depthStencilAttachment: this.depthStencilAttachment
61
56
  });
62
57
  }
63
- /** Resizes and updates render targets if necessary */
64
- update() {
65
- const oldWidth = this.width;
66
- const oldHeight = this.height;
67
- const [newWidth, newHeight] = this.getPixelSize();
68
- const sizeChanged = newWidth !== oldWidth || newHeight !== oldHeight;
69
- if (sizeChanged) {
70
- this.width = newWidth;
71
- this.height = newHeight;
72
- if (this.depthStencilAttachment) {
73
- this.depthStencilAttachment.destroy();
74
- this.depthStencilAttachment = null;
75
- }
76
- // Reconfigure the canvas size.
77
- // https://www.w3.org/TR/webgpu/#canvas-configuration
78
- this.gpuCanvasContext.configure({
79
- device: this.device.handle,
80
- format: getWebGPUTextureFormat(this.format),
81
- // Can be used to define e.g. -srgb views
82
- // viewFormats: [...]
83
- colorSpace: this.props.colorSpace,
84
- alphaMode: this.props.alphaMode
85
- });
86
- log.log(1, `${this} Resized ${oldWidth}x${oldHeight} => ${newWidth}x${newHeight}px`)();
87
- }
88
- }
89
- resize(options) {
90
- this.update();
91
- if (!this.device.handle)
92
- return;
93
- // Resize browser context .
94
- if (this.canvas) {
95
- const devicePixelRatio = this.getDevicePixelRatio(options?.useDevicePixels);
96
- this.setDevicePixelRatio(devicePixelRatio, options);
97
- return;
58
+ // IMPLEMENTATION OF ABSTRACT METHODS
59
+ _updateDevice() {
60
+ if (this.depthStencilAttachment) {
61
+ this.depthStencilAttachment.destroy();
62
+ this.depthStencilAttachment = null;
98
63
  }
64
+ // Reconfigure the canvas size.
65
+ // https://www.w3.org/TR/webgpu/#canvas-configuration
66
+ this.handle.configure({
67
+ device: this.device.handle,
68
+ format: this.device.preferredColorFormat,
69
+ // Can be used to define e.g. -srgb views
70
+ // viewFormats: [...]
71
+ colorSpace: this.props.colorSpace,
72
+ alphaMode: this.props.alphaMode
73
+ });
99
74
  }
100
75
  /** Wrap the current canvas context texture in a luma.gl texture */
101
76
  getCurrentTexture() {
77
+ const handle = this.handle.getCurrentTexture();
102
78
  return this.device.createTexture({
103
79
  id: `${this.id}#color-texture`,
104
- handle: this.gpuCanvasContext.getCurrentTexture(),
105
- format: this.format
80
+ handle,
81
+ format: this.device.preferredColorFormat,
82
+ width: handle.width,
83
+ height: handle.height
106
84
  });
107
85
  }
108
86
  /** We build render targets on demand (i.e. not when size changes but when about to render) */
109
- _createDepthStencilAttachment() {
87
+ _createDepthStencilAttachment(depthStencilFormat) {
110
88
  if (!this.depthStencilAttachment) {
111
89
  this.depthStencilAttachment = this.device.createTexture({
112
90
  id: `${this.id}#depth-stencil-texture`,
113
- format: this.depthStencilFormat,
114
- width: this.width,
115
- height: this.height,
116
- usage: GPUTextureUsage.RENDER_ATTACHMENT
91
+ usage: Texture.RENDER_ATTACHMENT,
92
+ format: depthStencilFormat,
93
+ width: this.drawingBufferWidth,
94
+ height: this.drawingBufferHeight
117
95
  });
118
96
  }
119
97
  return this.depthStencilAttachment;
@@ -1 +1 @@
1
- {"version":3,"file":"webgpu-canvas-context.js","sourceRoot":"","sources":["../../src/adapter/webgpu-canvas-context.ts"],"names":[],"mappings":"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"}
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 { DeviceInfo, DeviceLimits, DeviceTextureFormatCapabilities, CanvasContextProps, BufferProps, SamplerProps, ShaderProps, Texture, TextureProps, ExternalTextureProps, FramebufferProps, RenderPipelineProps, ComputePipelineProps, RenderPassProps, ComputePassProps, VertexArrayProps, TransformFeedback, TransformFeedbackProps, QuerySet, QuerySetProps, DeviceProps, PipelineLayoutProps } from '@luma.gl/core';
1
+ import type { DeviceInfo, DeviceLimits, DeviceTextureFormatCapabilities, VertexFormat, CanvasContextProps, BufferProps, SamplerProps, ShaderProps, TextureProps, ExternalTextureProps, FramebufferProps, RenderPipelineProps, ComputePipelineProps, VertexArrayProps, TransformFeedback, TransformFeedbackProps, QuerySet, QuerySetProps, DeviceProps, CommandEncoderProps, PipelineLayoutProps } 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";
@@ -8,19 +8,21 @@ import { WebGPUShader } from "./resources/webgpu-shader.js";
8
8
  import { WebGPURenderPipeline } from "./resources/webgpu-render-pipeline.js";
9
9
  import { WebGPUFramebuffer } from "./resources/webgpu-framebuffer.js";
10
10
  import { WebGPUComputePipeline } from "./resources/webgpu-compute-pipeline.js";
11
- import { WebGPURenderPass } from "./resources/webgpu-render-pass.js";
12
- import { WebGPUComputePass } from "./resources/webgpu-compute-pass.js";
13
11
  import { WebGPUVertexArray } from "./resources/webgpu-vertex-array.js";
14
12
  import { WebGPUCanvasContext } from "./webgpu-canvas-context.js";
13
+ import { WebGPUCommandEncoder } from "./resources/webgpu-command-encoder.js";
14
+ import { WebGPUCommandBuffer } from "./resources/webgpu-command-buffer.js";
15
15
  import { WebGPUPipelineLayout } from "./resources/webgpu-pipeline-layout.js";
16
16
  /** WebGPU Device implementation */
17
17
  export declare class WebGPUDevice extends Device {
18
- /** type of this device */
19
- readonly type = "webgpu";
20
18
  /** The underlying WebGPU device */
21
19
  readonly handle: GPUDevice;
22
20
  readonly adapter: GPUAdapter;
23
21
  readonly adapterInfo: GPUAdapterInfo;
22
+ /** type of this device */
23
+ readonly type = "webgpu";
24
+ readonly preferredColorFormat: "rgba8unorm" | "bgra8unorm";
25
+ readonly preferredDepthFormat = "depth24plus";
24
26
  readonly features: DeviceFeatures;
25
27
  readonly info: DeviceInfo;
26
28
  readonly limits: DeviceLimits;
@@ -30,11 +32,14 @@ export declare class WebGPUDevice extends Device {
30
32
  }>;
31
33
  canvasContext: WebGPUCanvasContext | null;
32
34
  private _isLost;
33
- commandEncoder: GPUCommandEncoder | null;
34
- renderPass: WebGPURenderPass | null;
35
+ commandEncoder: WebGPUCommandEncoder;
36
+ get [Symbol.toStringTag](): string;
37
+ toString(): string;
35
38
  constructor(props: DeviceProps, device: GPUDevice, adapter: GPUAdapter, adapterInfo: GPUAdapterInfo);
36
39
  destroy(): void;
37
40
  get isLost(): boolean;
41
+ isVertexFormatSupported(format: VertexFormat): boolean;
42
+ getTextureByteAlignment(): number;
38
43
  createBuffer(props: BufferProps | ArrayBuffer | ArrayBufferView): WebGPUBuffer;
39
44
  createTexture(props: TextureProps): WebGPUTexture;
40
45
  createExternalTexture(props: ExternalTextureProps): WebGPUExternalTexture;
@@ -44,32 +49,16 @@ export declare class WebGPUDevice extends Device {
44
49
  createFramebuffer(props: FramebufferProps): WebGPUFramebuffer;
45
50
  createComputePipeline(props: ComputePipelineProps): WebGPUComputePipeline;
46
51
  createVertexArray(props: VertexArrayProps): WebGPUVertexArray;
47
- /**
48
- * Allows a render pass to begin against a canvas context
49
- * @todo need to support a "Framebuffer" equivalent (aka preconfigured RenderPassDescriptors?).
50
- */
51
- beginRenderPass(props: RenderPassProps): WebGPURenderPass;
52
- beginComputePass(props: ComputePassProps): WebGPUComputePass;
52
+ createCommandEncoder(props?: CommandEncoderProps): WebGPUCommandEncoder;
53
53
  createTransformFeedback(props: TransformFeedbackProps): TransformFeedback;
54
54
  createQuerySet(props: QuerySetProps): QuerySet;
55
55
  createCanvasContext(props: CanvasContextProps): WebGPUCanvasContext;
56
56
  createPipelineLayout(props: PipelineLayoutProps): WebGPUPipelineLayout;
57
- submit(): void;
57
+ submit(commandBuffer?: WebGPUCommandBuffer): void;
58
+ pushErrorScope(scope: 'validation' | 'out-of-memory'): void;
59
+ popErrorScope(handler: (error: GPUError) => void): void;
58
60
  protected _getInfo(): DeviceInfo;
59
61
  protected _getFeatures(): DeviceFeatures;
60
62
  _getDeviceSpecificTextureFormatCapabilities(capabilities: DeviceTextureFormatCapabilities): DeviceTextureFormatCapabilities;
61
- copyExternalImageToTexture(options: {
62
- texture: Texture;
63
- mipLevel?: number;
64
- aspect?: 'all' | 'stencil-only' | 'depth-only';
65
- colorSpace?: 'display-p3' | 'srgb';
66
- premultipliedAlpha?: boolean;
67
- source: ImageBitmap | HTMLVideoElement | HTMLCanvasElement | OffscreenCanvas;
68
- sourceX?: number;
69
- sourceY?: number;
70
- width?: number;
71
- height?: number;
72
- depth?: number;
73
- }): void;
74
63
  }
75
64
  //# sourceMappingURL=webgpu-device.d.ts.map
@@ -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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"}
@@ -10,31 +10,36 @@ import { WebGPUShader } from "./resources/webgpu-shader.js";
10
10
  import { WebGPURenderPipeline } from "./resources/webgpu-render-pipeline.js";
11
11
  import { WebGPUFramebuffer } from "./resources/webgpu-framebuffer.js";
12
12
  import { WebGPUComputePipeline } from "./resources/webgpu-compute-pipeline.js";
13
- import { WebGPURenderPass } from "./resources/webgpu-render-pass.js";
14
- import { WebGPUComputePass } from "./resources/webgpu-compute-pass.js";
15
- // import {WebGPUCommandEncoder} from './resources/webgpu-command-encoder';
16
13
  import { WebGPUVertexArray } from "./resources/webgpu-vertex-array.js";
17
14
  import { WebGPUCanvasContext } from "./webgpu-canvas-context.js";
15
+ import { WebGPUCommandEncoder } from "./resources/webgpu-command-encoder.js";
18
16
  import { WebGPUQuerySet } from "./resources/webgpu-query-set.js";
19
17
  import { WebGPUPipelineLayout } from "./resources/webgpu-pipeline-layout.js";
20
18
  /** WebGPU Device implementation */
21
19
  export class WebGPUDevice extends Device {
22
- /** type of this device */
23
- type = 'webgpu';
24
20
  /** The underlying WebGPU device */
25
21
  handle;
26
22
  /* The underlying WebGPU adapter */
27
23
  adapter;
28
24
  /* The underlying WebGPU adapter's info */
29
25
  adapterInfo;
26
+ /** type of this device */
27
+ type = 'webgpu';
28
+ preferredColorFormat = navigator.gpu.getPreferredCanvasFormat();
29
+ preferredDepthFormat = 'depth24plus';
30
30
  features;
31
31
  info;
32
32
  limits;
33
33
  lost;
34
34
  canvasContext = null;
35
35
  _isLost = false;
36
- commandEncoder = null;
37
- renderPass = null;
36
+ commandEncoder;
37
+ get [Symbol.toStringTag]() {
38
+ return 'WebGPUDevice';
39
+ }
40
+ toString() {
41
+ return `WebGPUDevice(${this.id})`;
42
+ }
38
43
  constructor(props, device, adapter, adapterInfo) {
39
44
  super({ ...props, id: props.id || 'webgpu-device' });
40
45
  this.handle = device;
@@ -45,14 +50,11 @@ export class WebGPUDevice extends Device {
45
50
  this.limits = this.handle.limits;
46
51
  // Listen for uncaptured WebGPU errors
47
52
  device.addEventListener('uncapturederror', (event) => {
53
+ event.preventDefault();
48
54
  // TODO is this the right way to make sure the error is an Error instance?
49
55
  const errorMessage = event instanceof GPUUncapturedErrorEvent ? event.error.message : 'Unknown WebGPU error';
50
- this.reportError(new Error(errorMessage));
51
- if (this.props.debug) {
52
- // eslint-disable-next-line no-debugger
53
- debugger;
54
- }
55
- event.preventDefault();
56
+ this.reportError(new Error(errorMessage), this)();
57
+ this.debug();
56
58
  });
57
59
  // "Context" loss handling
58
60
  this.lost = new Promise(async (resolve) => {
@@ -65,6 +67,7 @@ export class WebGPUDevice extends Device {
65
67
  if (canvasContextProps) {
66
68
  this.canvasContext = new WebGPUCanvasContext(this, this.adapter, canvasContextProps);
67
69
  }
70
+ this.commandEncoder = this.createCommandEncoder({});
68
71
  }
69
72
  // TODO
70
73
  // Load the glslang module now so that it is available synchronously when compiling shaders
@@ -76,6 +79,13 @@ export class WebGPUDevice extends Device {
76
79
  get isLost() {
77
80
  return this._isLost;
78
81
  }
82
+ isVertexFormatSupported(format) {
83
+ const info = this.getVertexFormatInfo(format);
84
+ return !info.webglOnly;
85
+ }
86
+ getTextureByteAlignment() {
87
+ return 1;
88
+ }
79
89
  createBuffer(props) {
80
90
  const newProps = this._normalizeBufferProps(props);
81
91
  return new WebGPUBuffer(this, newProps);
@@ -104,22 +114,10 @@ export class WebGPUDevice extends Device {
104
114
  createVertexArray(props) {
105
115
  return new WebGPUVertexArray(this, props);
106
116
  }
117
+ createCommandEncoder(props) {
118
+ return new WebGPUCommandEncoder(this, props);
119
+ }
107
120
  // WebGPU specifics
108
- /**
109
- * Allows a render pass to begin against a canvas context
110
- * @todo need to support a "Framebuffer" equivalent (aka preconfigured RenderPassDescriptors?).
111
- */
112
- beginRenderPass(props) {
113
- this.commandEncoder = this.commandEncoder || this.handle.createCommandEncoder();
114
- return new WebGPURenderPass(this, props);
115
- }
116
- beginComputePass(props) {
117
- this.commandEncoder = this.commandEncoder || this.handle.createCommandEncoder();
118
- return new WebGPUComputePass(this, props);
119
- }
120
- // createCommandEncoder(props: CommandEncoderProps): WebGPUCommandEncoder {
121
- // return new WebGPUCommandEncoder(this, props);
122
- // }
123
121
  createTransformFeedback(props) {
124
122
  throw new Error('Transform feedback not supported in WebGPU');
125
123
  }
@@ -132,17 +130,29 @@ export class WebGPUDevice extends Device {
132
130
  createPipelineLayout(props) {
133
131
  return new WebGPUPipelineLayout(this, props);
134
132
  }
135
- submit() {
136
- const commandBuffer = this.commandEncoder?.finish();
137
- if (commandBuffer) {
138
- this.handle.pushErrorScope('validation');
139
- this.handle.queue.submit([commandBuffer]);
140
- this.handle.popErrorScope().then((error) => {
141
- if (error) {
142
- this.reportError(new Error(`WebGPU command submission failed: ${error.message}`));
143
- }
144
- });
133
+ submit(commandBuffer) {
134
+ if (!commandBuffer) {
135
+ commandBuffer = this.commandEncoder.finish();
136
+ this.commandEncoder.destroy();
137
+ this.commandEncoder = this.createCommandEncoder({ id: `${this.id}-default-encoder` });
145
138
  }
139
+ this.pushErrorScope('validation');
140
+ this.handle.queue.submit([commandBuffer.handle]);
141
+ this.popErrorScope((error) => {
142
+ this.reportError(new Error(`${this} command submission: ${error.message}`), this)();
143
+ this.debug();
144
+ });
145
+ }
146
+ // WebGPU specific
147
+ pushErrorScope(scope) {
148
+ this.handle.pushErrorScope(scope);
149
+ }
150
+ popErrorScope(handler) {
151
+ this.handle.popErrorScope().then((error) => {
152
+ if (error) {
153
+ handler(error);
154
+ }
155
+ });
146
156
  }
147
157
  // PRIVATE METHODS
148
158
  _getInfo() {
@@ -203,32 +213,5 @@ export class WebGPUDevice extends Device {
203
213
  }
204
214
  return capabilities;
205
215
  }
206
- // DEPRECATED METHODS
207
- // @deprecated
208
- copyExternalImageToTexture(options) {
209
- const { source, sourceX = 0, sourceY = 0, texture, mipLevel = 0, aspect = 'all', colorSpace = 'display-p3', premultipliedAlpha = false,
210
- // destinationX,
211
- // destinationY,
212
- // desitnationZ,
213
- width = texture.width, height = texture.height, depth = 1 } = options;
214
- const webGpuTexture = texture;
215
- this.handle?.queue.copyExternalImageToTexture(
216
- // source: GPUImageCopyExternalImage
217
- {
218
- source,
219
- origin: [sourceX, sourceY]
220
- },
221
- // destination: GPUImageCopyTextureTagged
222
- {
223
- texture: webGpuTexture.handle,
224
- origin: [0, 0, 0], // [x, y, z],
225
- mipLevel,
226
- aspect,
227
- colorSpace,
228
- premultipliedAlpha
229
- },
230
- // copySize: GPUExtent3D
231
- [width, height, depth]);
232
- }
233
216
  }
234
217
  //# sourceMappingURL=webgpu-device.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webgpu-device.js","sourceRoot":"","sources":["../../src/adapter/webgpu-device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webgpu-device.js","sourceRoot":"","sources":["../../src/adapter/webgpu-device.ts"],"names":[],"mappings":"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"}