@luma.gl/webgpu 9.0.0-alpha.16 → 9.0.0-alpha.19

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 (213) hide show
  1. package/dist/adapter/helpers/accessor-to-format.js +1 -100
  2. package/dist/adapter/helpers/accessor-to-format.js.map +1 -0
  3. package/dist/adapter/helpers/convert-texture-format.d.ts +1 -1
  4. package/dist/adapter/helpers/convert-texture-format.js +5 -5
  5. package/dist/adapter/helpers/convert-texture-format.js.map +1 -0
  6. package/dist/adapter/helpers/generate-mipmaps.d.ts +1 -1
  7. package/dist/adapter/helpers/generate-mipmaps.js +85 -88
  8. package/dist/adapter/helpers/generate-mipmaps.js.map +1 -0
  9. package/dist/adapter/helpers/get-bind-group.d.ts +1 -1
  10. package/dist/adapter/helpers/get-bind-group.d.ts.map +1 -1
  11. package/dist/adapter/helpers/get-bind-group.js +39 -54
  12. package/dist/adapter/helpers/get-bind-group.js.map +1 -0
  13. package/dist/adapter/helpers/get-vertex-buffer-layout.d.ts +1 -1
  14. package/dist/adapter/helpers/get-vertex-buffer-layout.js +72 -97
  15. package/dist/adapter/helpers/get-vertex-buffer-layout.js.map +1 -0
  16. package/dist/adapter/helpers/webgpu-parameters.d.ts +1 -1
  17. package/dist/adapter/helpers/webgpu-parameters.js +125 -182
  18. package/dist/adapter/helpers/webgpu-parameters.js.map +1 -0
  19. package/dist/adapter/resources/webgpu-buffer.d.ts +2 -2
  20. package/dist/adapter/resources/webgpu-buffer.d.ts.map +1 -1
  21. package/dist/adapter/resources/webgpu-buffer.js +63 -57
  22. package/dist/adapter/resources/webgpu-buffer.js.map +1 -0
  23. package/dist/adapter/resources/webgpu-command-encoder.d.ts +2 -2
  24. package/dist/adapter/resources/webgpu-command-encoder.d.ts.map +1 -1
  25. package/dist/adapter/resources/webgpu-command-encoder.js +46 -47
  26. package/dist/adapter/resources/webgpu-command-encoder.js.map +1 -0
  27. package/dist/adapter/resources/webgpu-compute-pass.d.ts +2 -2
  28. package/dist/adapter/resources/webgpu-compute-pass.d.ts.map +1 -1
  29. package/dist/adapter/resources/webgpu-compute-pass.js +41 -51
  30. package/dist/adapter/resources/webgpu-compute-pass.js.map +1 -0
  31. package/dist/adapter/resources/webgpu-compute-pipeline.d.ts +2 -2
  32. package/dist/adapter/resources/webgpu-compute-pipeline.d.ts.map +1 -1
  33. package/dist/adapter/resources/webgpu-compute-pipeline.js +20 -22
  34. package/dist/adapter/resources/webgpu-compute-pipeline.js.map +1 -0
  35. package/dist/adapter/resources/webgpu-external-texture.d.ts +2 -2
  36. package/dist/adapter/resources/webgpu-external-texture.d.ts.map +1 -1
  37. package/dist/adapter/resources/webgpu-external-texture.js +20 -26
  38. package/dist/adapter/resources/webgpu-external-texture.js.map +1 -0
  39. package/dist/adapter/resources/webgpu-framebuffer.d.ts +2 -2
  40. package/dist/adapter/resources/webgpu-framebuffer.d.ts.map +1 -1
  41. package/dist/adapter/resources/webgpu-framebuffer.js +86 -89
  42. package/dist/adapter/resources/webgpu-framebuffer.js.map +1 -0
  43. package/dist/adapter/resources/webgpu-query.js +1 -42
  44. package/dist/adapter/resources/webgpu-query.js.map +1 -0
  45. package/dist/adapter/resources/webgpu-render-pass.d.ts +2 -2
  46. package/dist/adapter/resources/webgpu-render-pass.d.ts.map +1 -1
  47. package/dist/adapter/resources/webgpu-render-pass.js +70 -64
  48. package/dist/adapter/resources/webgpu-render-pass.js.map +1 -0
  49. package/dist/adapter/resources/webgpu-render-pipeline.d.ts +2 -2
  50. package/dist/adapter/resources/webgpu-render-pipeline.d.ts.map +1 -1
  51. package/dist/adapter/resources/webgpu-render-pipeline.js +118 -158
  52. package/dist/adapter/resources/webgpu-render-pipeline.js.map +1 -0
  53. package/dist/adapter/resources/webgpu-sampler.d.ts +3 -3
  54. package/dist/adapter/resources/webgpu-sampler.d.ts.map +1 -1
  55. package/dist/adapter/resources/webgpu-sampler.js +16 -16
  56. package/dist/adapter/resources/webgpu-sampler.js.map +1 -0
  57. package/dist/adapter/resources/webgpu-shader.d.ts +3 -3
  58. package/dist/adapter/resources/webgpu-shader.d.ts.map +1 -1
  59. package/dist/adapter/resources/webgpu-shader.js +44 -47
  60. package/dist/adapter/resources/webgpu-shader.js.map +1 -0
  61. package/dist/adapter/resources/webgpu-texture.d.ts +3 -2
  62. package/dist/adapter/resources/webgpu-texture.d.ts.map +1 -1
  63. package/dist/adapter/resources/webgpu-texture.js +87 -100
  64. package/dist/adapter/resources/webgpu-texture.js.map +1 -0
  65. package/dist/adapter/webgpu-canvas-context.d.ts +2 -2
  66. package/dist/adapter/webgpu-canvas-context.d.ts.map +1 -1
  67. package/dist/adapter/webgpu-canvas-context.js +68 -77
  68. package/dist/adapter/webgpu-canvas-context.js.map +1 -0
  69. package/dist/adapter/webgpu-device.d.ts +2 -2
  70. package/dist/adapter/webgpu-device.d.ts.map +1 -1
  71. package/dist/adapter/webgpu-device.js +194 -215
  72. package/dist/adapter/webgpu-device.js.map +1 -0
  73. package/dist/adapter/webgpu-types.js +2 -0
  74. package/dist/adapter/webgpu-types.js.map +1 -0
  75. package/dist/dist.dev.js +3061 -0
  76. package/dist/glsl/glsllang.js +6 -9
  77. package/dist/glsl/glsllang.js.map +1 -0
  78. package/dist/index.cjs +1442 -0
  79. package/dist/index.d.ts +1 -3
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +6 -10
  82. package/dist/index.js.map +1 -0
  83. package/dist.min.js +17 -0
  84. package/package.json +17 -8
  85. package/src/adapter/helpers/generate-mipmaps.ts +1 -1
  86. package/src/adapter/helpers/get-bind-group.ts +1 -1
  87. package/src/adapter/helpers/get-vertex-buffer-layout.ts +2 -2
  88. package/src/adapter/helpers/webgpu-parameters.ts +9 -9
  89. package/src/adapter/resources/webgpu-buffer.ts +1 -1
  90. package/src/adapter/resources/webgpu-command-encoder.ts +4 -4
  91. package/src/adapter/resources/webgpu-compute-pass.ts +1 -1
  92. package/src/adapter/resources/webgpu-compute-pipeline.ts +1 -1
  93. package/src/adapter/resources/webgpu-external-texture.ts +1 -1
  94. package/src/adapter/resources/webgpu-framebuffer.ts +6 -6
  95. package/src/adapter/resources/webgpu-query.ts +1 -1
  96. package/src/adapter/resources/webgpu-render-pass.ts +1 -1
  97. package/src/adapter/resources/webgpu-render-pipeline.ts +3 -3
  98. package/src/adapter/resources/webgpu-sampler.ts +1 -1
  99. package/src/adapter/resources/webgpu-shader.ts +3 -1
  100. package/src/adapter/resources/webgpu-texture.ts +1 -1
  101. package/src/adapter/webgpu-canvas-context.ts +1 -1
  102. package/src/adapter/webgpu-device.ts +3 -2
  103. package/src/index.ts +2 -5
  104. package/dist/bundle.d.ts +0 -2
  105. package/dist/bundle.d.ts.map +0 -1
  106. package/dist/bundle.js +0 -4
  107. package/dist/dist.js +0 -8051
  108. package/dist/dist.min.js +0 -1
  109. package/dist/es5/adapter/helpers/accessor-to-format.js +0 -2
  110. package/dist/es5/adapter/helpers/accessor-to-format.js.map +0 -1
  111. package/dist/es5/adapter/helpers/convert-texture-format.js +0 -13
  112. package/dist/es5/adapter/helpers/convert-texture-format.js.map +0 -1
  113. package/dist/es5/adapter/helpers/generate-mipmaps.js +0 -103
  114. package/dist/es5/adapter/helpers/generate-mipmaps.js.map +0 -1
  115. package/dist/es5/adapter/helpers/get-bind-group.js +0 -66
  116. package/dist/es5/adapter/helpers/get-bind-group.js.map +0 -1
  117. package/dist/es5/adapter/helpers/get-vertex-buffer-layout.js +0 -149
  118. package/dist/es5/adapter/helpers/get-vertex-buffer-layout.js.map +0 -1
  119. package/dist/es5/adapter/helpers/webgpu-parameters.js +0 -150
  120. package/dist/es5/adapter/helpers/webgpu-parameters.js.map +0 -1
  121. package/dist/es5/adapter/resources/webgpu-buffer.js +0 -131
  122. package/dist/es5/adapter/resources/webgpu-buffer.js.map +0 -1
  123. package/dist/es5/adapter/resources/webgpu-command-encoder.js +0 -90
  124. package/dist/es5/adapter/resources/webgpu-command-encoder.js.map +0 -1
  125. package/dist/es5/adapter/resources/webgpu-compute-pass.js +0 -85
  126. package/dist/es5/adapter/resources/webgpu-compute-pass.js.map +0 -1
  127. package/dist/es5/adapter/resources/webgpu-compute-pipeline.js +0 -48
  128. package/dist/es5/adapter/resources/webgpu-compute-pipeline.js.map +0 -1
  129. package/dist/es5/adapter/resources/webgpu-external-texture.js +0 -50
  130. package/dist/es5/adapter/resources/webgpu-external-texture.js.map +0 -1
  131. package/dist/es5/adapter/resources/webgpu-framebuffer.js +0 -126
  132. package/dist/es5/adapter/resources/webgpu-framebuffer.js.map +0 -1
  133. package/dist/es5/adapter/resources/webgpu-query.js +0 -2
  134. package/dist/es5/adapter/resources/webgpu-query.js.map +0 -1
  135. package/dist/es5/adapter/resources/webgpu-render-pass.js +0 -124
  136. package/dist/es5/adapter/resources/webgpu-render-pass.js.map +0 -1
  137. package/dist/es5/adapter/resources/webgpu-render-pipeline.js +0 -185
  138. package/dist/es5/adapter/resources/webgpu-render-pipeline.js.map +0 -1
  139. package/dist/es5/adapter/resources/webgpu-sampler.js +0 -45
  140. package/dist/es5/adapter/resources/webgpu-sampler.js.map +0 -1
  141. package/dist/es5/adapter/resources/webgpu-shader.js +0 -125
  142. package/dist/es5/adapter/resources/webgpu-shader.js.map +0 -1
  143. package/dist/es5/adapter/resources/webgpu-texture.js +0 -138
  144. package/dist/es5/adapter/resources/webgpu-texture.js.map +0 -1
  145. package/dist/es5/adapter/webgpu-canvas-context.js +0 -111
  146. package/dist/es5/adapter/webgpu-canvas-context.js.map +0 -1
  147. package/dist/es5/adapter/webgpu-device.js +0 -317
  148. package/dist/es5/adapter/webgpu-device.js.map +0 -1
  149. package/dist/es5/adapter/webgpu-types.js +0 -2
  150. package/dist/es5/adapter/webgpu-types.js.map +0 -1
  151. package/dist/es5/bundle.js +0 -6
  152. package/dist/es5/bundle.js.map +0 -1
  153. package/dist/es5/glsl/glsllang.js +0 -47
  154. package/dist/es5/glsl/glsllang.js.map +0 -1
  155. package/dist/es5/index.js +0 -44
  156. package/dist/es5/index.js.map +0 -1
  157. package/dist/es5/init.js +0 -7
  158. package/dist/es5/init.js.map +0 -1
  159. package/dist/esm/adapter/helpers/accessor-to-format.js +0 -2
  160. package/dist/esm/adapter/helpers/accessor-to-format.js.map +0 -1
  161. package/dist/esm/adapter/helpers/convert-texture-format.js +0 -7
  162. package/dist/esm/adapter/helpers/convert-texture-format.js.map +0 -1
  163. package/dist/esm/adapter/helpers/generate-mipmaps.js +0 -88
  164. package/dist/esm/adapter/helpers/generate-mipmaps.js.map +0 -1
  165. package/dist/esm/adapter/helpers/get-bind-group.js +0 -51
  166. package/dist/esm/adapter/helpers/get-bind-group.js.map +0 -1
  167. package/dist/esm/adapter/helpers/get-vertex-buffer-layout.js +0 -83
  168. package/dist/esm/adapter/helpers/get-vertex-buffer-layout.js.map +0 -1
  169. package/dist/esm/adapter/helpers/webgpu-parameters.js +0 -137
  170. package/dist/esm/adapter/helpers/webgpu-parameters.js.map +0 -1
  171. package/dist/esm/adapter/resources/webgpu-buffer.js +0 -70
  172. package/dist/esm/adapter/resources/webgpu-buffer.js.map +0 -1
  173. package/dist/esm/adapter/resources/webgpu-command-encoder.js +0 -49
  174. package/dist/esm/adapter/resources/webgpu-command-encoder.js.map +0 -1
  175. package/dist/esm/adapter/resources/webgpu-compute-pass.js +0 -44
  176. package/dist/esm/adapter/resources/webgpu-compute-pass.js.map +0 -1
  177. package/dist/esm/adapter/resources/webgpu-compute-pipeline.js +0 -23
  178. package/dist/esm/adapter/resources/webgpu-compute-pipeline.js.map +0 -1
  179. package/dist/esm/adapter/resources/webgpu-external-texture.js +0 -23
  180. package/dist/esm/adapter/resources/webgpu-external-texture.js.map +0 -1
  181. package/dist/esm/adapter/resources/webgpu-framebuffer.js +0 -93
  182. package/dist/esm/adapter/resources/webgpu-framebuffer.js.map +0 -1
  183. package/dist/esm/adapter/resources/webgpu-query.js +0 -2
  184. package/dist/esm/adapter/resources/webgpu-query.js.map +0 -1
  185. package/dist/esm/adapter/resources/webgpu-render-pass.js +0 -79
  186. package/dist/esm/adapter/resources/webgpu-render-pass.js.map +0 -1
  187. package/dist/esm/adapter/resources/webgpu-render-pipeline.js +0 -130
  188. package/dist/esm/adapter/resources/webgpu-render-pipeline.js.map +0 -1
  189. package/dist/esm/adapter/resources/webgpu-sampler.js +0 -20
  190. package/dist/esm/adapter/resources/webgpu-sampler.js.map +0 -1
  191. package/dist/esm/adapter/resources/webgpu-shader.js +0 -50
  192. package/dist/esm/adapter/resources/webgpu-shader.js.map +0 -1
  193. package/dist/esm/adapter/resources/webgpu-texture.js +0 -95
  194. package/dist/esm/adapter/resources/webgpu-texture.js.map +0 -1
  195. package/dist/esm/adapter/webgpu-canvas-context.js +0 -74
  196. package/dist/esm/adapter/webgpu-canvas-context.js.map +0 -1
  197. package/dist/esm/adapter/webgpu-device.js +0 -196
  198. package/dist/esm/adapter/webgpu-device.js.map +0 -1
  199. package/dist/esm/adapter/webgpu-types.js +0 -2
  200. package/dist/esm/adapter/webgpu-types.js.map +0 -1
  201. package/dist/esm/bundle.js +0 -4
  202. package/dist/esm/bundle.js.map +0 -1
  203. package/dist/esm/glsl/glsllang.js +0 -9
  204. package/dist/esm/glsl/glsllang.js.map +0 -1
  205. package/dist/esm/index.js +0 -8
  206. package/dist/esm/index.js.map +0 -1
  207. package/dist/esm/init.js +0 -4
  208. package/dist/esm/init.js.map +0 -1
  209. package/dist/init.d.ts +0 -2
  210. package/dist/init.d.ts.map +0 -1
  211. package/dist/init.js +0 -3
  212. package/src/bundle.ts +0 -4
  213. package/src/init.ts +0 -4
