@luma.gl/webgpu 9.0.0-alpha.3 → 9.0.0-alpha.31

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 (116) hide show
  1. package/LICENSE +2 -1
  2. package/dist/adapter/helpers/accessor-to-format.js.map +1 -1
  3. package/dist/adapter/helpers/convert-texture-format.d.ts +2 -2
  4. package/dist/adapter/helpers/convert-texture-format.d.ts.map +1 -1
  5. package/dist/adapter/helpers/convert-texture-format.js +0 -1
  6. package/dist/adapter/helpers/convert-texture-format.js.map +1 -1
  7. package/dist/adapter/helpers/generate-mipmaps.d.ts +1 -1
  8. package/dist/adapter/helpers/generate-mipmaps.js +1 -8
  9. package/dist/adapter/helpers/generate-mipmaps.js.map +1 -1
  10. package/dist/adapter/helpers/get-bind-group.d.ts +4 -4
  11. package/dist/adapter/helpers/get-bind-group.d.ts.map +1 -1
  12. package/dist/adapter/helpers/get-bind-group.js +7 -16
  13. package/dist/adapter/helpers/get-bind-group.js.map +1 -1
  14. package/dist/adapter/helpers/get-vertex-buffer-layout.d.ts +5 -5
  15. package/dist/adapter/helpers/get-vertex-buffer-layout.d.ts.map +1 -1
  16. package/dist/adapter/helpers/get-vertex-buffer-layout.js +26 -34
  17. package/dist/adapter/helpers/get-vertex-buffer-layout.js.map +1 -1
  18. package/dist/adapter/helpers/webgpu-parameters.d.ts +2 -2
  19. package/dist/adapter/helpers/webgpu-parameters.d.ts.map +1 -1
  20. package/dist/adapter/helpers/webgpu-parameters.js +50 -47
  21. package/dist/adapter/helpers/webgpu-parameters.js.map +1 -1
  22. package/dist/adapter/resources/webgpu-buffer.d.ts +4 -5
  23. package/dist/adapter/resources/webgpu-buffer.d.ts.map +1 -1
  24. package/dist/adapter/resources/webgpu-buffer.js +13 -27
  25. package/dist/adapter/resources/webgpu-buffer.js.map +1 -1
  26. package/dist/adapter/resources/webgpu-command-encoder.d.ts +6 -15
  27. package/dist/adapter/resources/webgpu-command-encoder.d.ts.map +1 -1
  28. package/dist/adapter/resources/webgpu-command-encoder.js +9 -26
  29. package/dist/adapter/resources/webgpu-command-encoder.js.map +1 -1
  30. package/dist/adapter/resources/webgpu-compute-pass.d.ts +6 -6
  31. package/dist/adapter/resources/webgpu-compute-pass.d.ts.map +1 -1
  32. package/dist/adapter/resources/webgpu-compute-pass.js +12 -24
  33. package/dist/adapter/resources/webgpu-compute-pass.js.map +1 -1
  34. package/dist/adapter/resources/webgpu-compute-pipeline.d.ts +4 -4
  35. package/dist/adapter/resources/webgpu-compute-pipeline.d.ts.map +1 -1
  36. package/dist/adapter/resources/webgpu-compute-pipeline.js +4 -8
  37. package/dist/adapter/resources/webgpu-compute-pipeline.js.map +1 -1
  38. package/dist/adapter/resources/webgpu-external-texture.d.ts +5 -5
  39. package/dist/adapter/resources/webgpu-external-texture.d.ts.map +1 -1
  40. package/dist/adapter/resources/webgpu-external-texture.js +3 -10
  41. package/dist/adapter/resources/webgpu-external-texture.js.map +1 -1
  42. package/dist/adapter/resources/webgpu-framebuffer.d.ts +4 -21
  43. package/dist/adapter/resources/webgpu-framebuffer.d.ts.map +1 -1
  44. package/dist/adapter/resources/webgpu-framebuffer.js +3 -103
  45. package/dist/adapter/resources/webgpu-framebuffer.js.map +1 -1
  46. package/dist/adapter/resources/webgpu-query.js.map +1 -1
  47. package/dist/adapter/resources/webgpu-render-pass.d.ts +12 -7
  48. package/dist/adapter/resources/webgpu-render-pass.d.ts.map +1 -1
  49. package/dist/adapter/resources/webgpu-render-pass.js +37 -32
  50. package/dist/adapter/resources/webgpu-render-pass.js.map +1 -1
  51. package/dist/adapter/resources/webgpu-render-pipeline.d.ts +11 -6
  52. package/dist/adapter/resources/webgpu-render-pipeline.d.ts.map +1 -1
  53. package/dist/adapter/resources/webgpu-render-pipeline.js +33 -48
  54. package/dist/adapter/resources/webgpu-render-pipeline.js.map +1 -1
  55. package/dist/adapter/resources/webgpu-sampler.d.ts +5 -5
  56. package/dist/adapter/resources/webgpu-sampler.d.ts.map +1 -1
  57. package/dist/adapter/resources/webgpu-sampler.js +9 -8
  58. package/dist/adapter/resources/webgpu-sampler.js.map +1 -1
  59. package/dist/adapter/resources/webgpu-shader.d.ts +7 -7
  60. package/dist/adapter/resources/webgpu-shader.d.ts.map +1 -1
  61. package/dist/adapter/resources/webgpu-shader.js +6 -19
  62. package/dist/adapter/resources/webgpu-shader.js.map +1 -1
  63. package/dist/adapter/resources/webgpu-texture.d.ts +15 -8
  64. package/dist/adapter/resources/webgpu-texture.d.ts.map +1 -1
  65. package/dist/adapter/resources/webgpu-texture.js +13 -22
  66. package/dist/adapter/resources/webgpu-texture.js.map +1 -1
  67. package/dist/adapter/webgpu-canvas-context.d.ts +8 -10
  68. package/dist/adapter/webgpu-canvas-context.d.ts.map +1 -1
  69. package/dist/adapter/webgpu-canvas-context.js +11 -32
  70. package/dist/adapter/webgpu-canvas-context.js.map +1 -1
  71. package/dist/adapter/webgpu-device.d.ts +35 -22
  72. package/dist/adapter/webgpu-device.d.ts.map +1 -1
  73. package/dist/adapter/webgpu-device.js +74 -73
  74. package/dist/adapter/webgpu-device.js.map +1 -1
  75. package/dist/adapter/webgpu-types.js.map +1 -1
  76. package/dist/dist.dev.js +3264 -0
  77. package/dist/glsl/glsllang.js +0 -1
  78. package/dist/glsl/glsllang.js.map +1 -1
  79. package/dist/index.cjs +1448 -0
  80. package/dist/index.d.ts +5 -7
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +5 -7
  83. package/dist/index.js.map +1 -1
  84. package/dist.min.js +17 -0
  85. package/package.json +18 -9
  86. package/src/adapter/helpers/accessor-to-format.ts +2 -2
  87. package/src/adapter/helpers/convert-texture-format.ts +1 -1
  88. package/src/adapter/helpers/generate-mipmaps.ts +1 -1
  89. package/src/adapter/helpers/get-bind-group.ts +22 -12
  90. package/src/adapter/helpers/get-vertex-buffer-layout.ts +49 -29
  91. package/src/adapter/helpers/webgpu-parameters.ts +56 -47
  92. package/src/adapter/resources/webgpu-buffer.ts +6 -10
  93. package/src/adapter/resources/webgpu-command-encoder.ts +62 -41
  94. package/src/adapter/resources/webgpu-compute-pass.ts +13 -13
  95. package/src/adapter/resources/webgpu-compute-pipeline.ts +6 -5
  96. package/src/adapter/resources/webgpu-external-texture.ts +5 -5
  97. package/src/adapter/resources/webgpu-framebuffer.ts +8 -109
  98. package/src/adapter/resources/webgpu-query.ts +3 -3
  99. package/src/adapter/resources/webgpu-render-pass.ts +50 -17
  100. package/src/adapter/resources/webgpu-render-pipeline.ts +46 -22
  101. package/src/adapter/resources/webgpu-sampler.ts +12 -5
  102. package/src/adapter/resources/webgpu-shader.ts +11 -9
  103. package/src/adapter/resources/webgpu-texture.ts +15 -8
  104. package/src/adapter/webgpu-canvas-context.ts +20 -15
  105. package/src/adapter/webgpu-device.ts +136 -54
  106. package/src/index.ts +6 -9
  107. package/dist/bundle.d.ts +0 -2
  108. package/dist/bundle.d.ts.map +0 -1
  109. package/dist/bundle.js +0 -5
  110. package/dist/bundle.js.map +0 -1
  111. package/dist/init.d.ts +0 -2
  112. package/dist/init.d.ts.map +0 -1
  113. package/dist/init.js +0 -4
  114. package/dist/init.js.map +0 -1
  115. package/src/bundle.ts +0 -4
  116. package/src/init.ts +0 -4
