@luma.gl/webgpu 9.0.0-alpha.4 → 9.0.0-alpha.40

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 (121) hide show
  1. package/LICENSE +3 -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 +19 -14
  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 +8 -17
  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 +33 -40
  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 +51 -48
  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 +16 -31
  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 +11 -29
  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 +14 -27
  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 +6 -11
  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 +6 -14
  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 +4 -105
  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 +59 -36
  50. package/dist/adapter/resources/webgpu-render-pass.js.map +1 -1
  51. package/dist/adapter/resources/webgpu-render-pipeline.d.ts +14 -10
  52. package/dist/adapter/resources/webgpu-render-pipeline.d.ts.map +1 -1
  53. package/dist/adapter/resources/webgpu-render-pipeline.js +50 -67
  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 +11 -11
  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 +11 -25
  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 +17 -27
  66. package/dist/adapter/resources/webgpu-texture.js.map +1 -1
  67. package/dist/adapter/resources/webgpu-vertex-array.d.ts +26 -0
  68. package/dist/adapter/resources/webgpu-vertex-array.d.ts.map +1 -0
  69. package/dist/adapter/resources/webgpu-vertex-array.js +39 -0
  70. package/dist/adapter/resources/webgpu-vertex-array.js.map +1 -0
  71. package/dist/adapter/webgpu-canvas-context.d.ts +16 -12
  72. package/dist/adapter/webgpu-canvas-context.d.ts.map +1 -1
  73. package/dist/adapter/webgpu-canvas-context.js +26 -47
  74. package/dist/adapter/webgpu-canvas-context.js.map +1 -1
  75. package/dist/adapter/webgpu-device.d.ts +38 -22
  76. package/dist/adapter/webgpu-device.d.ts.map +1 -1
  77. package/dist/adapter/webgpu-device.js +87 -91
  78. package/dist/adapter/webgpu-device.js.map +1 -1
  79. package/dist/adapter/webgpu-types.js.map +1 -1
  80. package/dist/dist.dev.js +3586 -0
  81. package/dist/glsl/glsllang.js +0 -1
  82. package/dist/glsl/glsllang.js.map +1 -1
  83. package/dist/index.cjs +1519 -0
  84. package/dist/index.d.ts +5 -7
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +5 -7
  87. package/dist/index.js.map +1 -1
  88. package/dist.min.js +18 -0
  89. package/package.json +18 -9
  90. package/src/adapter/helpers/accessor-to-format.ts +2 -2
  91. package/src/adapter/helpers/convert-texture-format.ts +1 -1
  92. package/src/adapter/helpers/generate-mipmaps.ts +1 -1
  93. package/src/adapter/helpers/get-bind-group.ts +22 -12
  94. package/src/adapter/helpers/get-vertex-buffer-layout.ts +58 -34
  95. package/src/adapter/helpers/webgpu-parameters.ts +56 -47
  96. package/src/adapter/resources/webgpu-buffer.ts +6 -10
  97. package/src/adapter/resources/webgpu-command-encoder.ts +62 -41
  98. package/src/adapter/resources/webgpu-compute-pass.ts +13 -13
  99. package/src/adapter/resources/webgpu-compute-pipeline.ts +6 -5
  100. package/src/adapter/resources/webgpu-external-texture.ts +5 -5
  101. package/src/adapter/resources/webgpu-framebuffer.ts +8 -109
  102. package/src/adapter/resources/webgpu-query.ts +3 -3
  103. package/src/adapter/resources/webgpu-render-pass.ts +74 -18
  104. package/src/adapter/resources/webgpu-render-pipeline.ts +64 -39
  105. package/src/adapter/resources/webgpu-sampler.ts +12 -5
  106. package/src/adapter/resources/webgpu-shader.ts +13 -10
  107. package/src/adapter/resources/webgpu-texture.ts +22 -8
  108. package/src/adapter/resources/webgpu-vertex-array.ts +74 -0
  109. package/src/adapter/webgpu-canvas-context.ts +52 -27
  110. package/src/adapter/webgpu-device.ts +150 -60
  111. package/src/index.ts +7 -9
  112. package/dist/bundle.d.ts +0 -2
  113. package/dist/bundle.d.ts.map +0 -1
  114. package/dist/bundle.js +0 -5
  115. package/dist/bundle.js.map +0 -1
  116. package/dist/init.d.ts +0 -2
  117. package/dist/init.d.ts.map +0 -1
  118. package/dist/init.js +0 -4
  119. package/dist/init.js.map +0 -1
  120. package/src/bundle.ts +0 -4
  121. package/src/init.ts +0 -4