@@ -1,217 +1,196 @@
1
- /// <reference types="@webgpu/types" />
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import { Device, CanvasContext, log, uid } from '@luma.gl/api';
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
- // import {loadGlslangModule} from '../glsl/glslang.js';
14
- /** WebGPU Device implementation */
15
- class WebGPUDevice extends Device {
16
- /** Check if WebGPU is available */
17
- static isSupported() {
18
- return Boolean(typeof navigator !== 'undefined' && navigator.gpu);
19
- }
20
- static async create(props) {
21
- if (!navigator.gpu) {
22
- throw new Error('WebGPU not available. Open in Chrome Canary and turn on chrome://flags/#enable-unsafe-webgpu');
23
- }
24
- log.groupCollapsed(1, 'WebGPUDevice created')();
25
- const adapter = await navigator.gpu.requestAdapter({
26
- powerPreference: 'high-performance'
27
- // forceSoftware: false
28
- });
29
- if (!adapter) {
30
- throw new Error('Failed to request WebGPU adapter');
31
- }
32
- log.probe(1, 'Adapter available')();
33
- const gpuDevice = await adapter.requestDevice({
34
- requiredFeatures: adapter.features
35
- // TODO ensure we obtain best limits
36
- // requiredLimits: adapter.limits
37
- });
38
- log.probe(1, 'GPUDevice available')();
39
- if (typeof props.canvas === 'string') {
40
- await CanvasContext.pageLoaded;
41
- log.probe(1, 'DOM is loaded')();
42
- }
43
- const device = new WebGPUDevice(gpuDevice, adapter, props);
44
- log.probe(1, 'Device created', device.info)();
45
- log.table(1, device.info)();
46
- log.groupEnd(1)();
47
- return device;
48
- }
49
- constructor(device, adapter, props) {
50
- super({ ...props, id: props.id || uid('webgpu-device') });
51
- this.canvasContext = null;
52
- this.commandEncoder = null;
53
- this.renderPass = null;
54
- this._isLost = false;
55
- this.handle = device;
56
- this.adapter = adapter;
57
- this._info = {
58
- type: 'webgpu',
59
- vendor: this.adapter.__brand,
60
- renderer: '',
61
- version: '',
62
- gpu: 'unknown',
63
- shadingLanguages: ['glsl', 'wgsl'],
64
- shadingLanguageVersions: {
65
- glsl: '450',
66
- wgsl: '100'
67
- },
68
- vendorMasked: '',
69
- rendererMasked: ''
70
- };
71
- // "Context" loss handling
72
- this.lost = new Promise(async (resolve) => {
73
- const lostInfo = await this.handle.lost;
74
- this._isLost = true;
75
- resolve({ reason: 'destroyed', message: lostInfo.message });
76
- });
77
- // Note: WebGPU devices can be created without a canvas, for compute shader purposes
78
- if (props.canvas) {
79
- this.canvasContext = new WebGPUCanvasContext(this, this.adapter, { canvas: props.canvas });
80
- }
81
- this.features = this._getFeatures();
82
- }
83
- // TODO
84
- // Load the glslang module now so that it is available synchronously when compiling shaders
85
- // const {glsl = true} = props;
86
- // this.glslang = glsl && await loadGlslangModule();
87
- destroy() {
88
- this.handle.destroy();
89
- }
90
- get info() {
91
- return this._info;
92
- }
93
- get limits() {
94
- return this.handle.limits;
95
- }
96
- isTextureFormatSupported(format) {
97
- return !format.includes('webgl');
98
- }
99
- /** @todo implement proper check? */
100
- isTextureFormatFilterable(format) {
101
- return this.isTextureFormatSupported(format);
102
- }
103
- /** @todo implement proper check? */
104
- isTextureFormatRenderable(format) {
105
- return this.isTextureFormatSupported(format);
106
- }
107
- get isLost() {
108
- return this._isLost;
109
- }
110
- _createBuffer(props) {
111
- return new WebGPUBuffer(this, props);
112
- }
113
- _createTexture(props) {
114
- return new WebGPUTexture(this, props);
115
- }
116
- createExternalTexture(props) {
117
- return new WebGPUExternalTexture(this, props);
118
- }
119
- createShader(props) {
120
- return new WebGPUShader(this, props);
121
- }
122
- createSampler(props) {
123
- return new WebGPUSampler(this, props);
124
- }
125
- createRenderPipeline(props) {
126
- return new WebGPURenderPipeline(this, props);
127
- }
128
- createFramebuffer(props) {
129
- throw new Error('Not implemented');
130
- }
131
- createComputePipeline(props) {
132
- return new WebGPUComputePipeline(this, props);
133
- }
134
- // WebGPU specifics
135
- /**
136
- * Allows a render pass to begin against a canvas context
137
- * @todo need to support a "Framebuffer" equivalent (aka preconfigured RenderPassDescriptors?).
138
- */
139
- beginRenderPass(props) {
140
- this.commandEncoder = this.commandEncoder || this.handle.createCommandEncoder();
141
- return new WebGPURenderPass(this, props);
142
- }
143
- beginComputePass(props) {
144
- this.commandEncoder = this.commandEncoder || this.handle.createCommandEncoder();
145
- return new WebGPUComputePass(this, props);
146
- }
147
- createCanvasContext(props) {
148
- return new WebGPUCanvasContext(this, this.adapter, props);
149
- }
150
- /**
151
- * Gets default renderpass encoder.
152
- * Creates a new encoder against default canvasContext if not already created
153
- * @note Called internally by Model.
154
- */
155
- getDefaultRenderPass() {
156
- this.renderPass =
157
- this.renderPass ||
158
- this.beginRenderPass({
159
- framebuffer: this.canvasContext?.getCurrentFramebuffer()
160
- });
161
- return this.renderPass;
162
- }
163
- submit() {
164
- this.renderPass?.end();
165
- const commandBuffer = this.commandEncoder?.finish();
166
- if (commandBuffer) {
167
- this.handle.queue.submit([commandBuffer]);
168
- }
169
- this.commandEncoder = null;
170
- this.renderPass = null;
171
- }
172
- _getFeatures() {
173
- // WebGPU Features
174
- const features = new Set(this.handle.features);
175
- // Fixups for pre-standard names: https://github.com/webgpu-native/webgpu-headers/issues/133
176
- // @ts-expect-error Chrome Canary v99
177
- if (features.has('depth-clamping')) {
178
- // @ts-expect-error Chrome Canary v99
179
- features.delete('depth-clamping');
180
- features.add('depth-clip-control');
181
- }
182
- // Add subsets
183
- if (features.has('texture-compression-bc')) {
184
- features.add('texture-compression-bc5-webgl');
185
- }
186
- features.add('webgpu');
187
- features.add('timer-query-webgl');
188
- // WEBGL1 SUPPORT
189
- features.add('vertex-array-object-webgl1');
190
- features.add('instanced-rendering-webgl1');
191
- features.add('multiple-render-targets-webgl1');
192
- features.add('index-uint32-webgl1');
193
- features.add('blend-minmax-webgl1');
194
- features.add('texture-blend-float-webgl1');
195
- // TEXTURES, RENDERBUFFERS
196
- features.add('texture-formats-srgb-webgl1');
197
- // TEXTURES
198
- features.add('texture-formats-depth-webgl1');
199
- features.add('texture-formats-float32-webgl1');
200
- features.add('texture-formats-float16-webgl1');
201
- features.add('texture-filter-linear-float32-webgl');
202
- features.add('texture-filter-linear-float16-webgl');
203
- features.add('texture-filter-anisotropic-webgl');
204
- // FRAMEBUFFERS, TEXTURES AND RENDERBUFFERS
205
- features.add('texture-renderable-rgba32float-webgl');
206
- features.add('texture-renderable-float32-webgl');
207
- features.add('texture-renderable-float16-webgl');
208
- // GLSL extensions
209
- features.add('glsl-frag-data');
210
- features.add('glsl-frag-depth');
211
- features.add('glsl-derivatives');
212
- features.add('glsl-texture-lod');
213
- return features;
214
- }
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
+ static isSupported() {
15
+ return Boolean(typeof navigator !== 'undefined' && navigator.gpu);
16
+ }
17
+ static async create(props) {
18
+ if (!navigator.gpu) {
19
+ throw new Error('WebGPU not available. Open in Chrome Canary and turn on chrome://flags/#enable-unsafe-webgpu');
20
+ }
21
+ log.groupCollapsed(1, 'WebGPUDevice created')();
22
+ const adapter = await navigator.gpu.requestAdapter({
23
+ powerPreference: 'high-performance'
24
+ });
25
+ if (!adapter) {
26
+ throw new Error('Failed to request WebGPU adapter');
27
+ }
28
+ log.probe(1, 'Adapter available')();
29
+ const gpuDevice = await adapter.requestDevice({
30
+ requiredFeatures: adapter.features
31
+ });
32
+ log.probe(1, 'GPUDevice available')();
33
+ if (typeof props.canvas === 'string') {
34
+ await CanvasContext.pageLoaded;
35
+ log.probe(1, 'DOM is loaded')();
36
+ }
37
+ const device = new WebGPUDevice(gpuDevice, adapter, props);
38
+ log.probe(1, 'Device created', device.info)();
39
+ log.table(1, device.info)();
40
+ log.groupEnd(1)();
41
+ return device;
42
+ }
43
+ constructor(device, adapter, props) {
44
+ super({
45
+ ...props,
46
+ id: props.id || uid('webgpu-device')
47
+ });
48
+ _defineProperty(this, "handle", void 0);
49
+ _defineProperty(this, "adapter", void 0);
50
+ _defineProperty(this, "lost", void 0);
51
+ _defineProperty(this, "canvasContext", null);
52
+ _defineProperty(this, "commandEncoder", null);
53
+ _defineProperty(this, "renderPass", null);
54
+ _defineProperty(this, "_info", void 0);
55
+ _defineProperty(this, "_isLost", false);
56
+ _defineProperty(this, "features", void 0);
57
+ this.handle = device;
58
+ this.adapter = adapter;
59
+ this._info = {
60
+ type: 'webgpu',
61
+ vendor: this.adapter.__brand,
62
+ renderer: '',
63
+ version: '',
64
+ gpu: 'unknown',
65
+ shadingLanguages: ['glsl', 'wgsl'],
66
+ shadingLanguageVersions: {
67
+ glsl: '450',
68
+ wgsl: '100'
69
+ },
70
+ vendorMasked: '',
71
+ rendererMasked: ''
72
+ };
73
+ this.lost = new Promise(async resolve => {
74
+ const lostInfo = await this.handle.lost;
75
+ this._isLost = true;
76
+ resolve({
77
+ reason: 'destroyed',
78
+ message: lostInfo.message
79
+ });
80
+ });
81
+ if (props.canvas) {
82
+ this.canvasContext = new WebGPUCanvasContext(this, this.adapter, {
83
+ canvas: props.canvas
84
+ });
85
+ }
86
+ this.features = this._getFeatures();
87
+ }
88
+ destroy() {
89
+ this.handle.destroy();
90
+ }
91
+ get info() {
92
+ return this._info;
93
+ }
94
+ get limits() {
95
+ return this.handle.limits;
96
+ }
97
+ isTextureFormatSupported(format) {
98
+ return !format.includes('webgl');
99
+ }
100
+ isTextureFormatFilterable(format) {
101
+ return this.isTextureFormatSupported(format);
102
+ }
103
+ isTextureFormatRenderable(format) {
104
+ return this.isTextureFormatSupported(format);
105
+ }
106
+ get isLost() {
107
+ return this._isLost;
108
+ }
109
+ _createBuffer(props) {
110
+ return new WebGPUBuffer(this, props);
111
+ }
112
+ _createTexture(props) {
113
+ return new WebGPUTexture(this, props);
114
+ }
115
+ createExternalTexture(props) {
116
+ return new WebGPUExternalTexture(this, props);
117
+ }
118
+ createShader(props) {
119
+ return new WebGPUShader(this, props);
120
+ }
121
+ createSampler(props) {
122
+ return new WebGPUSampler(this, props);
123
+ }
124
+ createRenderPipeline(props) {
125
+ return new WebGPURenderPipeline(this, props);
126
+ }
127
+ createFramebuffer(props) {
128
+ throw new Error('Not implemented');
129
+ }
130
+ createComputePipeline(props) {
131
+ return new WebGPUComputePipeline(this, props);
132
+ }
133
+ beginRenderPass(props) {
134
+ this.commandEncoder = this.commandEncoder || this.handle.createCommandEncoder();
135
+ return new WebGPURenderPass(this, props);
136
+ }
137
+ beginComputePass(props) {
138
+ this.commandEncoder = this.commandEncoder || this.handle.createCommandEncoder();
139
+ return new WebGPUComputePass(this, props);
140
+ }
141
+ createCanvasContext(props) {
142
+ return new WebGPUCanvasContext(this, this.adapter, props);
143
+ }
144
+ getDefaultRenderPass() {
145
+ var _this$canvasContext;
146
+ this.renderPass = this.renderPass || this.beginRenderPass({
147
+ framebuffer: (_this$canvasContext = this.canvasContext) === null || _this$canvasContext === void 0 ? void 0 : _this$canvasContext.getCurrentFramebuffer()
148
+ });
149
+ return this.renderPass;
150
+ }
151
+ submit() {
152
+ var _this$renderPass, _this$commandEncoder;
153
+ (_this$renderPass = this.renderPass) === null || _this$renderPass === void 0 ? void 0 : _this$renderPass.end();
154
+ const commandBuffer = (_this$commandEncoder = this.commandEncoder) === null || _this$commandEncoder === void 0 ? void 0 : _this$commandEncoder.finish();
155
+ if (commandBuffer) {
156
+ this.handle.queue.submit([commandBuffer]);
157
+ }
158
+ this.commandEncoder = null;
159
+ this.renderPass = null;
160
+ }
161
+ _getFeatures() {
162
+ const features = new Set(this.handle.features);
163
+ if (features.has('depth-clamping')) {
164
+ features.delete('depth-clamping');
165
+ features.add('depth-clip-control');
166
+ }
167
+ if (features.has('texture-compression-bc')) {
168
+ features.add('texture-compression-bc5-webgl');
169
+ }
170
+ features.add('webgpu');
171
+ features.add('timer-query-webgl');
172
+ features.add('vertex-array-object-webgl1');
173
+ features.add('instanced-rendering-webgl1');
174
+ features.add('multiple-render-targets-webgl1');
175
+ features.add('index-uint32-webgl1');
176
+ features.add('blend-minmax-webgl1');
177
+ features.add('texture-blend-float-webgl1');
178
+ features.add('texture-formats-srgb-webgl1');
179
+ features.add('texture-formats-depth-webgl1');
180
+ features.add('texture-formats-float32-webgl1');
181
+ features.add('texture-formats-float16-webgl1');
182
+ features.add('texture-filter-linear-float32-webgl');
183
+ features.add('texture-filter-linear-float16-webgl');
184
+ features.add('texture-filter-anisotropic-webgl');
185
+ features.add('texture-renderable-rgba32float-webgl');
186
+ features.add('texture-renderable-float32-webgl');
187
+ features.add('texture-renderable-float16-webgl');
188
+ features.add('glsl-frag-data');
189
+ features.add('glsl-frag-depth');
190
+ features.add('glsl-derivatives');
191
+ features.add('glsl-texture-lod');
192
+ return features;
193
+ }
215
194
  }
216
- WebGPUDevice.type = 'webgpu';
217
- export default WebGPUDevice;
195
+ _defineProperty(WebGPUDevice, "type", 'webgpu');
196
+ //# sourceMappingURL=webgpu-device.js.map
@@ -0,0 +1 @@
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","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","_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"],"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 TextureProps,\n TextureFormat,\n ExternalTextureProps,\n FramebufferProps,\n RenderPipelineProps,\n ComputePipelineProps,\n RenderPassProps,\n ComputePassProps\n} from '@luma.gl/api';\nimport {Device, CanvasContext, log, uid} 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 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 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, 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): 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 =\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"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=webgpu-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu-types.js","names":[],"sources":["../../src/adapter/webgpu-types.ts"],"sourcesContent":[""],"mappings":""}