@@ -1,73 +1,65 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { Device, CanvasContext, log } from '@luma.gl/api';
3
- import WebGPUBuffer from './resources/webgpu-buffer';
4
- import WebGPUTexture from './resources/webgpu-texture';
5
- import WebGPUExternalTexture from './resources/webgpu-external-texture';
6
- import WebGPUSampler from './resources/webgpu-sampler';
7
- import WebGPUShader from './resources/webgpu-shader';
8
- import WebGPURenderPipeline from './resources/webgpu-render-pipeline';
9
- import WebGPUComputePipeline from './resources/webgpu-compute-pipeline';
10
- import WebGPURenderPass from './resources/webgpu-render-pass';
11
- import WebGPUComputePass from './resources/webgpu-compute-pass';
12
- import WebGPUCanvasContext from './webgpu-canvas-context';
13
- export default class WebGPUDevice extends Device {
2
+ import { Device, CanvasContext, log, uid } from '@luma.gl/core';
3
+ import { WebGPUBuffer } from "./resources/webgpu-buffer.js";
4
+ import { WebGPUTexture } from "./resources/webgpu-texture.js";
5
+ import { WebGPUExternalTexture } from "./resources/webgpu-external-texture.js";
6
+ import { WebGPUSampler } from "./resources/webgpu-sampler.js";
7
+ import { WebGPUShader } from "./resources/webgpu-shader.js";
8
+ import { WebGPURenderPipeline } from "./resources/webgpu-render-pipeline.js";
9
+ import { WebGPUComputePipeline } from "./resources/webgpu-compute-pipeline.js";
10
+ import { WebGPURenderPass } from "./resources/webgpu-render-pass.js";
11
+ import { WebGPUComputePass } from "./resources/webgpu-compute-pass.js";
12
+ import { WebGPUCanvasContext } from "./webgpu-canvas-context.js";
13
+ export class WebGPUDevice extends Device {
14
14
  static isSupported() {
15
15
  return Boolean(typeof navigator !== 'undefined' && navigator.gpu);
16
16
  }
17
-
18
17
  static async create(props) {
19
18
  if (!navigator.gpu) {
20
19
  throw new Error('WebGPU not available. Open in Chrome Canary and turn on chrome://flags/#enable-unsafe-webgpu');
21
20
  }
22
-
23
21
  log.groupCollapsed(1, 'WebGPUDevice created')();
24
22
  const adapter = await navigator.gpu.requestAdapter({
25
- powerPreference: "high-performance"
23
+ powerPreference: 'high-performance'
26
24
  });
27
- log.probe(1, "Adapter available")();
25
+ if (!adapter) {
26
+ throw new Error('Failed to request WebGPU adapter');
27
+ }
28
+ const adapterInfo = await adapter.requestAdapterInfo();
29
+ log.probe(1, 'Adapter available', adapterInfo)();
28
30
  const gpuDevice = await adapter.requestDevice({
29
31
  requiredFeatures: adapter.features
30
32
  });
31
- log.probe(1, "GPUDevice available")();
32
-
33
+ log.probe(1, 'GPUDevice available')();
33
34
  if (typeof props.canvas === 'string') {
34
35
  await CanvasContext.pageLoaded;
35
- log.probe(1, "DOM is loaded")();
36
+ log.probe(1, 'DOM is loaded')();
36
37
  }
37
-
38
38
  const device = new WebGPUDevice(gpuDevice, adapter, props);
39
- log.probe(1, "Device created", device.info)();
39
+ log.probe(1, 'Device created', device.info)();
40
40
  log.table(1, device.info)();
41
41
  log.groupEnd(1)();
42
42
  return device;
43
43
  }
44
-
45
44
  constructor(device, adapter, props) {
46
- super(props);
47
-
45
+ super({
46
+ ...props,
47
+ id: props.id || uid('webgpu-device')
48
+ });
48
49
  _defineProperty(this, "handle", void 0);
49
-
50
50
  _defineProperty(this, "adapter", void 0);
51
-
52
51
  _defineProperty(this, "lost", void 0);
53
-
54
- _defineProperty(this, "canvasContext", void 0);
55
-
56
- _defineProperty(this, "commandEncoder", void 0);
57
-
58
- _defineProperty(this, "renderPass", void 0);
59
-
52
+ _defineProperty(this, "canvasContext", null);
53
+ _defineProperty(this, "commandEncoder", null);
54
+ _defineProperty(this, "renderPass", null);
60
55
  _defineProperty(this, "_info", void 0);
61
-
62
56
  _defineProperty(this, "_isLost", false);
63
-
64
57
  _defineProperty(this, "features", void 0);
65
-
66
58
  this.handle = device;
67
59
  this.adapter = adapter;
68
60
  this._info = {
69
61
  type: 'webgpu',
70
- vendor: this.adapter.name,
62
+ vendor: this.adapter.__brand,
71
63
  renderer: '',
72
64
  version: '',
73
65
  gpu: 'unknown',
@@ -79,121 +71,104 @@ export default class WebGPUDevice extends Device {
79
71
  vendorMasked: '',
80
72
  rendererMasked: ''
81
73
  };
82
- this.lost = this.handle.lost;
83
- this.lost.then(_ => {
74
+ this.lost = new Promise(async resolve => {
75
+ const lostInfo = await this.handle.lost;
84
76
  this._isLost = true;
77
+ resolve({
78
+ reason: 'destroyed',
79
+ message: lostInfo.message
80
+ });
85
81
  });
86
-
87
82
  if (props.canvas) {
88
83
  this.canvasContext = new WebGPUCanvasContext(this, this.adapter, {
89
84
  canvas: props.canvas
90
85
  });
91
86
  }
92
-
93
87
  this.features = this._getFeatures();
94
88
  }
95
-
96
89
  destroy() {
97
90
  this.handle.destroy();
98
91
  }
99
-
100
92
  get info() {
101
93
  return this._info;
102
94
  }
103
-
104
95
  get limits() {
105
96
  return this.handle.limits;
106
97
  }
107
-
108
98
  isTextureFormatSupported(format) {
109
99
  return !format.includes('webgl');
110
100
  }
111
-
112
101
  isTextureFormatFilterable(format) {
113
102
  return this.isTextureFormatSupported(format);
114
103
  }
115
-
116
104
  isTextureFormatRenderable(format) {
117
105
  return this.isTextureFormatSupported(format);
118
106
  }
119
-
120
107
  get isLost() {
121
108
  return this._isLost;
122
109
  }
123
-
124
- _createBuffer(props) {
125
- return new WebGPUBuffer(this, props);
110
+ createBuffer(props) {
111
+ const newProps = this._getBufferProps(props);
112
+ return new WebGPUBuffer(this, newProps);
126
113
  }
127
-
128
114
  _createTexture(props) {
129
115
  return new WebGPUTexture(this, props);
130
116
  }
131
-
132
117
  createExternalTexture(props) {
133
118
  return new WebGPUExternalTexture(this, props);
134
119
  }
135
-
136
120
  createShader(props) {
137
121
  return new WebGPUShader(this, props);
138
122
  }
139
-
140
123
  createSampler(props) {
141
124
  return new WebGPUSampler(this, props);
142
125
  }
143
-
144
126
  createRenderPipeline(props) {
145
127
  return new WebGPURenderPipeline(this, props);
146
128
  }
147
-
148
129
  createFramebuffer(props) {
149
130
  throw new Error('Not implemented');
150
131
  }
151
-
152
132
  createComputePipeline(props) {
153
133
  return new WebGPUComputePipeline(this, props);
154
134
  }
155
-
156
135
  beginRenderPass(props) {
157
136
  this.commandEncoder = this.commandEncoder || this.handle.createCommandEncoder();
158
137
  return new WebGPURenderPass(this, props);
159
138
  }
160
-
161
139
  beginComputePass(props) {
162
140
  this.commandEncoder = this.commandEncoder || this.handle.createCommandEncoder();
163
141
  return new WebGPUComputePass(this, props);
164
142
  }
165
-
166
143
  createCanvasContext(props) {
167
144
  return new WebGPUCanvasContext(this, this.adapter, props);
168
145
  }
169
-
170
146
  getDefaultRenderPass() {
147
+ var _this$canvasContext;
171
148
  this.renderPass = this.renderPass || this.beginRenderPass({
172
- framebuffer: this.canvasContext.getCurrentFramebuffer()
149
+ framebuffer: (_this$canvasContext = this.canvasContext) === null || _this$canvasContext === void 0 ? void 0 : _this$canvasContext.getCurrentFramebuffer()
173
150
  });
174
151
  return this.renderPass;
175
152
  }
176
-
177
153
  submit() {
178
- this.renderPass.endPass();
179
- const commandBuffer = this.commandEncoder.finish();
180
- this.handle.queue.submit([commandBuffer]);
154
+ var _this$renderPass, _this$commandEncoder;
155
+ (_this$renderPass = this.renderPass) === null || _this$renderPass === void 0 ? void 0 : _this$renderPass.end();
156
+ const commandBuffer = (_this$commandEncoder = this.commandEncoder) === null || _this$commandEncoder === void 0 ? void 0 : _this$commandEncoder.finish();
157
+ if (commandBuffer) {
158
+ this.handle.queue.submit([commandBuffer]);
159
+ }
181
160
  this.commandEncoder = null;
182
161
  this.renderPass = null;
183
162
  }
184
-
185
163
  _getFeatures() {
186
164
  const features = new Set(this.handle.features);
187
-
188
165
  if (features.has('depth-clamping')) {
189
166
  features.delete('depth-clamping');
190
167
  features.add('depth-clip-control');
191
168
  }
192
-
193
169
  if (features.has('texture-compression-bc')) {
194
170
  features.add('texture-compression-bc5-webgl');
195
171
  }
196
-
197
172
  features.add('webgpu');
198
173
  features.add('timer-query-webgl');
199
174
  features.add('vertex-array-object-webgl1');
@@ -218,8 +193,34 @@ export default class WebGPUDevice extends Device {
218
193
  features.add('glsl-texture-lod');
219
194
  return features;
220
195
  }
221
-
196
+ copyExternalImageToTexture(options) {
197
+ var _this$handle;
198
+ const {
199
+ source,
200
+ sourceX = 0,
201
+ sourceY = 0,
202
+ texture,
203
+ mipLevel = 0,
204
+ aspect = 'all',
205
+ colorSpace = 'display-p3',
206
+ premultipliedAlpha = false,
207
+ width = texture.width,
208
+ height = texture.height,
209
+ depth = 1
210
+ } = options;
211
+ const webGpuTexture = texture;
212
+ (_this$handle = this.handle) === null || _this$handle === void 0 ? void 0 : _this$handle.queue.copyExternalImageToTexture({
213
+ source,
214
+ origin: [sourceX, sourceY]
215
+ }, {
216
+ texture: webGpuTexture.handle,
217
+ origin: [0, 0, 0],
218
+ mipLevel,
219
+ aspect,
220
+ colorSpace,
221
+ premultipliedAlpha
222
+ }, [width, height, depth]);
223
+ }
222
224
  }
223
-
224
225
  _defineProperty(WebGPUDevice, "type", 'webgpu');
225
226
  //# sourceMappingURL=webgpu-device.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/adapter/webgpu-device.ts"],"names":["Device","CanvasContext","log","WebGPUBuffer","WebGPUTexture","WebGPUExternalTexture","WebGPUSampler","WebGPUShader","WebGPURenderPipeline","WebGPUComputePipeline","WebGPURenderPass","WebGPUComputePass","WebGPUCanvasContext","WebGPUDevice","isSupported","Boolean","navigator","gpu","create","props","Error","groupCollapsed","adapter","requestAdapter","powerPreference","probe","gpuDevice","requestDevice","requiredFeatures","features","canvas","pageLoaded","device","info","table","groupEnd","constructor","handle","_info","type","vendor","name","renderer","version","shadingLanguages","shadingLanguageVersions","glsl","wgsl","vendorMasked","rendererMasked","lost","then","_","_isLost","canvasContext","_getFeatures","destroy","limits","isTextureFormatSupported","format","includes","isTextureFormatFilterable","isTextureFormatRenderable","isLost","_createBuffer","_createTexture","createExternalTexture","createShader","createSampler","createRenderPipeline","createFramebuffer","createComputePipeline","beginRenderPass","commandEncoder","createCommandEncoder","beginComputePass","createCanvasContext","getDefaultRenderPass","renderPass","framebuffer","getCurrentFramebuffer","submit","endPass","commandBuffer","finish","queue","Set","has","delete","add"],"mappings":"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","sourcesContent":["/// <reference types=\"@webgpu/types\" />\n\nimport type {\n DeviceProps,\n DeviceInfo,\n DeviceLimits,\n DeviceFeature,\n CanvasContextProps,\n BufferProps,\n SamplerProps,\n ShaderProps,\n TextureProps,\n TextureFormat,\n ExternalTextureProps,\n FramebufferProps,\n RenderPipelineProps,\n ComputePipelineProps,\n RenderPassProps,\n ComputePassProps\n} from '@luma.gl/api';\nimport {Device, CanvasContext, log, cast} from '@luma.gl/api';\nimport WebGPUBuffer from './resources/webgpu-buffer';\nimport WebGPUTexture from './resources/webgpu-texture';\nimport WebGPUExternalTexture from './resources/webgpu-external-texture';\nimport WebGPUSampler from './resources/webgpu-sampler';\nimport WebGPUShader from './resources/webgpu-shader';\nimport WebGPURenderPipeline from './resources/webgpu-render-pipeline';\nimport WebGPUFramebuffer from './resources/webgpu-framebuffer';\nimport WebGPUComputePipeline from './resources/webgpu-compute-pipeline';\nimport WebGPURenderPass from './resources/webgpu-render-pass';\nimport WebGPUComputePass from './resources/webgpu-compute-pass';\n\nimport WebGPUCanvasContext from './webgpu-canvas-context';\n// import {loadGlslangModule} from '../glsl/glslang';\n\n/** WebGPU Device implementation */\nexport default class WebGPUDevice extends Device {\n readonly handle: GPUDevice;\n readonly adapter: GPUAdapter;\n readonly lost: Promise<{reason: 'destroyed', message: string}>;\n canvasContext: WebGPUCanvasContext | undefined;\n\n commandEncoder: GPUCommandEncoder;\n renderPass: WebGPURenderPass;\n\n private _info: DeviceInfo;\n private _isLost: boolean = false;\n\n static type: string = 'webgpu';\n\n /** Check if WebGPU is available */\n static isSupported(): boolean {\n return Boolean(typeof navigator !== 'undefined' && navigator.gpu);\n }\n\n static async create(props: DeviceProps): Promise<WebGPUDevice> {\n if (!navigator.gpu) {\n throw new Error('WebGPU not available. Open in Chrome Canary and turn on chrome://flags/#enable-unsafe-webgpu');\n }\n log.groupCollapsed(1, 'WebGPUDevice created')();\n const adapter = await navigator.gpu.requestAdapter({\n powerPreference: \"high-performance\"\n // forceSoftware: false\n });\n log.probe(1, \"Adapter available\")();\n\n const gpuDevice = await adapter.requestDevice({\n requiredFeatures: adapter.features as ReadonlySet<GPUFeatureName>,\n // TODO ensure we obtain best limits\n // requiredLimits: adapter.limits\n });\n log.probe(1, \"GPUDevice available\")();\n\n if (typeof props.canvas === 'string') {\n await CanvasContext.pageLoaded;\n log.probe(1, \"DOM is loaded\")();\n }\n\n const device = new WebGPUDevice(gpuDevice, adapter, props);\n log.probe(1, \"Device created\", device.info)();\n log.table(1, device.info)();\n log.groupEnd(1)();\n return device;\n }\n\n constructor(device: GPUDevice, adapter: GPUAdapter, props: DeviceProps) {\n super(props);\n this.handle = device;\n this.adapter = adapter;\n\n this._info = {\n type: 'webgpu',\n vendor: this.adapter.name,\n renderer: '',\n version: '',\n gpu: 'unknown', // 'nvidia' | 'amd' | 'intel' | 'apple' | 'unknown',\n shadingLanguages: ['glsl', 'wgsl'],\n shadingLanguageVersions: {\n glsl: '450',\n wgsl: '100'\n },\n vendorMasked: '',\n rendererMasked: ''\n };\n\n this.lost = this.handle.lost;\n this.lost.then(_ => {\n this._isLost = true;\n });\n\n // Note: WebGPU devices can be created without a canvas, for compute shader purposes\n if (props.canvas) {\n this.canvasContext = new WebGPUCanvasContext(this, this.adapter, {canvas: props.canvas});\n }\n\n this.features = this._getFeatures();\n }\n\n // TODO\n // Load the glslang module now so that it is available synchronously when compiling shaders\n // const {glsl = true} = props;\n // this.glslang = glsl && await loadGlslangModule();\n\n destroy() {\n this.handle.destroy();\n }\n\n get info(): DeviceInfo {\n return this._info;\n }\n\n features: Set<DeviceFeature>;\n\n get limits(): DeviceLimits {\n return this.handle.limits;\n }\n\n isTextureFormatSupported(format: TextureFormat): boolean {\n return !format.includes('webgl');\n }\n\n /** @todo implement proper check? */\n isTextureFormatFilterable(format: TextureFormat): boolean {\n return this.isTextureFormatSupported(format); \n }\n\n /** @todo implement proper check? */\n isTextureFormatRenderable(format: TextureFormat): boolean {\n return this.isTextureFormatSupported(format); \n }\n\n get isLost(): boolean {\n return this._isLost;\n }\n\n _createBuffer(props: BufferProps): WebGPUBuffer {\n return new WebGPUBuffer(this, props);\n }\n\n _createTexture(props: TextureProps): WebGPUTexture {\n return new WebGPUTexture(this, props);\n }\n\n createExternalTexture(props: ExternalTextureProps): WebGPUExternalTexture {\n return new WebGPUExternalTexture(this, props);\n }\n\n createShader(props: ShaderProps): WebGPUShader {\n return new WebGPUShader(this, props);\n }\n\n createSampler(props: SamplerProps): WebGPUSampler {\n return new WebGPUSampler(this, props);\n }\n\n createRenderPipeline(props: RenderPipelineProps): WebGPURenderPipeline {\n return new WebGPURenderPipeline(this, props);\n }\n\n createFramebuffer(props: FramebufferProps): WebGPUFramebuffer {\n throw new Error('Not implemented');\n }\n\n createComputePipeline(props: ComputePipelineProps): WebGPUComputePipeline {\n return new WebGPUComputePipeline(this, props);\n }\n\n // WebGPU specifics\n\n /** \n * Allows a render pass to begin against a canvas context\n * @todo need to support a \"Framebuffer\" equivalent (aka preconfigured RenderPassDescriptors?).\n */\n beginRenderPass(props?: RenderPassProps): WebGPURenderPass {\n this.commandEncoder = this.commandEncoder || this.handle.createCommandEncoder();\n return new WebGPURenderPass(this, props);\n }\n\n beginComputePass(props?: ComputePassProps): WebGPUComputePass {\n this.commandEncoder = this.commandEncoder || this.handle.createCommandEncoder();\n return new WebGPUComputePass(this, props);\n }\n\n createCanvasContext(props?: CanvasContextProps): WebGPUCanvasContext {\n return new WebGPUCanvasContext(this, this.adapter, props);\n }\n\n /** \n * Gets default renderpass encoder.\n * Creates a new encoder against default canvasContext if not already created \n * @note Called internally by Model.\n */\n getDefaultRenderPass(): WebGPURenderPass {\n this.renderPass = this.renderPass || this.beginRenderPass({\n framebuffer: this.canvasContext.getCurrentFramebuffer()\n });\n return this.renderPass;\n }\n\n submit(): void {\n this.renderPass.endPass();\n const commandBuffer = this.commandEncoder.finish();\n this.handle.queue.submit([commandBuffer]);\n this.commandEncoder = null;\n this.renderPass = null;\n }\n\n _getFeatures() {\n // WebGPU Features\n const features = new Set<DeviceFeature>(this.handle.features as Set<DeviceFeature>);\n\n // Fixups for pre-standard names: https://github.com/webgpu-native/webgpu-headers/issues/133\n // @ts-expect-error Chrome Canary v99\n if (features.has('depth-clamping')) {\n // @ts-expect-error Chrome Canary v99\n features.delete('depth-clamping');\n features.add('depth-clip-control');\n }\n\n // Add subsets\n if (features.has('texture-compression-bc')) {\n features.add('texture-compression-bc5-webgl');\n }\n\n features.add('webgpu');\n\n features.add('timer-query-webgl');\n\n // WEBGL1 SUPPORT\n features.add('vertex-array-object-webgl1');\n features.add('instanced-rendering-webgl1');\n features.add('multiple-render-targets-webgl1');\n features.add('index-uint32-webgl1');\n features.add('blend-minmax-webgl1');\n features.add('texture-blend-float-webgl1');\n \n // TEXTURES, RENDERBUFFERS\n features.add('texture-formats-srgb-webgl1');\n \n // TEXTURES\n features.add('texture-formats-depth-webgl1');\n features.add('texture-formats-float32-webgl1');\n features.add('texture-formats-float16-webgl1');\n \n features.add('texture-filter-linear-float32-webgl');\n features.add('texture-filter-linear-float16-webgl');\n features.add('texture-filter-anisotropic-webgl');\n \n // FRAMEBUFFERS, TEXTURES AND RENDERBUFFERS\n features.add('texture-renderable-rgba32float-webgl');\n features.add('texture-renderable-float32-webgl');\n features.add('texture-renderable-float16-webgl');\n \n // GLSL extensions\n features.add('glsl-frag-data');\n features.add('glsl-frag-depth');\n features.add('glsl-derivatives');\n features.add('glsl-texture-lod');\n\n return features;\n }\n}\n"],"file":"webgpu-device.js"}
1
+ {"version":3,"file":"webgpu-device.js","names":["Device","CanvasContext","log","uid","WebGPUBuffer","WebGPUTexture","WebGPUExternalTexture","WebGPUSampler","WebGPUShader","WebGPURenderPipeline","WebGPUComputePipeline","WebGPURenderPass","WebGPUComputePass","WebGPUCanvasContext","WebGPUDevice","isSupported","Boolean","navigator","gpu","create","props","Error","groupCollapsed","adapter","requestAdapter","powerPreference","adapterInfo","requestAdapterInfo","probe","gpuDevice","requestDevice","requiredFeatures","features","canvas","pageLoaded","device","info","table","groupEnd","constructor","id","_defineProperty","handle","_info","type","vendor","__brand","renderer","version","shadingLanguages","shadingLanguageVersions","glsl","wgsl","vendorMasked","rendererMasked","lost","Promise","resolve","lostInfo","_isLost","reason","message","canvasContext","_getFeatures","destroy","limits","isTextureFormatSupported","format","includes","isTextureFormatFilterable","isTextureFormatRenderable","isLost","createBuffer","newProps","_getBufferProps","_createTexture","createExternalTexture","createShader","createSampler","createRenderPipeline","createFramebuffer","createComputePipeline","beginRenderPass","commandEncoder","createCommandEncoder","beginComputePass","createCanvasContext","getDefaultRenderPass","_this$canvasContext","renderPass","framebuffer","getCurrentFramebuffer","submit","_this$renderPass","_this$commandEncoder","end","commandBuffer","finish","queue","Set","has","delete","add","copyExternalImageToTexture","options","_this$handle","source","sourceX","sourceY","texture","mipLevel","aspect","colorSpace","premultipliedAlpha","width","height","depth","webGpuTexture","origin"],"sources":["../../src/adapter/webgpu-device.ts"],"sourcesContent":["// prettier-ignore\n// / <reference types=\"@webgpu/types\" />\n\nimport type {\n DeviceProps,\n DeviceInfo,\n DeviceLimits,\n DeviceFeature,\n CanvasContextProps,\n BufferProps,\n SamplerProps,\n ShaderProps,\n Texture,\n TextureProps,\n TextureFormat,\n ExternalTextureProps,\n FramebufferProps,\n RenderPipelineProps,\n ComputePipelineProps,\n RenderPassProps,\n ComputePassProps,\n // CommandEncoderProps\n} from '@luma.gl/core';\nimport {Device, CanvasContext, log, uid} from '@luma.gl/core';\nimport {WebGPUBuffer} from './resources/webgpu-buffer';\nimport {WebGPUTexture} from './resources/webgpu-texture';\nimport {WebGPUExternalTexture} from './resources/webgpu-external-texture';\nimport {WebGPUSampler} from './resources/webgpu-sampler';\nimport {WebGPUShader} from './resources/webgpu-shader';\nimport {WebGPURenderPipeline} from './resources/webgpu-render-pipeline';\nimport {WebGPUFramebuffer} from './resources/webgpu-framebuffer';\nimport {WebGPUComputePipeline} from './resources/webgpu-compute-pipeline';\nimport {WebGPURenderPass} from './resources/webgpu-render-pass';\nimport {WebGPUComputePass} from './resources/webgpu-compute-pass';\n// import {WebGPUCommandEncoder} from './resources/webgpu-command-encoder';\n\nimport {WebGPUCanvasContext} from './webgpu-canvas-context';\n// import {loadGlslangModule} from '../glsl/glslang';\n\n/** WebGPU Device implementation */\nexport class WebGPUDevice extends Device {\n readonly handle: GPUDevice;\n readonly adapter: GPUAdapter;\n readonly lost: Promise<{reason: 'destroyed'; message: string}>;\n canvasContext: WebGPUCanvasContext | null = null;\n\n commandEncoder: GPUCommandEncoder | null = null;\n renderPass: WebGPURenderPass | null = null;\n\n private _info: DeviceInfo;\n private _isLost: boolean = false;\n\n static type: string = 'webgpu';\n\n /** Check if WebGPU is available */\n static isSupported(): boolean {\n return Boolean(typeof navigator !== 'undefined' && navigator.gpu);\n }\n\n static async create(props: DeviceProps): Promise<WebGPUDevice> {\n if (!navigator.gpu) {\n throw new Error(\n 'WebGPU not available. Open in Chrome Canary and turn on chrome://flags/#enable-unsafe-webgpu'\n );\n }\n log.groupCollapsed(1, 'WebGPUDevice created')();\n const adapter = await navigator.gpu.requestAdapter({\n powerPreference: 'high-performance'\n // forceSoftware: false\n });\n if (!adapter) {\n throw new Error('Failed to request WebGPU adapter');\n }\n\n const adapterInfo = await adapter.requestAdapterInfo();\n log.probe(1, 'Adapter available', adapterInfo)();\n\n const gpuDevice = await adapter.requestDevice({\n requiredFeatures: adapter.features as ReadonlySet<GPUFeatureName>\n // TODO ensure we obtain best limits\n // requiredLimits: adapter.limits\n });\n log.probe(1, 'GPUDevice available')();\n\n if (typeof props.canvas === 'string') {\n await CanvasContext.pageLoaded;\n log.probe(1, 'DOM is loaded')();\n }\n\n const device = new WebGPUDevice(gpuDevice, adapter, props);\n log.probe(1, 'Device created', device.info)();\n log.table(1, device.info)();\n log.groupEnd(1)();\n return device;\n }\n\n constructor(device: GPUDevice, adapter: GPUAdapter, props: DeviceProps) {\n super({...props, id: props.id || uid('webgpu-device')});\n this.handle = device;\n this.adapter = adapter;\n\n this._info = {\n type: 'webgpu',\n vendor: this.adapter.__brand,\n renderer: '',\n version: '',\n gpu: 'unknown', // 'nvidia' | 'amd' | 'intel' | 'apple' | 'unknown',\n shadingLanguages: ['glsl', 'wgsl'],\n shadingLanguageVersions: {\n glsl: '450',\n wgsl: '100'\n },\n vendorMasked: '',\n rendererMasked: ''\n };\n\n // \"Context\" loss handling\n this.lost = new Promise<{reason: 'destroyed'; message: string}>(async (resolve) => {\n const lostInfo = await this.handle.lost;\n this._isLost = true;\n resolve({reason: 'destroyed', message: lostInfo.message});\n });\n\n // Note: WebGPU devices can be created without a canvas, for compute shader purposes\n if (props.canvas) {\n this.canvasContext = new WebGPUCanvasContext(this, this.adapter, {canvas: props.canvas});\n }\n\n this.features = this._getFeatures();\n }\n\n // TODO\n // Load the glslang module now so that it is available synchronously when compiling shaders\n // const {glsl = true} = props;\n // this.glslang = glsl && await loadGlslangModule();\n\n destroy(): void {\n this.handle.destroy();\n }\n\n get info(): DeviceInfo {\n return this._info;\n }\n\n features: Set<DeviceFeature>;\n\n get limits(): DeviceLimits {\n return this.handle.limits;\n }\n\n isTextureFormatSupported(format: TextureFormat): boolean {\n return !format.includes('webgl');\n }\n\n /** @todo implement proper check? */\n isTextureFormatFilterable(format: TextureFormat): boolean {\n return this.isTextureFormatSupported(format);\n }\n\n /** @todo implement proper check? */\n isTextureFormatRenderable(format: TextureFormat): boolean {\n return this.isTextureFormatSupported(format);\n }\n\n get isLost(): boolean {\n return this._isLost;\n }\n\n createBuffer(props: BufferProps | ArrayBuffer | ArrayBufferView): WebGPUBuffer {\n const newProps = this._getBufferProps(props);\n return new WebGPUBuffer(this, newProps);\n }\n\n _createTexture(props: TextureProps): WebGPUTexture {\n return new WebGPUTexture(this, props);\n }\n\n createExternalTexture(props: ExternalTextureProps): WebGPUExternalTexture {\n return new WebGPUExternalTexture(this, props);\n }\n\n createShader(props: ShaderProps): WebGPUShader {\n return new WebGPUShader(this, props);\n }\n\n createSampler(props: SamplerProps): WebGPUSampler {\n return new WebGPUSampler(this, props);\n }\n\n createRenderPipeline(props: RenderPipelineProps): WebGPURenderPipeline {\n return new WebGPURenderPipeline(this, props);\n }\n\n createFramebuffer(props: FramebufferProps): WebGPUFramebuffer {\n throw new Error('Not implemented');\n }\n\n createComputePipeline(props: ComputePipelineProps): WebGPUComputePipeline {\n return new WebGPUComputePipeline(this, props);\n }\n\n // WebGPU specifics\n\n /**\n * Allows a render pass to begin against a canvas context\n * @todo need to support a \"Framebuffer\" equivalent (aka preconfigured RenderPassDescriptors?).\n */\n beginRenderPass(props: RenderPassProps): WebGPURenderPass {\n this.commandEncoder = this.commandEncoder || this.handle.createCommandEncoder();\n return new WebGPURenderPass(this, props);\n }\n\n beginComputePass(props: ComputePassProps): WebGPUComputePass {\n this.commandEncoder = this.commandEncoder || this.handle.createCommandEncoder();\n return new WebGPUComputePass(this, props);\n }\n\n // createCommandEncoder(props: CommandEncoderProps): WebGPUCommandEncoder {\n // return new WebGPUCommandEncoder(this, props);\n // }\n\n createCanvasContext(props: CanvasContextProps): WebGPUCanvasContext {\n return new WebGPUCanvasContext(this, this.adapter, props);\n }\n\n /**\n * Gets default renderpass encoder.\n * Creates a new encoder against default canvasContext if not already created\n * @note Called internally by Model.\n */\n getDefaultRenderPass(): WebGPURenderPass {\n this.renderPass =\n this.renderPass ||\n this.beginRenderPass({\n framebuffer: this.canvasContext?.getCurrentFramebuffer()\n });\n return this.renderPass;\n }\n\n submit(): void {\n this.renderPass?.end();\n const commandBuffer = this.commandEncoder?.finish();\n if (commandBuffer) {\n this.handle.queue.submit([commandBuffer]);\n }\n this.commandEncoder = null;\n this.renderPass = null;\n }\n\n _getFeatures() {\n // WebGPU Features\n const features = new Set<DeviceFeature>(this.handle.features as Set<DeviceFeature>);\n\n // Fixups for pre-standard names: https://github.com/webgpu-native/webgpu-headers/issues/133\n // @ts-expect-error Chrome Canary v99\n if (features.has('depth-clamping')) {\n // @ts-expect-error Chrome Canary v99\n features.delete('depth-clamping');\n features.add('depth-clip-control');\n }\n\n // Add subsets\n if (features.has('texture-compression-bc')) {\n features.add('texture-compression-bc5-webgl');\n }\n\n features.add('webgpu');\n\n features.add('timer-query-webgl');\n\n // WEBGL1 SUPPORT\n features.add('vertex-array-object-webgl1');\n features.add('instanced-rendering-webgl1');\n features.add('multiple-render-targets-webgl1');\n features.add('index-uint32-webgl1');\n features.add('blend-minmax-webgl1');\n features.add('texture-blend-float-webgl1');\n\n // TEXTURES, RENDERBUFFERS\n features.add('texture-formats-srgb-webgl1');\n\n // TEXTURES\n features.add('texture-formats-depth-webgl1');\n features.add('texture-formats-float32-webgl1');\n features.add('texture-formats-float16-webgl1');\n\n features.add('texture-filter-linear-float32-webgl');\n features.add('texture-filter-linear-float16-webgl');\n features.add('texture-filter-anisotropic-webgl');\n\n // FRAMEBUFFERS, TEXTURES AND RENDERBUFFERS\n features.add('texture-renderable-rgba32float-webgl');\n features.add('texture-renderable-float32-webgl');\n features.add('texture-renderable-float16-webgl');\n\n // GLSL extensions\n features.add('glsl-frag-data');\n features.add('glsl-frag-depth');\n features.add('glsl-derivatives');\n features.add('glsl-texture-lod');\n\n return features;\n }\n\n copyExternalImageToTexture(options: {\n texture: Texture;\n mipLevel?: number;\n aspect?: 'all' | 'stencil-only' | 'depth-only';\n colorSpace?: 'display-p3' | 'srgb';\n premultipliedAlpha?: boolean;\n\n source: ImageBitmap | HTMLVideoElement | HTMLCanvasElement | OffscreenCanvas;\n sourceX?: number;\n sourceY?: number;\n\n width?: number;\n height?: number;\n depth?: number;\n }): void {\n const {\n source,\n sourceX = 0,\n sourceY = 0,\n\n texture,\n mipLevel = 0,\n aspect = 'all',\n colorSpace = 'display-p3',\n premultipliedAlpha = false,\n // destinationX,\n // destinationY,\n // desitnationZ,\n\n width = texture.width,\n height = texture.height,\n depth = 1\n } = options;\n\n const webGpuTexture = texture as WebGPUTexture;\n\n this.handle?.queue.copyExternalImageToTexture(\n // source: GPUImageCopyExternalImage\n {\n source,\n origin: [sourceX, sourceY]\n },\n // destination: GPUImageCopyTextureTagged\n {\n texture: webGpuTexture.handle,\n origin: [0, 0, 0], // [x, y, z],\n mipLevel,\n aspect,\n colorSpace,\n premultipliedAlpha\n },\n // copySize: GPUExtent3D\n [\n width,\n height,\n depth\n ]\n )\n }\n}\n"],"mappings":";AAuBA,SAAQA,MAAM,EAAEC,aAAa,EAAEC,GAAG,EAAEC,GAAG,QAAO,eAAe;AAAC,SACtDC,YAAY;AAAA,SACZC,aAAa;AAAA,SACbC,qBAAqB;AAAA,SACrBC,aAAa;AAAA,SACbC,YAAY;AAAA,SACZC,oBAAoB;AAAA,SAEpBC,qBAAqB;AAAA,SACrBC,gBAAgB;AAAA,SAChBC,iBAAiB;AAAA,SAGjBC,mBAAmB;AAI3B,OAAO,MAAMC,YAAY,SAASd,MAAM,CAAC;EAevC,OAAOe,WAAWA,CAAA,EAAY;IAC5B,OAAOC,OAAO,CAAC,OAAOC,SAAS,KAAK,WAAW,IAAIA,SAAS,CAACC,GAAG,CAAC;EACnE;EAEA,aAAaC,MAAMA,CAACC,KAAkB,EAAyB;IAC7D,IAAI,CAACH,SAAS,CAACC,GAAG,EAAE;MAClB,MAAM,IAAIG,KAAK,CACb,8FACF,CAAC;IACH;IACAnB,GAAG,CAACoB,cAAc,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAC/C,MAAMC,OAAO,GAAG,MAAMN,SAAS,CAACC,GAAG,CAACM,cAAc,CAAC;MACjDC,eAAe,EAAE;IAEnB,CAAC,CAAC;IACF,IAAI,CAACF,OAAO,EAAE;MACZ,MAAM,IAAIF,KAAK,CAAC,kCAAkC,CAAC;IACrD;IAEA,MAAMK,WAAW,GAAG,MAAMH,OAAO,CAACI,kBAAkB,CAAC,CAAC;IACtDzB,GAAG,CAAC0B,KAAK,CAAC,CAAC,EAAE,mBAAmB,EAAEF,WAAW,CAAC,CAAC,CAAC;IAEhD,MAAMG,SAAS,GAAG,MAAMN,OAAO,CAACO,aAAa,CAAC;MAC5CC,gBAAgB,EAAER,OAAO,CAACS;IAG5B,CAAC,CAAC;IACF9B,GAAG,CAAC0B,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAErC,IAAI,OAAOR,KAAK,CAACa,MAAM,KAAK,QAAQ,EAAE;MACpC,MAAMhC,aAAa,CAACiC,UAAU;MAC9BhC,GAAG,CAAC0B,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;IACjC;IAEA,MAAMO,MAAM,GAAG,IAAIrB,YAAY,CAACe,SAAS,EAAEN,OAAO,EAAEH,KAAK,CAAC;IAC1DlB,GAAG,CAAC0B,KAAK,CAAC,CAAC,EAAE,gBAAgB,EAAEO,MAAM,CAACC,IAAI,CAAC,CAAC,CAAC;IAC7ClC,GAAG,CAACmC,KAAK,CAAC,CAAC,EAAEF,MAAM,CAACC,IAAI,CAAC,CAAC,CAAC;IAC3BlC,GAAG,CAACoC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACjB,OAAOH,MAAM;EACf;EAEAI,WAAWA,CAACJ,MAAiB,EAAEZ,OAAmB,EAAEH,KAAkB,EAAE;IACtE,KAAK,CAAC;MAAC,GAAGA,KAAK;MAAEoB,EAAE,EAAEpB,KAAK,CAACoB,EAAE,IAAIrC,GAAG,CAAC,eAAe;IAAC,CAAC,CAAC;IAACsC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA,wBArDd,IAAI;IAAAA,eAAA,yBAEL,IAAI;IAAAA,eAAA,qBACT,IAAI;IAAAA,eAAA;IAAAA,eAAA,kBAGf,KAAK;IAAAA,eAAA;IAgD9B,IAAI,CAACC,MAAM,GAAGP,MAAM;IACpB,IAAI,CAACZ,OAAO,GAAGA,OAAO;IAEtB,IAAI,CAACoB,KAAK,GAAG;MACXC,IAAI,EAAE,QAAQ;MACdC,MAAM,EAAE,IAAI,CAACtB,OAAO,CAACuB,OAAO;MAC5BC,QAAQ,EAAE,EAAE;MACZC,OAAO,EAAE,EAAE;MACX9B,GAAG,EAAE,SAAS;MACd+B,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;MAClCC,uBAAuB,EAAE;QACvBC,IAAI,EAAE,KAAK;QACXC,IAAI,EAAE;MACR,CAAC;MACDC,YAAY,EAAE,EAAE;MAChBC,cAAc,EAAE;IAClB,CAAC;IAGD,IAAI,CAACC,IAAI,GAAG,IAAIC,OAAO,CAAyC,MAAOC,OAAO,IAAK;MACjF,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAAChB,MAAM,CAACa,IAAI;MACvC,IAAI,CAACI,OAAO,GAAG,IAAI;MACnBF,OAAO,CAAC;QAACG,MAAM,EAAE,WAAW;QAAEC,OAAO,EAAEH,QAAQ,CAACG;MAAO,CAAC,CAAC;IAC3D,CAAC,CAAC;IAGF,IAAIzC,KAAK,CAACa,MAAM,EAAE;MAChB,IAAI,CAAC6B,aAAa,GAAG,IAAIjD,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAACU,OAAO,EAAE;QAACU,MAAM,EAAEb,KAAK,CAACa;MAAM,CAAC,CAAC;IAC1F;IAEA,IAAI,CAACD,QAAQ,GAAG,IAAI,CAAC+B,YAAY,CAAC,CAAC;EACrC;EAOAC,OAAOA,CAAA,EAAS;IACd,IAAI,CAACtB,MAAM,CAACsB,OAAO,CAAC,CAAC;EACvB;EAEA,IAAI5B,IAAIA,CAAA,EAAe;IACrB,OAAO,IAAI,CAACO,KAAK;EACnB;EAIA,IAAIsB,MAAMA,CAAA,EAAiB;IACzB,OAAO,IAAI,CAACvB,MAAM,CAACuB,MAAM;EAC3B;EAEAC,wBAAwBA,CAACC,MAAqB,EAAW;IACvD,OAAO,CAACA,MAAM,CAACC,QAAQ,CAAC,OAAO,CAAC;EAClC;EAGAC,yBAAyBA,CAACF,MAAqB,EAAW;IACxD,OAAO,IAAI,CAACD,wBAAwB,CAACC,MAAM,CAAC;EAC9C;EAGAG,yBAAyBA,CAACH,MAAqB,EAAW;IACxD,OAAO,IAAI,CAACD,wBAAwB,CAACC,MAAM,CAAC;EAC9C;EAEA,IAAII,MAAMA,CAAA,EAAY;IACpB,OAAO,IAAI,CAACZ,OAAO;EACrB;EAEAa,YAAYA,CAACpD,KAAkD,EAAgB;IAC7E,MAAMqD,QAAQ,GAAG,IAAI,CAACC,eAAe,CAACtD,KAAK,CAAC;IAC5C,OAAO,IAAIhB,YAAY,CAAC,IAAI,EAAEqE,QAAQ,CAAC;EACzC;EAEAE,cAAcA,CAACvD,KAAmB,EAAiB;IACjD,OAAO,IAAIf,aAAa,CAAC,IAAI,EAAEe,KAAK,CAAC;EACvC;EAEAwD,qBAAqBA,CAACxD,KAA2B,EAAyB;IACxE,OAAO,IAAId,qBAAqB,CAAC,IAAI,EAAEc,KAAK,CAAC;EAC/C;EAEAyD,YAAYA,CAACzD,KAAkB,EAAgB;IAC7C,OAAO,IAAIZ,YAAY,CAAC,IAAI,EAAEY,KAAK,CAAC;EACtC;EAEA0D,aAAaA,CAAC1D,KAAmB,EAAiB;IAChD,OAAO,IAAIb,aAAa,CAAC,IAAI,EAAEa,KAAK,CAAC;EACvC;EAEA2D,oBAAoBA,CAAC3D,KAA0B,EAAwB;IACrE,OAAO,IAAIX,oBAAoB,CAAC,IAAI,EAAEW,KAAK,CAAC;EAC9C;EAEA4D,iBAAiBA,CAAC5D,KAAuB,EAAqB;IAC5D,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;EACpC;EAEA4D,qBAAqBA,CAAC7D,KAA2B,EAAyB;IACxE,OAAO,IAAIV,qBAAqB,CAAC,IAAI,EAAEU,KAAK,CAAC;EAC/C;EAQA8D,eAAeA,CAAC9D,KAAsB,EAAoB;IACxD,IAAI,CAAC+D,cAAc,GAAG,IAAI,CAACA,cAAc,IAAI,IAAI,CAACzC,MAAM,CAAC0C,oBAAoB,CAAC,CAAC;IAC/E,OAAO,IAAIzE,gBAAgB,CAAC,IAAI,EAAES,KAAK,CAAC;EAC1C;EAEAiE,gBAAgBA,CAACjE,KAAuB,EAAqB;IAC3D,IAAI,CAAC+D,cAAc,GAAG,IAAI,CAACA,cAAc,IAAI,IAAI,CAACzC,MAAM,CAAC0C,oBAAoB,CAAC,CAAC;IAC/E,OAAO,IAAIxE,iBAAiB,CAAC,IAAI,EAAEQ,KAAK,CAAC;EAC3C;EAMAkE,mBAAmBA,CAAClE,KAAyB,EAAuB;IAClE,OAAO,IAAIP,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAACU,OAAO,EAAEH,KAAK,CAAC;EAC3D;EAOAmE,oBAAoBA,CAAA,EAAqB;IAAA,IAAAC,mBAAA;IACvC,IAAI,CAACC,UAAU,GACb,IAAI,CAACA,UAAU,IACf,IAAI,CAACP,eAAe,CAAC;MACnBQ,WAAW,GAAAF,mBAAA,GAAE,IAAI,CAAC1B,aAAa,cAAA0B,mBAAA,uBAAlBA,mBAAA,CAAoBG,qBAAqB,CAAC;IACzD,CAAC,CAAC;IACJ,OAAO,IAAI,CAACF,UAAU;EACxB;EAEAG,MAAMA,CAAA,EAAS;IAAA,IAAAC,gBAAA,EAAAC,oBAAA;IACb,CAAAD,gBAAA,OAAI,CAACJ,UAAU,cAAAI,gBAAA,uBAAfA,gBAAA,CAAiBE,GAAG,CAAC,CAAC;IACtB,MAAMC,aAAa,IAAAF,oBAAA,GAAG,IAAI,CAACX,cAAc,cAAAW,oBAAA,uBAAnBA,oBAAA,CAAqBG,MAAM,CAAC,CAAC;IACnD,IAAID,aAAa,EAAE;MACjB,IAAI,CAACtD,MAAM,CAACwD,KAAK,CAACN,MAAM,CAAC,CAACI,aAAa,CAAC,CAAC;IAC3C;IACA,IAAI,CAACb,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACM,UAAU,GAAG,IAAI;EACxB;EAEA1B,YAAYA,CAAA,EAAG;IAEb,MAAM/B,QAAQ,GAAG,IAAImE,GAAG,CAAgB,IAAI,CAACzD,MAAM,CAACV,QAA8B,CAAC;IAInF,IAAIA,QAAQ,CAACoE,GAAG,CAAC,gBAAgB,CAAC,EAAE;MAElCpE,QAAQ,CAACqE,MAAM,CAAC,gBAAgB,CAAC;MACjCrE,QAAQ,CAACsE,GAAG,CAAC,oBAAoB,CAAC;IACpC;IAGA,IAAItE,QAAQ,CAACoE,GAAG,CAAC,wBAAwB,CAAC,EAAE;MAC1CpE,QAAQ,CAACsE,GAAG,CAAC,+BAA+B,CAAC;IAC/C;IAEAtE,QAAQ,CAACsE,GAAG,CAAC,QAAQ,CAAC;IAEtBtE,QAAQ,CAACsE,GAAG,CAAC,mBAAmB,CAAC;IAGjCtE,QAAQ,CAACsE,GAAG,CAAC,4BAA4B,CAAC;IAC1CtE,QAAQ,CAACsE,GAAG,CAAC,4BAA4B,CAAC;IAC1CtE,QAAQ,CAACsE,GAAG,CAAC,gCAAgC,CAAC;IAC9CtE,QAAQ,CAACsE,GAAG,CAAC,qBAAqB,CAAC;IACnCtE,QAAQ,CAACsE,GAAG,CAAC,qBAAqB,CAAC;IACnCtE,QAAQ,CAACsE,GAAG,CAAC,4BAA4B,CAAC;IAG1CtE,QAAQ,CAACsE,GAAG,CAAC,6BAA6B,CAAC;IAG3CtE,QAAQ,CAACsE,GAAG,CAAC,8BAA8B,CAAC;IAC5CtE,QAAQ,CAACsE,GAAG,CAAC,gCAAgC,CAAC;IAC9CtE,QAAQ,CAACsE,GAAG,CAAC,gCAAgC,CAAC;IAE9CtE,QAAQ,CAACsE,GAAG,CAAC,qCAAqC,CAAC;IACnDtE,QAAQ,CAACsE,GAAG,CAAC,qCAAqC,CAAC;IACnDtE,QAAQ,CAACsE,GAAG,CAAC,kCAAkC,CAAC;IAGhDtE,QAAQ,CAACsE,GAAG,CAAC,sCAAsC,CAAC;IACpDtE,QAAQ,CAACsE,GAAG,CAAC,kCAAkC,CAAC;IAChDtE,QAAQ,CAACsE,GAAG,CAAC,kCAAkC,CAAC;IAGhDtE,QAAQ,CAACsE,GAAG,CAAC,gBAAgB,CAAC;IAC9BtE,QAAQ,CAACsE,GAAG,CAAC,iBAAiB,CAAC;IAC/BtE,QAAQ,CAACsE,GAAG,CAAC,kBAAkB,CAAC;IAChCtE,QAAQ,CAACsE,GAAG,CAAC,kBAAkB,CAAC;IAEhC,OAAOtE,QAAQ;EACjB;EAEAuE,0BAA0BA,CAACC,OAc1B,EAAQ;IAAA,IAAAC,YAAA;IACP,MAAM;MACJC,MAAM;MACNC,OAAO,GAAG,CAAC;MACXC,OAAO,GAAG,CAAC;MAEXC,OAAO;MACPC,QAAQ,GAAG,CAAC;MACZC,MAAM,GAAG,KAAK;MACdC,UAAU,GAAG,YAAY;MACzBC,kBAAkB,GAAG,KAAK;MAK1BC,KAAK,GAAGL,OAAO,CAACK,KAAK;MACrBC,MAAM,GAAGN,OAAO,CAACM,MAAM;MACvBC,KAAK,GAAG;IACV,CAAC,GAAGZ,OAAO;IAEX,MAAMa,aAAa,GAAGR,OAAwB;IAE9C,CAAAJ,YAAA,OAAI,CAAC/D,MAAM,cAAA+D,YAAA,uBAAXA,YAAA,CAAaP,KAAK,CAACK,0BAA0B,CAE3C;MACEG,MAAM;MACNY,MAAM,EAAE,CAACX,OAAO,EAAEC,OAAO;IAC3B,CAAC,EAED;MACEC,OAAO,EAAEQ,aAAa,CAAC3E,MAAM;MAC7B4E,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MACjBR,QAAQ;MACRC,MAAM;MACNC,UAAU;MACVC;IACF,CAAC,EAED,CACEC,KAAK,EACLC,MAAM,EACNC,KAAK,CAET,CAAC;EACH;AACF;AAAC3E,eAAA,CAnUY3B,YAAY,UAYD,QAAQ"}
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"webgpu-types.js"}
1
+ {"version":3,"file":"webgpu-types.js","names":[],"sources":["../../src/adapter/webgpu-types.ts"],"sourcesContent":[""],"mappings":""}