@@ -1,77 +1,69 @@
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 {
1
+ import { Device, CanvasContext, log, uid } from '@luma.gl/core';
2
+ import { WebGPUBuffer } from "./resources/webgpu-buffer.js";
3
+ import { WebGPUTexture } from "./resources/webgpu-texture.js";
4
+ import { WebGPUExternalTexture } from "./resources/webgpu-external-texture.js";
5
+ import { WebGPUSampler } from "./resources/webgpu-sampler.js";
6
+ import { WebGPUShader } from "./resources/webgpu-shader.js";
7
+ import { WebGPURenderPipeline } from "./resources/webgpu-render-pipeline.js";
8
+ import { WebGPUComputePipeline } from "./resources/webgpu-compute-pipeline.js";
9
+ import { WebGPURenderPass } from "./resources/webgpu-render-pass.js";
10
+ import { WebGPUComputePass } from "./resources/webgpu-compute-pass.js";
11
+ import { WebGPUVertexArray } from "./resources/webgpu-vertex-array.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
-
48
- _defineProperty(this, "handle", void 0);
49
-
50
- _defineProperty(this, "adapter", void 0);
51
-
52
- _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
-
60
- _defineProperty(this, "_info", void 0);
61
-
62
- _defineProperty(this, "_isLost", false);
63
-
64
- _defineProperty(this, "features", void 0);
65
-
45
+ super({
46
+ ...props,
47
+ id: props.id || uid('webgpu-device')
48
+ });
49
+ this.handle = void 0;
50
+ this.adapter = void 0;
51
+ this.lost = void 0;
52
+ this.canvasContext = null;
53
+ this.commandEncoder = null;
54
+ this.renderPass = null;
55
+ this._info = void 0;
56
+ this._isLost = false;
57
+ this.features = void 0;
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',
74
- shadingLanguages: ['glsl', 'wgsl'],
66
+ shadingLanguages: ['wgsl'],
75
67
  shadingLanguageVersions: {
76
68
  glsl: '450',
77
69
  wgsl: '100'
@@ -79,121 +71,99 @@ 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;
85
- });
86
-
87
- if (props.canvas) {
88
- this.canvasContext = new WebGPUCanvasContext(this, this.adapter, {
89
- canvas: props.canvas
77
+ resolve({
78
+ reason: 'destroyed',
79
+ message: lostInfo.message
90
80
  });
91
- }
92
-
81
+ });
82
+ this.canvasContext = new WebGPUCanvasContext(this, this.adapter, {
83
+ canvas: props.canvas
84
+ });
93
85
  this.features = this._getFeatures();
94
86
  }
95
-
96
87
  destroy() {
97
88
  this.handle.destroy();
98
89
  }
99
-
100
90
  get info() {
101
91
  return this._info;
102
92
  }
103
-
104
93
  get limits() {
105
94
  return this.handle.limits;
106
95
  }
107
-
108
96
  isTextureFormatSupported(format) {
109
97
  return !format.includes('webgl');
110
98
  }
111
-
112
99
  isTextureFormatFilterable(format) {
113
100
  return this.isTextureFormatSupported(format);
114
101
  }
115
-
116
102
  isTextureFormatRenderable(format) {
117
103
  return this.isTextureFormatSupported(format);
118
104
  }
119
-
120
105
  get isLost() {
121
106
  return this._isLost;
122
107
  }
