@luma.gl/webgpu 9.3.0-alpha.4 → 9.3.0-alpha.8

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 (125) hide show
  1. package/dist/adapter/helpers/cpu-hotspot-profiler.d.ts +54 -0
  2. package/dist/adapter/helpers/cpu-hotspot-profiler.d.ts.map +1 -0
  3. package/dist/adapter/helpers/cpu-hotspot-profiler.js +26 -0
  4. package/dist/adapter/helpers/cpu-hotspot-profiler.js.map +1 -0
  5. package/dist/adapter/helpers/generate-mipmaps-webgpu.d.ts +7 -0
  6. package/dist/adapter/helpers/generate-mipmaps-webgpu.d.ts.map +1 -0
  7. package/dist/adapter/helpers/generate-mipmaps-webgpu.js +490 -0
  8. package/dist/adapter/helpers/generate-mipmaps-webgpu.js.map +1 -0
  9. package/dist/adapter/helpers/get-bind-group.d.ts +4 -6
  10. package/dist/adapter/helpers/get-bind-group.d.ts.map +1 -1
  11. package/dist/adapter/helpers/get-bind-group.js +31 -30
  12. package/dist/adapter/helpers/get-bind-group.js.map +1 -1
  13. package/dist/adapter/helpers/get-vertex-buffer-layout.d.ts +3 -1
  14. package/dist/adapter/helpers/get-vertex-buffer-layout.d.ts.map +1 -1
  15. package/dist/adapter/helpers/get-vertex-buffer-layout.js +17 -12
  16. package/dist/adapter/helpers/get-vertex-buffer-layout.js.map +1 -1
  17. package/dist/adapter/helpers/webgpu-parameters.d.ts.map +1 -1
  18. package/dist/adapter/helpers/webgpu-parameters.js +1 -0
  19. package/dist/adapter/helpers/webgpu-parameters.js.map +1 -1
  20. package/dist/adapter/resources/webgpu-buffer.d.ts.map +1 -1
  21. package/dist/adapter/resources/webgpu-buffer.js +19 -3
  22. package/dist/adapter/resources/webgpu-buffer.js.map +1 -1
  23. package/dist/adapter/resources/webgpu-command-buffer.js +1 -1
  24. package/dist/adapter/resources/webgpu-command-buffer.js.map +1 -1
  25. package/dist/adapter/resources/webgpu-command-encoder.d.ts +7 -16
  26. package/dist/adapter/resources/webgpu-command-encoder.d.ts.map +1 -1
  27. package/dist/adapter/resources/webgpu-command-encoder.js +89 -32
  28. package/dist/adapter/resources/webgpu-command-encoder.js.map +1 -1
  29. package/dist/adapter/resources/webgpu-compute-pass.d.ts +3 -3
  30. package/dist/adapter/resources/webgpu-compute-pass.d.ts.map +1 -1
  31. package/dist/adapter/resources/webgpu-compute-pass.js +30 -12
  32. package/dist/adapter/resources/webgpu-compute-pass.js.map +1 -1
  33. package/dist/adapter/resources/webgpu-compute-pipeline.d.ts +7 -9
  34. package/dist/adapter/resources/webgpu-compute-pipeline.d.ts.map +1 -1
  35. package/dist/adapter/resources/webgpu-compute-pipeline.js +30 -17
  36. package/dist/adapter/resources/webgpu-compute-pipeline.js.map +1 -1
  37. package/dist/adapter/resources/webgpu-fence.d.ts.map +1 -1
  38. package/dist/adapter/resources/webgpu-fence.js +9 -1
  39. package/dist/adapter/resources/webgpu-fence.js.map +1 -1
  40. package/dist/adapter/resources/webgpu-framebuffer.d.ts +6 -0
  41. package/dist/adapter/resources/webgpu-framebuffer.d.ts.map +1 -1
  42. package/dist/adapter/resources/webgpu-framebuffer.js +16 -0
  43. package/dist/adapter/resources/webgpu-framebuffer.js.map +1 -1
  44. package/dist/adapter/resources/webgpu-pipeline-layout.d.ts +1 -1
  45. package/dist/adapter/resources/webgpu-pipeline-layout.d.ts.map +1 -1
  46. package/dist/adapter/resources/webgpu-pipeline-layout.js +10 -16
  47. package/dist/adapter/resources/webgpu-pipeline-layout.js.map +1 -1
  48. package/dist/adapter/resources/webgpu-query-set.d.ts +33 -4
  49. package/dist/adapter/resources/webgpu-query-set.d.ts.map +1 -1
  50. package/dist/adapter/resources/webgpu-query-set.js +145 -4
  51. package/dist/adapter/resources/webgpu-query-set.js.map +1 -1
  52. package/dist/adapter/resources/webgpu-render-pass.d.ts +6 -3
  53. package/dist/adapter/resources/webgpu-render-pass.d.ts.map +1 -1
  54. package/dist/adapter/resources/webgpu-render-pass.js +78 -34
  55. package/dist/adapter/resources/webgpu-render-pass.js.map +1 -1
  56. package/dist/adapter/resources/webgpu-render-pipeline.d.ts +14 -10
  57. package/dist/adapter/resources/webgpu-render-pipeline.d.ts.map +1 -1
  58. package/dist/adapter/resources/webgpu-render-pipeline.js +56 -35
  59. package/dist/adapter/resources/webgpu-render-pipeline.js.map +1 -1
  60. package/dist/adapter/resources/webgpu-sampler.d.ts.map +1 -1
  61. package/dist/adapter/resources/webgpu-sampler.js +4 -0
  62. package/dist/adapter/resources/webgpu-sampler.js.map +1 -1
  63. package/dist/adapter/resources/webgpu-shader.d.ts.map +1 -1
  64. package/dist/adapter/resources/webgpu-shader.js +17 -1
  65. package/dist/adapter/resources/webgpu-shader.js.map +1 -1
  66. package/dist/adapter/resources/webgpu-texture-view.d.ts +6 -0
  67. package/dist/adapter/resources/webgpu-texture-view.d.ts.map +1 -1
  68. package/dist/adapter/resources/webgpu-texture-view.js +47 -11
  69. package/dist/adapter/resources/webgpu-texture-view.js.map +1 -1
  70. package/dist/adapter/resources/webgpu-texture.d.ts +18 -5
  71. package/dist/adapter/resources/webgpu-texture.d.ts.map +1 -1
  72. package/dist/adapter/resources/webgpu-texture.js +148 -97
  73. package/dist/adapter/resources/webgpu-texture.js.map +1 -1
  74. package/dist/adapter/resources/webgpu-vertex-array.js +1 -1
  75. package/dist/adapter/resources/webgpu-vertex-array.js.map +1 -1
  76. package/dist/adapter/webgpu-canvas-context.d.ts +2 -0
  77. package/dist/adapter/webgpu-canvas-context.d.ts.map +1 -1
  78. package/dist/adapter/webgpu-canvas-context.js +78 -19
  79. package/dist/adapter/webgpu-canvas-context.js.map +1 -1
  80. package/dist/adapter/webgpu-device.d.ts +10 -2
  81. package/dist/adapter/webgpu-device.d.ts.map +1 -1
  82. package/dist/adapter/webgpu-device.js +159 -13
  83. package/dist/adapter/webgpu-device.js.map +1 -1
  84. package/dist/adapter/webgpu-presentation-context.d.ts +25 -0
  85. package/dist/adapter/webgpu-presentation-context.d.ts.map +1 -0
  86. package/dist/adapter/webgpu-presentation-context.js +144 -0
  87. package/dist/adapter/webgpu-presentation-context.js.map +1 -0
  88. package/dist/dist.dev.js +3180 -1849
  89. package/dist/dist.min.js +168 -9
  90. package/dist/index.cjs +1640 -405
  91. package/dist/index.cjs.map +4 -4
  92. package/dist/wgsl/get-shader-layout-wgsl.d.ts.map +1 -1
  93. package/dist/wgsl/get-shader-layout-wgsl.js +8 -0
  94. package/dist/wgsl/get-shader-layout-wgsl.js.map +1 -1
  95. package/package.json +5 -5
  96. package/src/adapter/helpers/cpu-hotspot-profiler.ts +70 -0
  97. package/src/adapter/helpers/generate-mipmaps-webgpu.ts +583 -0
  98. package/src/adapter/helpers/get-bind-group.ts +42 -49
  99. package/src/adapter/helpers/get-vertex-buffer-layout.ts +31 -12
  100. package/src/adapter/helpers/webgpu-parameters.ts +2 -0
  101. package/src/adapter/resources/webgpu-buffer.ts +18 -3
  102. package/src/adapter/resources/webgpu-command-buffer.ts +1 -1
  103. package/src/adapter/resources/webgpu-command-encoder.ts +129 -50
  104. package/src/adapter/resources/webgpu-compute-pass.ts +48 -13
  105. package/src/adapter/resources/webgpu-compute-pipeline.ts +49 -18
  106. package/src/adapter/resources/webgpu-fence.ts +11 -3
  107. package/src/adapter/resources/webgpu-framebuffer.ts +21 -0
  108. package/src/adapter/resources/webgpu-pipeline-layout.ts +16 -14
  109. package/src/adapter/resources/webgpu-query-set.ts +185 -9
  110. package/src/adapter/resources/webgpu-render-pass.ts +92 -40
  111. package/src/adapter/resources/webgpu-render-pipeline.ts +83 -44
  112. package/src/adapter/resources/webgpu-sampler.ts +5 -0
  113. package/src/adapter/resources/webgpu-shader.ts +16 -1
  114. package/src/adapter/resources/webgpu-texture-view.ts +51 -11
  115. package/src/adapter/resources/webgpu-texture.ts +198 -132
  116. package/src/adapter/resources/webgpu-vertex-array.ts +1 -1
  117. package/src/adapter/webgpu-canvas-context.ts +91 -26
  118. package/src/adapter/webgpu-device.ts +212 -17
  119. package/src/adapter/webgpu-presentation-context.ts +180 -0
  120. package/src/wgsl/get-shader-layout-wgsl.ts +9 -0
  121. package/dist/adapter/helpers/accessor-to-format.d.ts +0 -1
  122. package/dist/adapter/helpers/accessor-to-format.d.ts.map +0 -1
  123. package/dist/adapter/helpers/accessor-to-format.js +0 -105
  124. package/dist/adapter/helpers/accessor-to-format.js.map +0 -1
  125. package/src/adapter/helpers/accessor-to-format.ts +0 -104
