@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.
- package/dist/adapter/helpers/accessor-to-format.js +1 -0
- package/dist/adapter/helpers/accessor-to-format.js.map +1 -0
- package/dist/adapter/helpers/convert-texture-format.js +1 -0
- package/dist/adapter/helpers/convert-texture-format.js.map +1 -0
- package/dist/adapter/helpers/get-bind-group.js +14 -2
- package/dist/adapter/helpers/get-bind-group.js.map +1 -0
- package/dist/adapter/helpers/get-vertex-buffer-layout.js +2 -1
- package/dist/adapter/helpers/get-vertex-buffer-layout.js.map +1 -0
- package/dist/adapter/helpers/webgpu-parameters.js +1 -0
- package/dist/adapter/helpers/webgpu-parameters.js.map +1 -0
- package/dist/adapter/resources/webgpu-buffer.js +1 -0
- package/dist/adapter/resources/webgpu-buffer.js.map +1 -0
- package/dist/adapter/resources/webgpu-command-encoder.d.ts +4 -4
- package/dist/adapter/resources/webgpu-command-encoder.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-command-encoder.js +22 -4
- package/dist/adapter/resources/webgpu-command-encoder.js.map +1 -0
- package/dist/adapter/resources/webgpu-compute-pass.js +1 -0
- package/dist/adapter/resources/webgpu-compute-pass.js.map +1 -0
- package/dist/adapter/resources/webgpu-compute-pipeline.js +1 -0
- package/dist/adapter/resources/webgpu-compute-pipeline.js.map +1 -0
- package/dist/adapter/resources/webgpu-external-texture.js +1 -0
- package/dist/adapter/resources/webgpu-external-texture.js.map +1 -0
- package/dist/adapter/resources/webgpu-framebuffer.d.ts +1 -0
- package/dist/adapter/resources/webgpu-framebuffer.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-framebuffer.js +4 -0
- package/dist/adapter/resources/webgpu-framebuffer.js.map +1 -0
- package/dist/adapter/resources/webgpu-query-set.js +1 -0
- package/dist/adapter/resources/webgpu-query-set.js.map +1 -0
- package/dist/adapter/resources/webgpu-render-pass.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-render-pass.js +19 -6
- package/dist/adapter/resources/webgpu-render-pass.js.map +1 -0
- package/dist/adapter/resources/webgpu-render-pipeline.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-render-pipeline.js +14 -0
- package/dist/adapter/resources/webgpu-render-pipeline.js.map +1 -0
- package/dist/adapter/resources/webgpu-sampler.d.ts +1 -1
- package/dist/adapter/resources/webgpu-sampler.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-sampler.js +15 -6
- package/dist/adapter/resources/webgpu-sampler.js.map +1 -0
- package/dist/adapter/resources/webgpu-shader.d.ts +2 -2
- package/dist/adapter/resources/webgpu-shader.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-shader.js +23 -19
- package/dist/adapter/resources/webgpu-shader.js.map +1 -0
- package/dist/adapter/resources/webgpu-texture-view.js +1 -0
- package/dist/adapter/resources/webgpu-texture-view.js.map +1 -0
- package/dist/adapter/resources/webgpu-texture.d.ts +2 -5
- package/dist/adapter/resources/webgpu-texture.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-texture.js +17 -38
- package/dist/adapter/resources/webgpu-texture.js.map +1 -0
- package/dist/adapter/resources/webgpu-vertex-array.d.ts.map +1 -1
- package/dist/adapter/resources/webgpu-vertex-array.js +3 -2
- package/dist/adapter/resources/webgpu-vertex-array.js.map +1 -0
- package/dist/adapter/webgpu-adapter.d.ts.map +1 -1
- package/dist/adapter/webgpu-adapter.js +3 -6
- package/dist/adapter/webgpu-adapter.js.map +1 -0
- package/dist/adapter/webgpu-canvas-context.d.ts +1 -0
- package/dist/adapter/webgpu-canvas-context.d.ts.map +1 -1
- package/dist/adapter/webgpu-canvas-context.js +21 -7
- package/dist/adapter/webgpu-canvas-context.js.map +1 -0
- package/dist/adapter/webgpu-device.d.ts +3 -7
- package/dist/adapter/webgpu-device.d.ts.map +1 -1
- package/dist/adapter/webgpu-device.js +30 -28
- package/dist/adapter/webgpu-device.js.map +1 -0
- package/dist/dist.dev.js +169 -124
- package/dist/dist.min.js +5 -1
- package/dist/index.cjs +152 -111
- package/dist/index.cjs.map +4 -4
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/package.json +3 -3
- package/src/adapter/helpers/get-bind-group.ts +18 -2
- package/src/adapter/helpers/get-vertex-buffer-layout.ts +1 -1
- package/src/adapter/resources/webgpu-command-encoder.ts +26 -8
- package/src/adapter/resources/webgpu-framebuffer.ts +4 -0
- package/src/adapter/resources/webgpu-render-pass.ts +29 -14
- package/src/adapter/resources/webgpu-render-pipeline.ts +14 -0
- package/src/adapter/resources/webgpu-sampler.ts +16 -6
- package/src/adapter/resources/webgpu-shader.ts +23 -23
- package/src/adapter/resources/webgpu-texture.ts +31 -59
- package/src/adapter/resources/webgpu-vertex-array.ts +7 -2
- package/src/adapter/webgpu-adapter.ts +2 -7
- package/src/adapter/webgpu-canvas-context.ts +22 -7
- 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.
|
|
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
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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.
|
|
130
|
+
const newProps = this._normalizeBufferProps(props);
|
|
147
131
|
return new WebGPUBuffer(this, newProps);
|
|
148
132
|
}
|
|
149
133
|
|
|
150
|
-
|
|
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.
|
|
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;
|