123
-
124
- _createBuffer(props) {
125
- return new WebGPUBuffer(this, props);
108
+ createBuffer(props) {
109
+ const newProps = this._getBufferProps(props);
110
+ return new WebGPUBuffer(this, newProps);
126
111
  }
127
-
128
112
  _createTexture(props) {
129
113
  return new WebGPUTexture(this, props);
130
114
  }
131
-
132
115
  createExternalTexture(props) {
133
116
  return new WebGPUExternalTexture(this, props);
134
117
  }
135
-
136
118
  createShader(props) {
137
119
  return new WebGPUShader(this, props);
138
120
  }
139
-
140
121
  createSampler(props) {
141
122
  return new WebGPUSampler(this, props);
142
123
  }
143
-
144
124
  createRenderPipeline(props) {
145
125
  return new WebGPURenderPipeline(this, props);
146
126
  }
147
-
148
127
  createFramebuffer(props) {
149
128
  throw new Error('Not implemented');
150
129
  }
151
-
152
130
  createComputePipeline(props) {
153
131
  return new WebGPUComputePipeline(this, props);
154
132
  }
155
-
133
+ createVertexArray(props) {
134
+ return new WebGPUVertexArray(this, props);
135
+ }
156
136
  beginRenderPass(props) {
157
137
  this.commandEncoder = this.commandEncoder || this.handle.createCommandEncoder();
158
138
  return new WebGPURenderPass(this, props);
159
139
  }
160
-
161
140
  beginComputePass(props) {
162
141
  this.commandEncoder = this.commandEncoder || this.handle.createCommandEncoder();
163
142
  return new WebGPUComputePass(this, props);
164
143
  }
165
-
166
144
  createCanvasContext(props) {
167
145
  return new WebGPUCanvasContext(this, this.adapter, props);
168
146
  }
169
-
170
147
  getDefaultRenderPass() {
171
- this.renderPass = this.renderPass || this.beginRenderPass({
172
- framebuffer: this.canvasContext.getCurrentFramebuffer()
173
- });
174
- return this.renderPass;
148
+ throw new Error('a');
175
149
  }
176
-
177
150
  submit() {
178
- this.renderPass.endPass();
179
- const commandBuffer = this.commandEncoder.finish();
180
- this.handle.queue.submit([commandBuffer]);
151
+ var _this$commandEncoder;
152
+ const commandBuffer = (_this$commandEncoder = this.commandEncoder) === null || _this$commandEncoder === void 0 ? void 0 : _this$commandEncoder.finish();
153
+ if (commandBuffer) {
154
+ this.handle.queue.submit([commandBuffer]);
155
+ }
181
156
  this.commandEncoder = null;
182
- this.renderPass = null;
183
157
  }
184
-
185
158
  _getFeatures() {
186
159
  const features = new Set(this.handle.features);
187
-
188
160
  if (features.has('depth-clamping')) {
189
161
  features.delete('depth-clamping');
190
162
  features.add('depth-clip-control');
191
163
  }
192
-
193
164
  if (features.has('texture-compression-bc')) {
194
165
  features.add('texture-compression-bc5-webgl');
195
166
  }
196
-
197
167
  features.add('webgpu');
198
168
  features.add('timer-query-webgl');
199
169
  features.add('vertex-array-object-webgl1');
@@ -218,8 +188,34 @@ export default class WebGPUDevice extends Device {
218
188
  features.add('glsl-texture-lod');
219
189
  return features;
220
190
  }
221
-
191
+ copyExternalImageToTexture(options) {
192
+ var _this$handle;
193
+ const {
194
+ source,
195
+ sourceX = 0,
196
+ sourceY = 0,
197
+ texture,
198
+ mipLevel = 0,
199
+ aspect = 'all',
200
+ colorSpace = 'display-p3',
201
+ premultipliedAlpha = false,
202
+ width = texture.width,
203
+ height = texture.height,
204
+ depth = 1
205
+ } = options;
206
+ const webGpuTexture = texture;
207
+ (_this$handle = this.handle) === null || _this$handle === void 0 ? void 0 : _this$handle.queue.copyExternalImageToTexture({
208
+ source,
209
+ origin: [sourceX, sourceY]
210
+ }, {
211
+ texture: webGpuTexture.handle,
212
+ origin: [0, 0, 0],
213
+ mipLevel,
214
+ aspect,
215
+ colorSpace,
216
+ premultipliedAlpha
217
+ }, [width, height, depth]);
218
+ }
222
219
  }
223
-
224
- _defineProperty(WebGPUDevice, "type", 'webgpu');
220
+ WebGPUDevice.type = 'webgpu';
225
221
  //# 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","WebGPUVertexArray","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","handle","lost","canvasContext","commandEncoder","renderPass","_info","_isLost","type","vendor","__brand","renderer","version","shadingLanguages","shadingLanguageVersions","glsl","wgsl","vendorMasked","rendererMasked","Promise","resolve","lostInfo","reason","message","_getFeatures","destroy","limits","isTextureFormatSupported","format","includes","isTextureFormatFilterable","isTextureFormatRenderable","isLost","createBuffer","newProps","_getBufferProps","_createTexture","createExternalTexture","createShader","createSampler","createRenderPipeline","createFramebuffer","createComputePipeline","createVertexArray","beginRenderPass","createCommandEncoder","beginComputePass","createCanvasContext","getDefaultRenderPass","submit","_this$commandEncoder","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 VertexArrayProps\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';\nimport {WebGPUVertexArray} from './resources/webgpu-vertex-array';\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: ['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 createVertexArray(props: VertexArrayProps): WebGPUVertexArray {\n return new WebGPUVertexArray(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 * @deprecated Create explicit pass with device.beginRenderPass\n */\n getDefaultRenderPass(): WebGPURenderPass {\n // this.renderPass =\n // this.renderPass ||\n // this.beginRenderPass({\n // framebuffer: this.canvasContext?.getCurrentFramebuffer()\n // });\n // return this.renderPass;\n throw new Error('a');\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":"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"}
@@ -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":""}