@@ -1,5 +1,5 @@
1
1
  // luma.gl, MIT license
2
- import { Buffer, Texture, log, textureFormatDecoder } from '@luma.gl/core';
2
+ import { Texture, log, textureFormatDecoder } from '@luma.gl/core';
3
3
  import { getWebGPUTextureFormat } from "../helpers/convert-texture-format.js";
4
4
  import { WebGPUSampler } from "./webgpu-sampler.js";
5
5
  import { WebGPUTextureView } from "./webgpu-texture-view.js";
@@ -9,9 +9,21 @@ export class WebGPUTexture extends Texture {
9
9
  handle;
10
10
  sampler;
11
11
  view;
12
+ _allocatedByteLength = 0;
12
13
  constructor(device, props) {
13
- super(device, props, { byteAlignment: 256 }); // WebGPU requires row width to be a multiple of 256 bytes
14
+ // WebGPU buffer copies use 256-byte row alignment. queue.writeTexture() can use tightly packed rows.
15
+ super(device, props, { byteAlignment: 256 });
14
16
  this.device = device;
17
+ if (props.sampler instanceof WebGPUSampler) {
18
+ this.sampler = props.sampler;
19
+ }
20
+ else if (props.sampler === undefined) {
21
+ this.sampler = this.device.getDefaultSampler();
22
+ }
23
+ else {
24
+ this.sampler = new WebGPUSampler(this.device, props.sampler || {});
25
+ this.attachResource(this.sampler);
26
+ }
15
27
  this.device.pushErrorScope('out-of-memory');
16
28
  this.device.pushErrorScope('validation');
17
29
  this.handle =
@@ -37,8 +49,6 @@ export class WebGPUTexture extends Texture {
37
49
  this.device.reportError(new Error(`${this} out of memory: ${error.message}`), this)();
38
50
  this.device.debug();
39
51
  });
40
- // Update props if external handle was supplied - used mainly by CanvasContext.getDefaultFramebuffer()
41
- // TODO - Read all properties directly from the supplied handle?
42
52
  if (this.props.handle) {
43
53
  this.handle.label ||= this.id;
44
54
  // @ts-expect-error readonly
@@ -46,10 +56,6 @@ export class WebGPUTexture extends Texture {
46
56
  // @ts-expect-error readonly
47
57
  this.height = this.handle.height;
48
58
  }
49
- this.sampler =
50
- props.sampler instanceof WebGPUSampler
51
- ? props.sampler
52
- : new WebGPUSampler(this.device, props.sampler || {});
53
59
  this.view = new WebGPUTextureView(this.device, {
54
60
  ...this.props,
55
61
  texture: this,
@@ -57,12 +63,30 @@ export class WebGPUTexture extends Texture {
57
63
  // Note: arrayLayerCount controls the view of array textures, but does not apply to 3d texture depths
58
64
  arrayLayerCount: this.dimension !== '3d' ? this.depth : 1
59
65
  });
66
+ this.attachResource(this.view);
60
67
  // Set initial data
61
68
  // Texture base class strips out the data prop from this.props, so we need to handle it here
62
69
  this._initializeData(props.data);
70
+ this._allocatedByteLength = this.getAllocatedByteLength();
71
+ if (!this.props.handle) {
72
+ this.trackAllocatedMemory(this._allocatedByteLength, 'Texture');
73
+ }
74
+ else {
75
+ this.trackReferencedMemory(this._allocatedByteLength, 'Texture');
76
+ }
63
77
  }
64
78
  destroy() {
65
- this.handle?.destroy();
79
+ if (this.destroyed) {
80
+ return;
81
+ }
82
+ if (!this.props.handle && this.handle) {
83
+ this.trackDeallocatedMemory('Texture');
84
+ this.handle.destroy();
85
+ }
86
+ else if (this.handle) {
87
+ this.trackDeallocatedReferencedMemory('Texture');
88
+ }
89
+ this.destroyResource();
66
90
  // @ts-expect-error readonly
67
91
  this.handle = null;
68
92
  }
@@ -98,35 +122,6 @@ export class WebGPUTexture extends Texture {
98
122
  // TODO - should these be clipped to the texture size minus x,y,z?
99
123
  return { width: options.width, height: options.height };
100
124
  }
101
- copyImageData(options_) {
102
- const { width, height, depth } = this;
103
- const options = this._normalizeCopyImageDataOptions(options_);
104
- this.device.pushErrorScope('validation');
105
- this.device.handle.queue.writeTexture(
106
- // destination: GPUImageCopyTexture
107
- {
108
- // texture subresource
109
- texture: this.handle,
110
- mipLevel: options.mipLevel,
111
- aspect: options.aspect,
112
- // origin to write to
113
- origin: [options.x, options.y, options.z]
114
- },
115
- // data
116
- options.data,
117
- // dataLayout: GPUImageDataLayout
118
- {
119
- offset: options.byteOffset,
120
- bytesPerRow: options.bytesPerRow,
121
- rowsPerImage: options.rowsPerImage
122
- },
123
- // size: GPUExtent3D - extents of the content to write
124
- [width, height, depth]);
125
- this.device.popErrorScope((error) => {
126
- this.device.reportError(new Error(`copyImageData: ${error.message}`), this)();
127
- this.device.debug();
128
- });
129
- }
130
125
  generateMipmapsWebGL() {
131
126
  log.warn(`${this}: generateMipmaps not supported in WebGPU`)();
132
127
  }
@@ -138,71 +133,63 @@ export class WebGPUTexture extends Texture {
138
133
  };
139
134
  }
140
135
  readBuffer(options = {}, buffer) {
141
- const { x = 0, y = 0, z = 0, width = this.width, height = this.height, depthOrArrayLayers = this.depth, mipLevel = 0, aspect = 'all' } = options;
142
- const layout = this.computeMemoryLayout(options);
143
- const { bytesPerRow, rowsPerImage, byteLength } = layout;
144
- // Create a GPUBuffer to hold the copied pixel data.
145
- const readBuffer = buffer ||
146
- this.device.createBuffer({
147
- byteLength,
148
- usage: Buffer.COPY_DST | Buffer.MAP_READ
149
- });
150
- const gpuReadBuffer = readBuffer.handle;
151
- // Record commands to copy from the texture to the buffer.
136
+ if (!buffer) {
137
+ throw new Error(`${this} readBuffer requires a destination buffer`);
138
+ }
139
+ const { x, y, z, width, height, depthOrArrayLayers, mipLevel, aspect } = this._getSupportedColorReadOptions(options);
140
+ const byteOffset = options.byteOffset ?? 0;
141
+ const layout = this.computeMemoryLayout({ width, height, depthOrArrayLayers, mipLevel });
142
+ const { byteLength } = layout;
143
+ if (buffer.byteLength < byteOffset + byteLength) {
144
+ throw new Error(`${this} readBuffer target is too small (${buffer.byteLength} < ${byteOffset + byteLength})`);
145
+ }
152
146
  const gpuDevice = this.device.handle;
153
147
  this.device.pushErrorScope('validation');
154
148
  const commandEncoder = gpuDevice.createCommandEncoder();
155
- commandEncoder.copyTextureToBuffer(
156
- // source
157
- {
158
- texture: this.handle,
159
- origin: { x, y, z },
160
- // origin: [options.x, options.y, 0], // options.depth],
161
- mipLevel,
162
- aspect
163
- // colorSpace: options.colorSpace,
164
- // premultipliedAlpha: options.premultipliedAlpha
165
- },
166
- // destination
167
- {
168
- buffer: gpuReadBuffer,
169
- offset: 0,
170
- bytesPerRow,
171
- rowsPerImage
172
- },
173
- // copy size
174
- {
175
- width,
176
- height,
177
- depthOrArrayLayers
178
- });
179
- // Submit the command.
149
+ this.copyToBuffer(commandEncoder, { x, y, z, width, height, depthOrArrayLayers, mipLevel, aspect, byteOffset }, buffer);
180
150
  const commandBuffer = commandEncoder.finish();
181
151
  this.device.handle.queue.submit([commandBuffer]);
182
152
  this.device.popErrorScope((error) => {
183
153
  this.device.reportError(new Error(`${this} readBuffer: ${error.message}`), this)();
184
154
  this.device.debug();
185
155
  });
186
- return readBuffer;
156
+ return buffer;
187
157
  }
188
158
  async readDataAsync(options = {}) {
189
- const buffer = this.readBuffer(options);
190
- const data = await buffer.readAsync();
191
- buffer.destroy();
192
- return data.buffer;
159
+ throw new Error(`${this} readDataAsync is deprecated; use readBuffer() with an explicit destination buffer or DynamicTexture.readAsync()`);
160
+ }
161
+ copyToBuffer(commandEncoder, options = {}, buffer) {
162
+ const { byteOffset = 0, bytesPerRow: requestedBytesPerRow, rowsPerImage: requestedRowsPerImage, ...textureReadOptions } = options;
163
+ const { x, y, z, width, height, depthOrArrayLayers, mipLevel, aspect } = this._getSupportedColorReadOptions(textureReadOptions);
164
+ const layout = this.computeMemoryLayout({ width, height, depthOrArrayLayers, mipLevel });
165
+ const effectiveBytesPerRow = requestedBytesPerRow ?? layout.bytesPerRow;
166
+ const effectiveRowsPerImage = requestedRowsPerImage ?? layout.rowsPerImage;
167
+ const webgpuBuffer = buffer;
168
+ commandEncoder.copyTextureToBuffer({
169
+ texture: this.handle,
170
+ origin: { x, y, z },
171
+ mipLevel,
172
+ aspect
173
+ }, {
174
+ buffer: webgpuBuffer.handle,
175
+ offset: byteOffset,
176
+ bytesPerRow: effectiveBytesPerRow,
177
+ rowsPerImage: effectiveRowsPerImage
178
+ }, {
179
+ width,
180
+ height,
181
+ depthOrArrayLayers
182
+ });
193
183
  }
194
- writeBuffer(buffer, options = {}) {
195
- const { x = 0, y = 0, z = 0, width = this.width, height = this.height, depthOrArrayLayers = this.depth, mipLevel = 0, aspect = 'all' } = options;
196
- const layout = this.computeMemoryLayout(options);
197
- // Get the data on the CPU.
198
- // await buffer.mapAndReadAsync();
199
- const { bytesPerRow, rowsPerImage } = layout;
184
+ writeBuffer(buffer, options_ = {}) {
185
+ const options = this._normalizeTextureWriteOptions(options_);
186
+ const { x, y, z, width, height, depthOrArrayLayers, mipLevel, aspect, byteOffset, bytesPerRow, rowsPerImage } = options;
200
187
  const gpuDevice = this.device.handle;
201
188
  this.device.pushErrorScope('validation');
202
189
  const commandEncoder = gpuDevice.createCommandEncoder();
203
190
  commandEncoder.copyBufferToTexture({
204
191
  buffer: buffer.handle,
205
- offset: 0,
192
+ offset: byteOffset,
206
193
  bytesPerRow,
207
194
  rowsPerImage
208
195
  }, {
@@ -218,32 +205,96 @@ export class WebGPUTexture extends Texture {
218
205
  this.device.debug();
219
206
  });
220
207
  }
221
- writeData(data, options = {}) {
208
+ writeData(data, options_ = {}) {
222
209
  const device = this.device;
223
- const { x = 0, y = 0, z = 0, width = this.width, height = this.height, depthOrArrayLayers = this.depth, mipLevel = 0, aspect = 'all' } = options;
224
- const layout = textureFormatDecoder.computeMemoryLayout({
210
+ const options = this._normalizeTextureWriteOptions(options_);
211
+ const { x, y, z, width, height, depthOrArrayLayers, mipLevel, aspect, byteOffset } = options;
212
+ const source = data;
213
+ const formatInfo = this.device.getTextureFormatInfo(this.format);
214
+ // queue.writeTexture() defaults to tightly packed rows, unlike WebGPU buffer copy paths.
215
+ const packedSourceLayout = textureFormatDecoder.computeMemoryLayout({
225
216
  format: this.format,
226
- width: this.width,
227
- height: this.height,
228
- depth: this.depth,
229
- byteAlignment: this.byteAlignment
217
+ width,
218
+ height,
219
+ depth: depthOrArrayLayers,
220
+ byteAlignment: 1
230
221
  });
231
- const { bytesPerRow, rowsPerImage } = layout;
222
+ const bytesPerRow = options_.bytesPerRow ?? packedSourceLayout.bytesPerRow;
223
+ const rowsPerImage = options_.rowsPerImage ?? packedSourceLayout.rowsPerImage;
224
+ let copyWidth = width;
225
+ let copyHeight = height;
226
+ if (formatInfo.compressed) {
227
+ const blockWidth = formatInfo.blockWidth || 1;
228
+ const blockHeight = formatInfo.blockHeight || 1;
229
+ copyWidth = Math.ceil(width / blockWidth) * blockWidth;
230
+ copyHeight = Math.ceil(height / blockHeight) * blockHeight;
231
+ }
232
232
  this.device.pushErrorScope('validation');
233
233
  device.handle.queue.writeTexture({
234
234
  texture: this.handle,
235
235
  mipLevel,
236
236
  aspect,
237
237
  origin: { x, y, z }
238
- }, data, {
239
- offset: 0,
238
+ }, source, {
239
+ offset: byteOffset,
240
240
  bytesPerRow,
241
241
  rowsPerImage
242
- }, { width, height, depthOrArrayLayers });
242
+ }, { width: copyWidth, height: copyHeight, depthOrArrayLayers });
243
243
  this.device.popErrorScope((error) => {
244
244
  this.device.reportError(new Error(`${this} writeData: ${error.message}`), this)();
245
245
  this.device.debug();
246
246
  });
247
247
  }
248
+ /**
249
+ * Internal-only hook for the cached CanvasContext/PresentationContext swapchain path.
250
+ * Rebinds this handle-backed texture wrapper to the current per-frame canvas texture
251
+ * without allocating a new luma.gl Texture or TextureView wrapper.
252
+ */
253
+ _reinitialize(handle, props) {
254
+ const nextWidth = props?.width ?? handle.width ?? this.width;
255
+ const nextHeight = props?.height ?? handle.height ?? this.height;
256
+ const nextDepth = props?.depth ?? this.depth;
257
+ const nextFormat = props?.format ?? this.format;
258
+ const allocationMayHaveChanged = nextWidth !== this.width ||
259
+ nextHeight !== this.height ||
260
+ nextDepth !== this.depth ||
261
+ nextFormat !== this.format;
262
+ handle.label ||= this.id;
263
+ // @ts-expect-error readonly
264
+ this.handle = handle;
265
+ // @ts-expect-error readonly
266
+ this.width = nextWidth;
267
+ // @ts-expect-error readonly
268
+ this.height = nextHeight;
269
+ if (props?.depth !== undefined) {
270
+ // @ts-expect-error readonly
271
+ this.depth = nextDepth;
272
+ }
273
+ if (props?.format !== undefined) {
274
+ // @ts-expect-error readonly
275
+ this.format = nextFormat;
276
+ }
277
+ this.props.handle = handle;
278
+ if (props?.width !== undefined) {
279
+ this.props.width = props.width;
280
+ }
281
+ if (props?.height !== undefined) {
282
+ this.props.height = props.height;
283
+ }
284
+ if (props?.depth !== undefined) {
285
+ this.props.depth = props.depth;
286
+ }
287
+ if (props?.format !== undefined) {
288
+ this.props.format = props.format;
289
+ }
290
+ if (allocationMayHaveChanged) {
291
+ const nextAllocation = this.getAllocatedByteLength();
292
+ if (nextAllocation !== this._allocatedByteLength) {
293
+ this._allocatedByteLength = nextAllocation;
294
+ this.trackReferencedMemory(nextAllocation, 'Texture');
295
+ }
296
+ }
297
+ this.view._reinitialize(this);
298
+ }
248
299
  }
249
300
  //# sourceMappingURL=webgpu-texture.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webgpu-texture.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgpu-texture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webgpu-texture.js","sourceRoot":"","sources":["../../../src/adapter/resources/webgpu-texture.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { getBrowser } from '@probe.gl/env';
6
6
  /** VertexArrayObject wrapper */
7
7
  export class WebGPUVertexArray extends VertexArray {
8
8
  get [Symbol.toStringTag]() {
9
- return 'WebGPUVertexArray';
9
+ return 'VertexArray';
10
10
  }
11
11
  device;
12
12
  /** Vertex Array is just a helper class under WebGPU */
@@ -1 +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,uDAAuD;IAC9C,MAAM,GAAG,IAAI,CAAC;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
+ {"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,aAAa,CAAC;IACvB,CAAC;IAEQ,MAAM,CAAe;IAC9B,uDAAuD;IAC9C,MAAM,GAAG,IAAI,CAAC;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"}
@@ -11,7 +11,9 @@ import { WebGPUTexture } from "./resources/webgpu-texture.js";
11
11
  export declare class WebGPUCanvasContext extends CanvasContext {
12
12
  readonly device: WebGPUDevice;
13
13
  readonly handle: GPUCanvasContext;
14
+ private colorAttachment;
14
15
  private depthStencilAttachment;
16
+ private framebuffer;
15
17
  get [Symbol.toStringTag](): string;
16
18
  constructor(device: WebGPUDevice, adapter: GPUAdapter, props: CanvasContextProps);
17
19
  /** Destroy any textures produced while configured and remove the context configuration. */
@@ -1 +1 @@
1
- {"version":3,"file":"webgpu-canvas-context.d.ts","sourceRoot":"","sources":["../../src/adapter/webgpu-canvas-context.ts"],"names":[],"mappings":"AAOA,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;IAehF,2FAA2F;IAClF,OAAO,IAAI,IAAI;IAOxB,8DAA8D;IAC9D,gBAAgB,IAAI,IAAI;IAiBxB,0EAA0E;IAC1E,sBAAsB,CACpB,OAAO,GAAE;QAAC,kBAAkB,CAAC,EAAE,yBAAyB,GAAG,KAAK,CAAA;KAE/D,GACA,iBAAiB;IA8BpB,mEAAmE;IACnE,kBAAkB,IAAI,aAAa;IAWnC,8FAA8F;IAC9F,6BAA6B,CAAC,kBAAkB,EAAE,yBAAyB,GAAG,aAAa;CAY5F"}
1
+ {"version":3,"file":"webgpu-canvas-context.d.ts","sourceRoot":"","sources":["../../src/adapter/webgpu-canvas-context.ts"],"names":[],"mappings":"AAOA,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;AAGzD;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAElC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,sBAAsB,CAA8B;IAC5D,OAAO,CAAC,WAAW,CAAkC;IAErD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;gBAEW,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB;IAgBhF,2FAA2F;IAClF,OAAO,IAAI,IAAI;IAmBxB,8DAA8D;IAC9D,gBAAgB,IAAI,IAAI;IAmBxB,0EAA0E;IAC1E,sBAAsB,CACpB,OAAO,GAAE;QAAC,kBAAkB,CAAC,EAAE,yBAAyB,GAAG,KAAK,CAAA;KAE/D,GACA,iBAAiB;IAqDpB,mEAAmE;IACnE,kBAAkB,IAAI,aAAa;IA6BnC,8FAA8F;IAC9F,6BAA6B,CAAC,kBAAkB,EAAE,yBAAyB,GAAG,aAAa;CAkB5F"}
@@ -3,6 +3,7 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
  import { CanvasContext, Texture, log } from '@luma.gl/core';
5
5
  import { WebGPUFramebuffer } from "./resources/webgpu-framebuffer.js";
6
+ import { getCpuHotspotProfiler, getTimestamp } from "./helpers/cpu-hotspot-profiler.js";
6
7
  /**
7
8
  * Holds a WebGPU Canvas Context
8
9
  * The primary job of the CanvasContext is to generate textures for rendering into the current canvas
@@ -11,7 +12,9 @@ import { WebGPUFramebuffer } from "./resources/webgpu-framebuffer.js";
11
12
  export class WebGPUCanvasContext extends CanvasContext {
12
13
  device;
13
14
  handle;
15
+ colorAttachment = null;
14
16
  depthStencilAttachment = null;
17
+ framebuffer = null;
15
18
  get [Symbol.toStringTag]() {
16
19
  return 'WebGPUCanvasContext';
17
20
  }
@@ -26,9 +29,22 @@ export class WebGPUCanvasContext extends CanvasContext {
26
29
  // Base class constructor cannot access derived methods/fields, so we need to call these functions in the subclass constructor
27
30
  this._setAutoCreatedCanvasId(`${this.device.id}-canvas`);
28
31
  this._configureDevice();
32
+ this._startObservers();
29
33
  }
30
34
  /** Destroy any textures produced while configured and remove the context configuration. */
31
35
  destroy() {
36
+ if (this.framebuffer) {
37
+ this.framebuffer.destroy();
38
+ this.framebuffer = null;
39
+ }
40
+ if (this.colorAttachment) {
41
+ this.colorAttachment.destroy();
42
+ this.colorAttachment = null;
43
+ }
44
+ if (this.depthStencilAttachment) {
45
+ this.depthStencilAttachment.destroy();
46
+ this.depthStencilAttachment = null;
47
+ }
32
48
  this.handle.unconfigure();
33
49
  super.destroy();
34
50
  }
@@ -48,45 +64,88 @@ export class WebGPUCanvasContext extends CanvasContext {
48
64
  colorSpace: this.props.colorSpace,
49
65
  alphaMode: this.props.alphaMode
50
66
  });
67
+ this._createDepthStencilAttachment(this.device.preferredDepthFormat);
51
68
  }
52
69
  /** Update framebuffer with properly resized "swap chain" texture views */
53
70
  _getCurrentFramebuffer(options = {
54
71
  depthStencilFormat: 'depth24plus'
55
72
  }) {
56
- // Wrap the current canvas context texture in a luma.gl texture
57
- const currentColorAttachment = this._getCurrentTexture();
58
- // TODO - temporary debug code
59
- if (currentColorAttachment.width !== this.drawingBufferWidth ||
60
- currentColorAttachment.height !== this.drawingBufferHeight) {
61
- const [oldWidth, oldHeight] = this.getDrawingBufferSize();
62
- this.drawingBufferWidth = currentColorAttachment.width;
63
- this.drawingBufferHeight = currentColorAttachment.height;
64
- log.log(1, `${this}: Resized to compensate for initial canvas size mismatch ${oldWidth}x${oldHeight} => ${this.drawingBufferWidth}x${this.drawingBufferHeight}px`)();
73
+ const profiler = getCpuHotspotProfiler(this.device);
74
+ const startTime = profiler ? getTimestamp() : 0;
75
+ if (profiler) {
76
+ profiler.framebufferAcquireCount = (profiler.framebufferAcquireCount || 0) + 1;
77
+ profiler.activeDefaultFramebufferAcquireDepth =
78
+ (profiler.activeDefaultFramebufferAcquireDepth || 0) + 1;
65
79
  }
66
- // Resize the depth stencil attachment
67
- if (options?.depthStencilFormat) {
68
- this._createDepthStencilAttachment(options?.depthStencilFormat);
80
+ try {
81
+ // Wrap the current canvas context texture in a luma.gl texture
82
+ const currentColorAttachment = this._getCurrentTexture();
83
+ // TODO - temporary debug code
84
+ if (currentColorAttachment.width !== this.drawingBufferWidth ||
85
+ currentColorAttachment.height !== this.drawingBufferHeight) {
86
+ const [oldWidth, oldHeight] = this.getDrawingBufferSize();
87
+ this.drawingBufferWidth = currentColorAttachment.width;
88
+ this.drawingBufferHeight = currentColorAttachment.height;
89
+ log.log(1, `${this}: Resized to compensate for initial canvas size mismatch ${oldWidth}x${oldHeight} => ${this.drawingBufferWidth}x${this.drawingBufferHeight}px`)();
90
+ }
91
+ // Resize the depth stencil attachment
92
+ if (options?.depthStencilFormat) {
93
+ this._createDepthStencilAttachment(options?.depthStencilFormat);
94
+ }
95
+ this.framebuffer ||= new WebGPUFramebuffer(this.device, {
96
+ id: `${this.id}#framebuffer`,
97
+ colorAttachments: [currentColorAttachment],
98
+ depthStencilAttachment: null
99
+ });
100
+ this.framebuffer._reinitialize(currentColorAttachment.view, options?.depthStencilFormat ? this.depthStencilAttachment?.view || null : null);
101
+ return this.framebuffer;
102
+ }
103
+ finally {
104
+ if (profiler) {
105
+ profiler.activeDefaultFramebufferAcquireDepth =
106
+ (profiler.activeDefaultFramebufferAcquireDepth || 1) - 1;
107
+ profiler.framebufferAcquireTimeMs =
108
+ (profiler.framebufferAcquireTimeMs || 0) + (getTimestamp() - startTime);
109
+ }
69
110
  }
70
- return new WebGPUFramebuffer(this.device, {
71
- colorAttachments: [currentColorAttachment],
72
- depthStencilAttachment: this.depthStencilAttachment
73
- });
74
111
  }
75
112
  // PRIMARY METHODS
76
113
  /** Wrap the current canvas context texture in a luma.gl texture */
77
114
  _getCurrentTexture() {
115
+ const profiler = getCpuHotspotProfiler(this.device);
116
+ const currentTextureStartTime = profiler ? getTimestamp() : 0;
78
117
  const handle = this.handle.getCurrentTexture();
79
- return this.device.createTexture({
80
- id: `${this.id}#color-texture`,
118
+ if (profiler) {
119
+ profiler.currentTextureAcquireCount = (profiler.currentTextureAcquireCount || 0) + 1;
120
+ profiler.currentTextureAcquireTimeMs =
121
+ (profiler.currentTextureAcquireTimeMs || 0) + (getTimestamp() - currentTextureStartTime);
122
+ }
123
+ if (!this.colorAttachment) {
124
+ this.colorAttachment = this.device.createTexture({
125
+ id: `${this.id}#color-texture`,
126
+ handle,
127
+ format: this.device.preferredColorFormat,
128
+ width: handle.width,
129
+ height: handle.height
130
+ });
131
+ return this.colorAttachment;
132
+ }
133
+ this.colorAttachment._reinitialize(handle, {
81
134
  handle,
82
135
  format: this.device.preferredColorFormat,
83
136
  width: handle.width,
84
137
  height: handle.height
85
138
  });
139
+ return this.colorAttachment;
86
140
  }
87
141
  /** We build render targets on demand (i.e. not when size changes but when about to render) */
88
142
  _createDepthStencilAttachment(depthStencilFormat) {
89
- if (!this.depthStencilAttachment) {
143
+ const needsNewDepthStencilAttachment = !this.depthStencilAttachment ||
144
+ this.depthStencilAttachment.width !== this.drawingBufferWidth ||
145
+ this.depthStencilAttachment.height !== this.drawingBufferHeight ||
146
+ this.depthStencilAttachment.format !== depthStencilFormat;
147
+ if (needsNewDepthStencilAttachment) {
148
+ this.depthStencilAttachment?.destroy();
90
149
  this.depthStencilAttachment = this.device.createTexture({
91
150
  id: `${this.id}#depth-stencil-texture`,
92
151
  usage: Texture.RENDER_ATTACHMENT,
@@ -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, VertexFormat, CanvasContextProps, BufferProps, SamplerProps, ShaderProps, TextureProps, ExternalTextureProps, FramebufferProps, RenderPipelineProps, ComputePipelineProps, VertexArrayProps, TransformFeedback, TransformFeedbackProps, QuerySet, QuerySetProps, DeviceProps, CommandEncoderProps, PipelineLayoutProps } from '@luma.gl/core';
1
+ import type { Bindings, ComputePipeline, ComputeShaderLayout, DeviceInfo, DeviceLimits, DeviceTextureFormatCapabilities, VertexFormat, CanvasContextProps, PresentationContextProps, PresentationContext, BufferProps, SamplerProps, ShaderProps, TextureProps, Texture, ExternalTextureProps, FramebufferProps, RenderPipelineProps, ComputePipelineProps, VertexArrayProps, TransformFeedback, TransformFeedbackProps, QuerySet, QuerySetProps, DeviceProps, CommandEncoderProps, PipelineLayoutProps, RenderPipeline, ShaderLayout } 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";
@@ -33,19 +33,21 @@ export declare class WebGPUDevice extends Device {
33
33
  }>;
34
34
  canvasContext: WebGPUCanvasContext | null;
35
35
  private _isLost;
36
+ private _defaultSampler;
36
37
  commandEncoder: WebGPUCommandEncoder;
37
38
  get [Symbol.toStringTag](): string;
38
39
  toString(): string;
39
40
  constructor(props: DeviceProps, device: GPUDevice, adapter: GPUAdapter, adapterInfo: GPUAdapterInfo);
40
41
  destroy(): void;
41
42
  get isLost(): boolean;
42
- getShaderLayout(source: string): import("@luma.gl/core").ShaderLayout;
43
+ getShaderLayout(source: string): ShaderLayout;
43
44
  isVertexFormatSupported(format: VertexFormat): boolean;
44
45
  createBuffer(props: BufferProps | ArrayBuffer | ArrayBufferView): WebGPUBuffer;
45
46
  createTexture(props: TextureProps): WebGPUTexture;
46
47
  createExternalTexture(props: ExternalTextureProps): WebGPUExternalTexture;
47
48
  createShader(props: ShaderProps): WebGPUShader;
48
49
  createSampler(props: SamplerProps): WebGPUSampler;
50
+ getDefaultSampler(): WebGPUSampler;
49
51
  createRenderPipeline(props: RenderPipelineProps): WebGPURenderPipeline;
50
52
  createFramebuffer(props: FramebufferProps): WebGPUFramebuffer;
51
53
  createComputePipeline(props: ComputePipelineProps): WebGPUComputePipeline;
@@ -55,11 +57,17 @@ export declare class WebGPUDevice extends Device {
55
57
  createQuerySet(props: QuerySetProps): QuerySet;
56
58
  createFence(): WebGPUFence;
57
59
  createCanvasContext(props: CanvasContextProps): WebGPUCanvasContext;
60
+ createPresentationContext(props?: PresentationContextProps): PresentationContext;
58
61
  createPipelineLayout(props: PipelineLayoutProps): WebGPUPipelineLayout;
62
+ generateMipmapsWebGPU(texture: Texture): void;
63
+ _createBindGroupLayoutWebGPU(pipeline: RenderPipeline | ComputePipeline, group: number): GPUBindGroupLayout;
64
+ _createBindGroupWebGPU(bindGroupLayout: unknown, shaderLayout: ShaderLayout | ComputeShaderLayout, bindings: Bindings, group: number): GPUBindGroup | null;
59
65
  submit(commandBuffer?: WebGPUCommandBuffer): void;
66
+ private _finalizeDefaultCommandEncoderForSubmit;
60
67
  pushErrorScope(scope: 'validation' | 'out-of-memory'): void;
61
68
  popErrorScope(handler: (error: GPUError) => void): void;
62
69
  protected _getInfo(): DeviceInfo;
70
+ shouldIgnoreDroppedInstanceError(error: unknown, operation?: string): boolean;
63
71
  protected _getFeatures(): DeviceFeatures;
64
72
  _getDeviceSpecificTextureFormatCapabilities(capabilities: DeviceTextureFormatCapabilities): DeviceTextureFormatCapabilities;
65
73
  }