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

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 (179) hide show
  1. package/dist/adapter/helpers/accessor-to-format.js +100 -1
  2. package/dist/adapter/helpers/convert-texture-format.js +5 -6
  3. package/dist/adapter/helpers/generate-mipmaps.js +88 -92
  4. package/dist/adapter/helpers/get-bind-group.js +54 -48
  5. package/dist/adapter/helpers/get-vertex-buffer-layout.js +97 -84
  6. package/dist/adapter/helpers/webgpu-parameters.d.ts.map +1 -1
  7. package/dist/adapter/helpers/webgpu-parameters.js +181 -129
  8. package/dist/adapter/resources/webgpu-buffer.js +57 -73
  9. package/dist/adapter/resources/webgpu-command-encoder.d.ts.map +1 -1
  10. package/dist/adapter/resources/webgpu-command-encoder.js +47 -63
  11. package/dist/adapter/resources/webgpu-compute-pass.d.ts +1 -1
  12. package/dist/adapter/resources/webgpu-compute-pass.d.ts.map +1 -1
  13. package/dist/adapter/resources/webgpu-compute-pass.js +51 -55
  14. package/dist/adapter/resources/webgpu-compute-pipeline.d.ts.map +1 -1
  15. package/dist/adapter/resources/webgpu-compute-pipeline.js +22 -24
  16. package/dist/adapter/resources/webgpu-external-texture.js +26 -27
  17. package/dist/adapter/resources/webgpu-framebuffer.d.ts.map +1 -1
  18. package/dist/adapter/resources/webgpu-framebuffer.js +89 -103
  19. package/dist/adapter/resources/webgpu-query.js +42 -1
  20. package/dist/adapter/resources/webgpu-render-pass.d.ts +1 -1
  21. package/dist/adapter/resources/webgpu-render-pass.d.ts.map +1 -1
  22. package/dist/adapter/resources/webgpu-render-pass.js +64 -89
  23. package/dist/adapter/resources/webgpu-render-pipeline.d.ts.map +1 -1
  24. package/dist/adapter/resources/webgpu-render-pipeline.js +158 -154
  25. package/dist/adapter/resources/webgpu-sampler.d.ts +1 -1
  26. package/dist/adapter/resources/webgpu-sampler.d.ts.map +1 -1
  27. package/dist/adapter/resources/webgpu-sampler.js +16 -22
  28. package/dist/adapter/resources/webgpu-shader.d.ts +1 -1
  29. package/dist/adapter/resources/webgpu-shader.d.ts.map +1 -1
  30. package/dist/adapter/resources/webgpu-shader.js +47 -58
  31. package/dist/adapter/resources/webgpu-texture.d.ts +0 -1
  32. package/dist/adapter/resources/webgpu-texture.d.ts.map +1 -1
  33. package/dist/adapter/resources/webgpu-texture.js +100 -103
  34. package/dist/adapter/webgpu-canvas-context.d.ts.map +1 -1
  35. package/dist/adapter/webgpu-canvas-context.js +77 -90
  36. package/dist/adapter/webgpu-device.js +215 -242
  37. package/dist/adapter/webgpu-types.js +0 -2
  38. package/dist/bundle.js +1 -2
  39. package/dist/dist.js +8051 -0
  40. package/dist/dist.min.js +1 -0
  41. package/dist/es5/adapter/helpers/accessor-to-format.js +2 -0
  42. package/dist/es5/adapter/helpers/accessor-to-format.js.map +1 -0
  43. package/dist/es5/adapter/helpers/convert-texture-format.js +13 -0
  44. package/dist/es5/adapter/helpers/convert-texture-format.js.map +1 -0
  45. package/dist/es5/adapter/helpers/generate-mipmaps.js +103 -0
  46. package/dist/es5/adapter/helpers/generate-mipmaps.js.map +1 -0
  47. package/dist/es5/adapter/helpers/get-bind-group.js +66 -0
  48. package/dist/es5/adapter/helpers/get-bind-group.js.map +1 -0
  49. package/dist/es5/adapter/helpers/get-vertex-buffer-layout.js +149 -0
  50. package/dist/es5/adapter/helpers/get-vertex-buffer-layout.js.map +1 -0
  51. package/dist/es5/adapter/helpers/webgpu-parameters.js +150 -0
  52. package/dist/es5/adapter/helpers/webgpu-parameters.js.map +1 -0
  53. package/dist/es5/adapter/resources/webgpu-buffer.js +131 -0
  54. package/dist/es5/adapter/resources/webgpu-buffer.js.map +1 -0
  55. package/dist/es5/adapter/resources/webgpu-command-encoder.js +90 -0
  56. package/dist/es5/adapter/resources/webgpu-command-encoder.js.map +1 -0
  57. package/dist/es5/adapter/resources/webgpu-compute-pass.js +85 -0
  58. package/dist/es5/adapter/resources/webgpu-compute-pass.js.map +1 -0
  59. package/dist/es5/adapter/resources/webgpu-compute-pipeline.js +48 -0
  60. package/dist/es5/adapter/resources/webgpu-compute-pipeline.js.map +1 -0
  61. package/dist/es5/adapter/resources/webgpu-external-texture.js +50 -0
  62. package/dist/es5/adapter/resources/webgpu-external-texture.js.map +1 -0
  63. package/dist/es5/adapter/resources/webgpu-framebuffer.js +126 -0
  64. package/dist/es5/adapter/resources/webgpu-framebuffer.js.map +1 -0
  65. package/dist/es5/adapter/resources/webgpu-query.js +2 -0
  66. package/dist/es5/adapter/resources/webgpu-query.js.map +1 -0
  67. package/dist/es5/adapter/resources/webgpu-render-pass.js +124 -0
  68. package/dist/es5/adapter/resources/webgpu-render-pass.js.map +1 -0
  69. package/dist/es5/adapter/resources/webgpu-render-pipeline.js +185 -0
  70. package/dist/es5/adapter/resources/webgpu-render-pipeline.js.map +1 -0
  71. package/dist/es5/adapter/resources/webgpu-sampler.js +45 -0
  72. package/dist/es5/adapter/resources/webgpu-sampler.js.map +1 -0
  73. package/dist/es5/adapter/resources/webgpu-shader.js +125 -0
  74. package/dist/es5/adapter/resources/webgpu-shader.js.map +1 -0
  75. package/dist/es5/adapter/resources/webgpu-texture.js +138 -0
  76. package/dist/es5/adapter/resources/webgpu-texture.js.map +1 -0
  77. package/dist/es5/adapter/webgpu-canvas-context.js +111 -0
  78. package/dist/es5/adapter/webgpu-canvas-context.js.map +1 -0
  79. package/dist/es5/adapter/webgpu-device.js +317 -0
  80. package/dist/es5/adapter/webgpu-device.js.map +1 -0
  81. package/dist/es5/adapter/webgpu-types.js +2 -0
  82. package/dist/es5/adapter/webgpu-types.js.map +1 -0
  83. package/dist/es5/bundle.js +6 -0
  84. package/dist/es5/bundle.js.map +1 -0
  85. package/dist/es5/glsl/glsllang.js +47 -0
  86. package/dist/es5/glsl/glsllang.js.map +1 -0
  87. package/dist/es5/index.js +44 -0
  88. package/dist/es5/index.js.map +1 -0
  89. package/dist/es5/init.js +7 -0
  90. package/dist/es5/init.js.map +1 -0
  91. package/dist/esm/adapter/helpers/accessor-to-format.js +2 -0
  92. package/dist/esm/adapter/helpers/accessor-to-format.js.map +1 -0
  93. package/dist/esm/adapter/helpers/convert-texture-format.js +7 -0
  94. package/dist/esm/adapter/helpers/convert-texture-format.js.map +1 -0
  95. package/dist/esm/adapter/helpers/generate-mipmaps.js +88 -0
  96. package/dist/esm/adapter/helpers/generate-mipmaps.js.map +1 -0
  97. package/dist/esm/adapter/helpers/get-bind-group.js +51 -0
  98. package/dist/esm/adapter/helpers/get-bind-group.js.map +1 -0
  99. package/dist/esm/adapter/helpers/get-vertex-buffer-layout.js +83 -0
  100. package/dist/esm/adapter/helpers/get-vertex-buffer-layout.js.map +1 -0
  101. package/dist/esm/adapter/helpers/webgpu-parameters.js +137 -0
  102. package/dist/esm/adapter/helpers/webgpu-parameters.js.map +1 -0
  103. package/dist/esm/adapter/resources/webgpu-buffer.js +70 -0
  104. package/dist/esm/adapter/resources/webgpu-buffer.js.map +1 -0
  105. package/dist/esm/adapter/resources/webgpu-command-encoder.js +49 -0
  106. package/dist/esm/adapter/resources/webgpu-command-encoder.js.map +1 -0
  107. package/dist/esm/adapter/resources/webgpu-compute-pass.js +44 -0
  108. package/dist/esm/adapter/resources/webgpu-compute-pass.js.map +1 -0
  109. package/dist/esm/adapter/resources/webgpu-compute-pipeline.js +23 -0
  110. package/dist/esm/adapter/resources/webgpu-compute-pipeline.js.map +1 -0
  111. package/dist/esm/adapter/resources/webgpu-external-texture.js +23 -0
  112. package/dist/esm/adapter/resources/webgpu-external-texture.js.map +1 -0
  113. package/dist/esm/adapter/resources/webgpu-framebuffer.js +93 -0
  114. package/dist/esm/adapter/resources/webgpu-framebuffer.js.map +1 -0
  115. package/dist/esm/adapter/resources/webgpu-query.js +2 -0
  116. package/dist/esm/adapter/resources/webgpu-query.js.map +1 -0
  117. package/dist/esm/adapter/resources/webgpu-render-pass.js +79 -0
  118. package/dist/esm/adapter/resources/webgpu-render-pass.js.map +1 -0
  119. package/dist/esm/adapter/resources/webgpu-render-pipeline.js +130 -0
  120. package/dist/esm/adapter/resources/webgpu-render-pipeline.js.map +1 -0
  121. package/dist/esm/adapter/resources/webgpu-sampler.js +20 -0
  122. package/dist/esm/adapter/resources/webgpu-sampler.js.map +1 -0
  123. package/dist/esm/adapter/resources/webgpu-shader.js +50 -0
  124. package/dist/esm/adapter/resources/webgpu-shader.js.map +1 -0
  125. package/dist/esm/adapter/resources/webgpu-texture.js +95 -0
  126. package/dist/esm/adapter/resources/webgpu-texture.js.map +1 -0
  127. package/dist/esm/adapter/webgpu-canvas-context.js +74 -0
  128. package/dist/esm/adapter/webgpu-canvas-context.js.map +1 -0
  129. package/dist/esm/adapter/webgpu-device.js +196 -0
  130. package/dist/esm/adapter/webgpu-device.js.map +1 -0
  131. package/dist/esm/adapter/webgpu-types.js +2 -0
  132. package/dist/esm/adapter/webgpu-types.js.map +1 -0
  133. package/dist/esm/bundle.js +4 -0
  134. package/dist/esm/bundle.js.map +1 -0
  135. package/dist/esm/glsl/glsllang.js +9 -0
  136. package/dist/esm/glsl/glsllang.js.map +1 -0
  137. package/dist/esm/index.js +8 -0
  138. package/dist/esm/index.js.map +1 -0
  139. package/dist/esm/init.js +4 -0
  140. package/dist/esm/init.js.map +1 -0
  141. package/dist/glsl/glsllang.js +9 -7
  142. package/dist/index.js +8 -6
  143. package/dist/init.js +1 -2
  144. package/package.json +8 -8
  145. package/src/adapter/helpers/webgpu-parameters.ts +7 -2
  146. package/src/adapter/resources/webgpu-command-encoder.ts +2 -1
  147. package/src/adapter/resources/webgpu-compute-pass.ts +4 -4
  148. package/src/adapter/resources/webgpu-compute-pipeline.ts +2 -1
  149. package/src/adapter/resources/webgpu-framebuffer.ts +3 -2
  150. package/src/adapter/resources/webgpu-render-pass.ts +2 -2
  151. package/src/adapter/resources/webgpu-render-pipeline.ts +2 -1
  152. package/src/adapter/resources/webgpu-shader.ts +1 -1
  153. package/src/adapter/webgpu-canvas-context.ts +3 -2
  154. package/src/adapter/webgpu-device.ts +2 -2
  155. package/dist/adapter/helpers/accessor-to-format.js.map +0 -1
  156. package/dist/adapter/helpers/convert-texture-format.js.map +0 -1
  157. package/dist/adapter/helpers/generate-mipmaps.js.map +0 -1
  158. package/dist/adapter/helpers/get-bind-group.js.map +0 -1
  159. package/dist/adapter/helpers/get-vertex-buffer-layout.js.map +0 -1
  160. package/dist/adapter/helpers/webgpu-parameters.js.map +0 -1
  161. package/dist/adapter/resources/webgpu-buffer.js.map +0 -1
  162. package/dist/adapter/resources/webgpu-command-encoder.js.map +0 -1
  163. package/dist/adapter/resources/webgpu-compute-pass.js.map +0 -1
  164. package/dist/adapter/resources/webgpu-compute-pipeline.js.map +0 -1
  165. package/dist/adapter/resources/webgpu-external-texture.js.map +0 -1
  166. package/dist/adapter/resources/webgpu-framebuffer.js.map +0 -1
  167. package/dist/adapter/resources/webgpu-query.js.map +0 -1
  168. package/dist/adapter/resources/webgpu-render-pass.js.map +0 -1
  169. package/dist/adapter/resources/webgpu-render-pipeline.js.map +0 -1
  170. package/dist/adapter/resources/webgpu-sampler.js.map +0 -1
  171. package/dist/adapter/resources/webgpu-shader.js.map +0 -1
  172. package/dist/adapter/resources/webgpu-texture.js.map +0 -1
  173. package/dist/adapter/webgpu-canvas-context.js.map +0 -1
  174. package/dist/adapter/webgpu-device.js.map +0 -1
  175. package/dist/adapter/webgpu-types.js.map +0 -1
  176. package/dist/bundle.js.map +0 -1
  177. package/dist/glsl/glsllang.js.map +0 -1
  178. package/dist/index.js.map +0 -1
  179. package/dist/init.js.map +0 -1
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
13
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
14
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
15
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
16
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
+ var _api = require("@luma.gl/api");
18
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
19
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
20
+ function getByteLength(props) {
21
+ var _props$data;
22
+ return props.byteLength || ((_props$data = props.data) === null || _props$data === void 0 ? void 0 : _props$data.byteLength) || 0;
23
+ }
24
+ var WebGPUBuffer = function (_Buffer) {
25
+ (0, _inherits2.default)(WebGPUBuffer, _Buffer);
26
+ var _super = _createSuper(WebGPUBuffer);
27
+ function WebGPUBuffer(device, props) {
28
+ var _this;
29
+ (0, _classCallCheck2.default)(this, WebGPUBuffer);
30
+ _this = _super.call(this, device, props);
31
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
32
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handle", void 0);
33
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "byteLength", void 0);
34
+ _this.device = device;
35
+ _this.byteLength = getByteLength(props);
36
+ var mapBuffer = Boolean(props.data);
37
+ _this.handle = _this.props.handle || _this.device.handle.createBuffer({
38
+ size: _this.byteLength,
39
+ usage: _this.props.usage || GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,
40
+ mappedAtCreation: _this.props.mappedAtCreation || mapBuffer,
41
+ label: _this.props.id
42
+ });
43
+ if (props.data) {
44
+ _this._writeMapped(props.data);
45
+ }
46
+ if (mapBuffer && !props.mappedAtCreation) {
47
+ _this.handle.unmap();
48
+ }
49
+ return _this;
50
+ }
51
+ (0, _createClass2.default)(WebGPUBuffer, [{
52
+ key: "destroy",
53
+ value: function destroy() {
54
+ this.handle.destroy();
55
+ }
56
+ }, {
57
+ key: "write",
58
+ value: function write(data) {
59
+ var byteOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
60
+ this.device.handle.queue.writeBuffer(this.handle, byteOffset, data.buffer, data.byteOffset, data.byteLength);
61
+ }
62
+ }, {
63
+ key: "readAsync",
64
+ value: function () {
65
+ var _readAsync = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee() {
66
+ var byteOffset,
67
+ byteLength,
68
+ tempBuffer,
69
+ commandEncoder,
70
+ arrayBuffer,
71
+ _args = arguments;
72
+ return _regenerator.default.wrap(function _callee$(_context) {
73
+ while (1) switch (_context.prev = _context.next) {
74
+ case 0:
75
+ byteOffset = _args.length > 0 && _args[0] !== undefined ? _args[0] : 0;
76
+ byteLength = _args.length > 1 && _args[1] !== undefined ? _args[1] : this.byteLength;
77
+ tempBuffer = new WebGPUBuffer(this.device, {
78
+ usage: _api.Buffer.MAP_READ | _api.Buffer.COPY_DST,
79
+ byteLength: byteLength
80
+ });
81
+ commandEncoder = this.device.handle.createCommandEncoder();
82
+ commandEncoder.copyBufferToBuffer(this.handle, byteOffset, tempBuffer.handle, 0, byteLength);
83
+ this.device.handle.queue.submit([commandEncoder.finish()]);
84
+ _context.next = 8;
85
+ return tempBuffer.handle.mapAsync(GPUMapMode.READ, byteOffset, byteLength);
86
+ case 8:
87
+ arrayBuffer = tempBuffer.handle.getMappedRange().slice(0);
88
+ tempBuffer.handle.unmap();
89
+ tempBuffer.destroy();
90
+ return _context.abrupt("return", arrayBuffer);
91
+ case 12:
92
+ case "end":
93
+ return _context.stop();
94
+ }
95
+ }, _callee, this);
96
+ }));
97
+ function readAsync() {
98
+ return _readAsync.apply(this, arguments);
99
+ }
100
+ return readAsync;
101
+ }()
102
+ }, {
103
+ key: "_writeMapped",
104
+ value: function _writeMapped(typedArray) {
105
+ var arrayBuffer = this.handle.getMappedRange();
106
+ new typedArray.constructor(arrayBuffer).set(typedArray);
107
+ }
108
+ }, {
109
+ key: "mapAsync",
110
+ value: function mapAsync(mode) {
111
+ var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
112
+ var size = arguments.length > 2 ? arguments[2] : undefined;
113
+ return this.handle.mapAsync(mode, offset, size);
114
+ }
115
+ }, {
116
+ key: "getMappedRange",
117
+ value: function getMappedRange() {
118
+ var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
119
+ var size = arguments.length > 1 ? arguments[1] : undefined;
120
+ return this.handle.getMappedRange(offset, size);
121
+ }
122
+ }, {
123
+ key: "unmap",
124
+ value: function unmap() {
125
+ this.handle.unmap();
126
+ }
127
+ }]);
128
+ return WebGPUBuffer;
129
+ }(_api.Buffer);
130
+ exports.default = WebGPUBuffer;
131
+ //# sourceMappingURL=webgpu-buffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu-buffer.js","names":["_api","require","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","getByteLength","props","_props$data","byteLength","data","WebGPUBuffer","_Buffer","_inherits2","_super","device","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","mapBuffer","handle","createBuffer","size","usage","GPUBufferUsage","VERTEX","COPY_DST","mappedAtCreation","label","id","_writeMapped","unmap","_createClass2","key","value","destroy","write","byteOffset","length","undefined","queue","writeBuffer","buffer","_readAsync","_asyncToGenerator2","_regenerator","mark","_callee","tempBuffer","commandEncoder","arrayBuffer","_args","wrap","_callee$","_context","prev","next","Buffer","MAP_READ","createCommandEncoder","copyBufferToBuffer","submit","finish","mapAsync","GPUMapMode","READ","getMappedRange","slice","abrupt","stop","readAsync","typedArray","set","mode","offset","exports"],"sources":["../../../../src/adapter/resources/webgpu-buffer.ts"],"sourcesContent":["// WEBGPU Buffer implementation\nimport {Buffer, BufferProps} from '@luma.gl/api';\nimport type WebGPUDevice from '../webgpu-device';\n\nfunction getByteLength(props: BufferProps): number {\n return props.byteLength || props.data?.byteLength || 0;\n}\n\nexport default class WebGPUBuffer extends Buffer {\n readonly device: WebGPUDevice;\n readonly handle: GPUBuffer;\n readonly byteLength: number;\n\n constructor(device: WebGPUDevice, props: BufferProps) {\n super(device, props);\n this.device = device;\n\n this.byteLength = getByteLength(props);\n const mapBuffer = Boolean(props.data);\n\n this.handle = this.props.handle || this.device.handle.createBuffer({\n size: this.byteLength,\n // usage defaults to vertex\n usage: this.props.usage || (GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST),\n mappedAtCreation: this.props.mappedAtCreation || mapBuffer,\n label: this.props.id\n });\n\n if (props.data) {\n this._writeMapped(props.data);\n // this.handle.writeAsync({data: props.data, map: false, unmap: false});\n }\n\n if (mapBuffer && !props.mappedAtCreation) {\n this.handle.unmap();\n }\n }\n\n override destroy(): void {\n this.handle.destroy();\n }\n\n // WebGPU provides multiple ways to write a buffer...\n override write(data: ArrayBufferView, byteOffset = 0) {\n this.device.handle.queue.writeBuffer(\n this.handle,\n byteOffset,\n data.buffer,\n data.byteOffset,\n data.byteLength\n );\n }\n\n override async readAsync(byteOffset: number = 0, byteLength: number = this.byteLength): Promise<ArrayBuffer> {\n // We need MAP_READ flag, but only COPY_DST buffers can have MAP_READ flag, so we need to create a temp buffer\n const tempBuffer = new WebGPUBuffer(this.device, {usage: Buffer.MAP_READ | Buffer.COPY_DST, byteLength});\n\n // Now do a GPU-side copy into the temp buffer we can actually read.\n // TODO - we are spinning up an independent command queue here, what does this mean\n const commandEncoder = this.device.handle.createCommandEncoder();\n commandEncoder.copyBufferToBuffer(this.handle, byteOffset, tempBuffer.handle, 0, byteLength);\n this.device.handle.queue.submit([commandEncoder.finish()]);\n\n // Map the temp buffer and read the data.\n await tempBuffer.handle.mapAsync(GPUMapMode.READ, byteOffset, byteLength);\n const arrayBuffer = tempBuffer.handle.getMappedRange().slice(0);\n tempBuffer.handle.unmap();\n tempBuffer.destroy();\n\n return arrayBuffer;\n }\n\n _writeMapped<TypedArray>(typedArray: TypedArray): void {\n const arrayBuffer = this.handle.getMappedRange();\n // @ts-expect-error\n new typedArray.constructor(arrayBuffer).set(typedArray);\n }\n\n // WEBGPU API\n\n mapAsync(mode: number, offset: number = 0, size?: number): Promise<void> {\n return this.handle.mapAsync(mode, offset, size);\n }\n\n getMappedRange(offset: number = 0, size?: number): ArrayBuffer {\n return this.handle.getMappedRange(offset, size);\n }\n\n unmap(): void {\n this.handle.unmap();\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
11
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
12
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+ var _api = require("@luma.gl/api");
16
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
17
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
18
+ var WebGPUCommandEncoder = function (_CommandEncoder) {
19
+ (0, _inherits2.default)(WebGPUCommandEncoder, _CommandEncoder);
20
+ var _super = _createSuper(WebGPUCommandEncoder);
21
+ function WebGPUCommandEncoder(device, props) {
22
+ var _this;
23
+ (0, _classCallCheck2.default)(this, WebGPUCommandEncoder);
24
+ _this = _super.call(this, props);
25
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
26
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handle", void 0);
27
+ _this.device = device;
28
+ _this.handle = props.handle || _this.device.handle.createCommandEncoder({});
29
+ _this.handle.label = _this.props.id;
30
+ return _this;
31
+ }
32
+ (0, _createClass2.default)(WebGPUCommandEncoder, [{
33
+ key: "destroy",
34
+ value: function destroy() {}
35
+ }, {
36
+ key: "finish",
37
+ value: function finish(options) {
38
+ return this.finish(options);
39
+ }
40
+ }, {
41
+ key: "copyBufferToBuffer",
42
+ value: function copyBufferToBuffer(options) {
43
+ var _options$sourceOffset, _options$destinationO, _options$size;
44
+ this.handle.copyBufferToBuffer((0, _api.cast)(options.source).handle, (_options$sourceOffset = options.sourceOffset) !== null && _options$sourceOffset !== void 0 ? _options$sourceOffset : 0, (0, _api.cast)(options.destination).handle, (_options$destinationO = options.destinationOffset) !== null && _options$destinationO !== void 0 ? _options$destinationO : 0, (_options$size = options.size) !== null && _options$size !== void 0 ? _options$size : 0);
45
+ }
46
+ }, {
47
+ key: "copyBufferToTexture",
48
+ value: function copyBufferToTexture(options) {
49
+ var _options$offset, _options$mipLevel, _options$origin;
50
+ this.handle.copyBufferToTexture({
51
+ buffer: (0, _api.cast)(options.source).handle,
52
+ offset: (_options$offset = options.offset) !== null && _options$offset !== void 0 ? _options$offset : 0,
53
+ bytesPerRow: options.bytesPerRow,
54
+ rowsPerImage: options.rowsPerImage
55
+ }, {
56
+ texture: (0, _api.cast)(options.destination).handle,
57
+ mipLevel: (_options$mipLevel = options.mipLevel) !== null && _options$mipLevel !== void 0 ? _options$mipLevel : 0,
58
+ origin: (_options$origin = options.origin) !== null && _options$origin !== void 0 ? _options$origin : {}
59
+ }, {
60
+ width: options.extent[0],
61
+ height: options.extent[1],
62
+ depthOrArrayLayers: options.extent[2]
63
+ });
64
+ }
65
+ }, {
66
+ key: "copyTextureToBuffer",
67
+ value: function copyTextureToBuffer(options) {}
68
+ }, {
69
+ key: "copyTextureToTexture",
70
+ value: function copyTextureToTexture(options) {}
71
+ }, {
72
+ key: "pushDebugGroup",
73
+ value: function pushDebugGroup(groupLabel) {
74
+ this.handle.pushDebugGroup(groupLabel);
75
+ }
76
+ }, {
77
+ key: "popDebugGroup",
78
+ value: function popDebugGroup() {
79
+ this.handle.popDebugGroup();
80
+ }
81
+ }, {
82
+ key: "insertDebugMarker",
83
+ value: function insertDebugMarker(markerLabel) {
84
+ this.handle.insertDebugMarker(markerLabel);
85
+ }
86
+ }]);
87
+ return WebGPUCommandEncoder;
88
+ }(_api.CommandEncoder);
89
+ exports.default = WebGPUCommandEncoder;
90
+ //# sourceMappingURL=webgpu-command-encoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu-command-encoder.js","names":["_api","require","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","WebGPUCommandEncoder","_CommandEncoder","_inherits2","_super","device","props","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","handle","createCommandEncoder","label","id","_createClass2","key","value","destroy","finish","options","copyBufferToBuffer","_options$sourceOffset","_options$destinationO","_options$size","cast","source","sourceOffset","destination","destinationOffset","size","copyBufferToTexture","_options$offset","_options$mipLevel","_options$origin","buffer","offset","bytesPerRow","rowsPerImage","texture","mipLevel","origin","width","extent","height","depthOrArrayLayers","copyTextureToBuffer","copyTextureToTexture","pushDebugGroup","groupLabel","popDebugGroup","insertDebugMarker","markerLabel","CommandEncoder","exports"],"sources":["../../../../src/adapter/resources/webgpu-command-encoder.ts"],"sourcesContent":["import {CommandEncoder, CommandEncoderProps, Buffer, Texture, cast} from '@luma.gl/api';\nimport WebGPUDevice from '../webgpu-device';\nimport WEBGPUBuffer from './webgpu-buffer';\nimport WebGPUTexture from './webgpu-texture';\n\nexport default class WebGPUCommandEncoder extends CommandEncoder {\n readonly device: WebGPUDevice;\n readonly handle: GPUCommandEncoder;\n\n constructor(device: WebGPUDevice, props: CommandEncoderProps) {\n super(props);\n this.device = device;\n this.handle = props.handle || this.device.handle.createCommandEncoder({\n // TODO was this removed in standard?\n // measureExecutionTime: this.props.measureExecutionTime\n });\n this.handle.label = this.props.id;\n }\n\n override destroy(): void {}\n\n finish(options?: {id?: string}): GPUCommandBuffer {\n return this.finish(options);\n }\n\n // beginRenderPass(GPURenderPassDescriptor descriptor): GPURenderPassEncoder;\n // beginComputePass(optional GPUComputePassDescriptor descriptor = {}): GPUComputePassEncoder;\n\n copyBufferToBuffer(options: {\n source: Buffer,\n sourceOffset?: number,\n destination: Buffer,\n destinationOffset?: number,\n size?: number\n }): void {\n this.handle.copyBufferToBuffer(\n cast<WEBGPUBuffer>(options.source).handle,\n options.sourceOffset ?? 0,\n cast<WEBGPUBuffer>(options.destination).handle,\n options.destinationOffset ?? 0,\n options.size ?? 0\n );\n }\n\n copyBufferToTexture(options: {\n source: Buffer,\n offset?: number,\n bytesPerRow: number,\n rowsPerImage: number,\n\n destination: Texture,\n mipLevel?: number;\n aspect?: 'all' | 'stencil-only' | 'depth-only',\n\n origin?: number[] | [number, number, number],\n extent?: number[] | [number, number, number]\n }): void {\n this.handle.copyBufferToTexture(\n {\n buffer: cast<WEBGPUBuffer>(options.source).handle,\n offset: options.offset ?? 0,\n bytesPerRow: options.bytesPerRow,\n rowsPerImage: options.rowsPerImage,\n },\n {\n texture: cast<WebGPUTexture>(options.destination).handle,\n mipLevel: options.mipLevel ?? 0,\n origin: options.origin ?? {},\n // aspect: options.aspect\n },\n {\n // TODO exclamation mark hack\n width: options.extent![0],\n height: options.extent![1],\n depthOrArrayLayers: options.extent![2]\n }\n );\n }\n\n copyTextureToBuffer(options: {\n source: GPUImageCopyTexture,\n destination: GPUImageCopyBuffer,\n copySize: GPUExtent3D\n }): void {}\n\n copyTextureToTexture(options: {\n source: GPUImageCopyTexture ,\n destination: GPUImageCopyTexture,\n copySize: GPUExtent3D\n }): void {}\n\n override pushDebugGroup(groupLabel: string): void {\n this.handle.pushDebugGroup(groupLabel);\n }\n\n override popDebugGroup(): void {\n this.handle.popDebugGroup();\n }\n\n override insertDebugMarker(markerLabel: string): void {\n this.handle.insertDebugMarker(markerLabel);\n }\n\n // writeTimestamp(querySet: Query, queryIndex: number): void {}\n\n // resolveQuerySet(options: {\n // querySet: GPUQuerySet,\n // firstQuery: number,\n // queryCount: number,\n // destination: Buffer,\n // destinationOffset?: number;\n // }): void;\n}"],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
11
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
12
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+ var _api = require("@luma.gl/api");
16
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
17
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
18
+ var WebGPUComputePass = function (_ComputePass) {
19
+ (0, _inherits2.default)(WebGPUComputePass, _ComputePass);
20
+ var _super = _createSuper(WebGPUComputePass);
21
+ function WebGPUComputePass(device, props) {
22
+ var _device$commandEncode;
23
+ var _this;
24
+ (0, _classCallCheck2.default)(this, WebGPUComputePass);
25
+ _this = _super.call(this, device, props);
26
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
27
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handle", void 0);
28
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_bindGroupLayout", null);
29
+ _this.device = device;
30
+ _this.handle = _this.props.handle || ((_device$commandEncode = device.commandEncoder) === null || _device$commandEncode === void 0 ? void 0 : _device$commandEncode.beginComputePass({
31
+ label: _this.props.id
32
+ }));
33
+ return _this;
34
+ }
35
+ (0, _createClass2.default)(WebGPUComputePass, [{
36
+ key: "destroy",
37
+ value: function destroy() {}
38
+ }, {
39
+ key: "end",
40
+ value: function end() {
41
+ this.handle.end();
42
+ }
43
+ }, {
44
+ key: "setPipeline",
45
+ value: function setPipeline(pipeline) {
46
+ var wgpuPipeline = (0, _api.cast)(pipeline);
47
+ this.handle.setPipeline(wgpuPipeline.handle);
48
+ this._bindGroupLayout = wgpuPipeline._getBindGroupLayout();
49
+ }
50
+ }, {
51
+ key: "setBindings",
52
+ value: function setBindings(bindings) {
53
+ throw new Error('fix me');
54
+ }
55
+ }, {
56
+ key: "dispatch",
57
+ value: function dispatch(x, y, z) {
58
+ this.handle.dispatchWorkgroups(x, y, z);
59
+ }
60
+ }, {
61
+ key: "dispatchIndirect",
62
+ value: function dispatchIndirect(indirectBuffer) {
63
+ var indirectOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
64
+ this.handle.dispatchWorkgroupsIndirect((0, _api.cast)(indirectBuffer).handle, indirectOffset);
65
+ }
66
+ }, {
67
+ key: "pushDebugGroup",
68
+ value: function pushDebugGroup(groupLabel) {
69
+ this.handle.pushDebugGroup(groupLabel);
70
+ }
71
+ }, {
72
+ key: "popDebugGroup",
73
+ value: function popDebugGroup() {
74
+ this.handle.popDebugGroup();
75
+ }
76
+ }, {
77
+ key: "insertDebugMarker",
78
+ value: function insertDebugMarker(markerLabel) {
79
+ this.handle.insertDebugMarker(markerLabel);
80
+ }
81
+ }]);
82
+ return WebGPUComputePass;
83
+ }(_api.ComputePass);
84
+ exports.default = WebGPUComputePass;
85
+ //# sourceMappingURL=webgpu-compute-pass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu-compute-pass.js","names":["_api","require","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","WebGPUComputePass","_ComputePass","_inherits2","_super","device","props","_device$commandEncode","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","handle","commandEncoder","beginComputePass","label","id","_createClass2","key","value","destroy","end","setPipeline","pipeline","wgpuPipeline","cast","_bindGroupLayout","_getBindGroupLayout","setBindings","bindings","Error","dispatch","x","y","z","dispatchWorkgroups","dispatchIndirect","indirectBuffer","indirectOffset","length","undefined","dispatchWorkgroupsIndirect","pushDebugGroup","groupLabel","popDebugGroup","insertDebugMarker","markerLabel","ComputePass","exports"],"sources":["../../../../src/adapter/resources/webgpu-compute-pass.ts"],"sourcesContent":["import {ComputePass, ComputePassProps, ComputePipeline, Buffer, Binding, cast} from '@luma.gl/api';\nimport WebGPUDevice from '../webgpu-device';\nimport WebGPUBuffer from './webgpu-buffer';\n// import WebGPUCommandEncoder from './webgpu-command-encoder';\nimport WebGPUComputePipeline from './webgpu-compute-pipeline';\n\nexport default class WebGPUComputePass extends ComputePass {\n readonly device: WebGPUDevice;\n readonly handle: GPUComputePassEncoder;\n _bindGroupLayout: GPUBindGroupLayout | null = null;\n\n constructor(device: WebGPUDevice, props: ComputePassProps) {\n super(device, props);\n this.device = device;\n\n this.handle = this.props.handle || device.commandEncoder?.beginComputePass({\n label: this.props.id,\n // timestampWrites?: GPUComputePassTimestampWrites;\n });\n }\n\n /** @note no WebGPU destroy method, just gc */\n override destroy(): void {}\n\n end(): void {\n this.handle.end();\n }\n\n setPipeline(pipeline: ComputePipeline): void {\n const wgpuPipeline = cast<WebGPUComputePipeline>(pipeline);\n this.handle.setPipeline(wgpuPipeline.handle);\n this._bindGroupLayout = wgpuPipeline._getBindGroupLayout();\n }\n\n /** Sets an array of bindings (uniform buffers, samplers, textures, ...) */\n setBindings(bindings: Binding[]): void {\n throw new Error('fix me');\n // const bindGroup = getBindGroup(this.device.handle, this._bindGroupLayout, this.props.bindings);\n // this.handle.setBindGroup(0, bindGroup);\n }\n\n /**\n * Dispatch work to be performed with the current ComputePipeline.\n * @param x X dimension of the grid of workgroups to dispatch.\n * @param y Y dimension of the grid of workgroups to dispatch.\n * @param z Z dimension of the grid of workgroups to dispatch.\n */\n dispatch(x: number, y?: number, z?: number): void {\n this.handle.dispatchWorkgroups(x, y, z);\n }\n\n /**\n * Dispatch work to be performed with the current ComputePipeline.\n * @param indirectBuffer buffer must be a tightly packed block of three 32-bit unsigned integer values (12 bytes total), given in the same order as the arguments for dispatch()\n * @param indirectOffset\n */\n dispatchIndirect(indirectBuffer: Buffer, indirectOffset: number = 0): void {\n this.handle.dispatchWorkgroupsIndirect(cast<WebGPUBuffer>(indirectBuffer).handle, indirectOffset);\n }\n\n pushDebugGroup(groupLabel: string): void {\n this.handle.pushDebugGroup(groupLabel);\n }\n popDebugGroup(): void {\n this.handle.popDebugGroup();\n }\n insertDebugMarker(markerLabel: string): void {\n this.handle.insertDebugMarker(markerLabel);\n }\n\n // writeTimestamp(querySet: GPUQuerySet, queryIndex: number): void;\n // beginPipelineStatisticsQuery(querySet: GPUQuerySet, queryIndex: number): void;\n // endPipelineStatisticsQuery(querySet: GPUQuerySet, queryIndex: number): void;\n}\n"],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
11
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
12
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+ var _api = require("@luma.gl/api");
16
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
17
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
18
+ var WebGPUComputePipeline = function (_ComputePipeline) {
19
+ (0, _inherits2.default)(WebGPUComputePipeline, _ComputePipeline);
20
+ var _super = _createSuper(WebGPUComputePipeline);
21
+ function WebGPUComputePipeline(device, props) {
22
+ var _this;
23
+ (0, _classCallCheck2.default)(this, WebGPUComputePipeline);
24
+ _this = _super.call(this, device, props);
25
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
26
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handle", void 0);
27
+ _this.device = device;
28
+ var module = (0, _api.cast)(_this.props.cs).handle;
29
+ _this.handle = _this.props.handle || _this.device.handle.createComputePipeline({
30
+ label: _this.props.id,
31
+ compute: {
32
+ module: module,
33
+ entryPoint: _this.props.csEntryPoint
34
+ },
35
+ layout: 'auto'
36
+ });
37
+ return _this;
38
+ }
39
+ (0, _createClass2.default)(WebGPUComputePipeline, [{
40
+ key: "_getBindGroupLayout",
41
+ value: function _getBindGroupLayout() {
42
+ return this.handle.getBindGroupLayout(0);
43
+ }
44
+ }]);
45
+ return WebGPUComputePipeline;
46
+ }(_api.ComputePipeline);
47
+ exports.default = WebGPUComputePipeline;
48
+ //# sourceMappingURL=webgpu-compute-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu-compute-pipeline.js","names":["_api","require","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","WebGPUComputePipeline","_ComputePipeline","_inherits2","_super","device","props","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","module","cast","cs","handle","createComputePipeline","label","id","compute","entryPoint","csEntryPoint","layout","_createClass2","key","value","_getBindGroupLayout","getBindGroupLayout","ComputePipeline","exports"],"sources":["../../../../src/adapter/resources/webgpu-compute-pipeline.ts"],"sourcesContent":["// prettier-ignore\nimport {ComputePipeline, ComputePipelineProps, cast} from '@luma.gl/api';\n\nimport WebGPUDevice from '../webgpu-device';\nimport WebGPUShader from './webgpu-shader';\n\n// COMPUTE PIPELINE\n\n/** Creates a new compute pipeline when parameters change */\nexport default class WebGPUComputePipeline extends ComputePipeline {\n device: WebGPUDevice;\n handle: GPUComputePipeline;\n\n constructor(device: WebGPUDevice, props: ComputePipelineProps) {\n super(device, props);\n this.device = device;\n\n const module = cast<WebGPUShader>(this.props.cs).handle;\n this.handle = this.props.handle || this.device.handle.createComputePipeline({\n label: this.props.id,\n compute: {\n module,\n entryPoint: this.props.csEntryPoint,\n // constants: this.props.csConstants\n },\n layout: 'auto'\n });\n }\n\n /** For internal use in render passes */\n _getBindGroupLayout() {\n // TODO: Cache?\n return this.handle.getBindGroupLayout(0);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AACA,IAAAA,IAAA,GAAAC,OAAA;AAAyE,SAAAC,aAAAC,OAAA,QAAAC,yBAAA,GAAAC,yBAAA,oBAAAC,qBAAA,QAAAC,KAAA,OAAAC,gBAAA,CAAAC,OAAA,EAAAN,OAAA,GAAAO,MAAA,MAAAN,yBAAA,QAAAO,SAAA,OAAAH,gBAAA,CAAAC,OAAA,QAAAG,WAAA,EAAAF,MAAA,GAAAG,OAAA,CAAAC,SAAA,CAAAP,KAAA,EAAAQ,SAAA,EAAAJ,SAAA,YAAAD,MAAA,GAAAH,KAAA,CAAAS,KAAA,OAAAD,SAAA,gBAAAE,2BAAA,CAAAR,OAAA,QAAAC,MAAA;AAAA,SAAAL,0BAAA,eAAAQ,OAAA,qBAAAA,OAAA,CAAAC,SAAA,oBAAAD,OAAA,CAAAC,SAAA,CAAAI,IAAA,2BAAAC,KAAA,oCAAAC,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAV,OAAA,CAAAC,SAAA,CAAAM,OAAA,8CAAAI,CAAA;AAAA,IAQpDC,qBAAqB,aAAAC,gBAAA;EAAA,IAAAC,UAAA,CAAAlB,OAAA,EAAAgB,qBAAA,EAAAC,gBAAA;EAAA,IAAAE,MAAA,GAAA1B,YAAA,CAAAuB,qBAAA;EAIxC,SAAAA,sBAAYI,MAAoB,EAAEC,KAA2B,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAAvB,OAAA,QAAAgB,qBAAA;IAC7DM,KAAA,GAAAH,MAAA,CAAAL,IAAA,OAAMM,MAAM,EAAEC,KAAK;IAAE,IAAAG,gBAAA,CAAAxB,OAAA,MAAAyB,uBAAA,CAAAzB,OAAA,EAAAsB,KAAA;IAAA,IAAAE,gBAAA,CAAAxB,OAAA,MAAAyB,uBAAA,CAAAzB,OAAA,EAAAsB,KAAA;IACrBA,KAAA,CAAKF,MAAM,GAAGA,MAAM;IAEpB,IAAMM,MAAM,GAAG,IAAAC,SAAI,EAAeL,KAAA,CAAKD,KAAK,CAACO,EAAE,CAAC,CAACC,MAAM;IACvDP,KAAA,CAAKO,MAAM,GAAGP,KAAA,CAAKD,KAAK,CAACQ,MAAM,IAAIP,KAAA,CAAKF,MAAM,CAACS,MAAM,CAACC,qBAAqB,CAAC;MAC1EC,KAAK,EAAET,KAAA,CAAKD,KAAK,CAACW,EAAE;MACpBC,OAAO,EAAE;QACPP,MAAM,EAANA,MAAM;QACNQ,UAAU,EAAEZ,KAAA,CAAKD,KAAK,CAACc;MAEzB,CAAC;MACDC,MAAM,EAAE;IACV,CAAC,CAAC;IAAC,OAAAd,KAAA;EACL;EAAC,IAAAe,aAAA,CAAArC,OAAA,EAAAgB,qBAAA;IAAAsB,GAAA;IAAAC,KAAA,EAGD,SAAAC,oBAAA,EAAsB;MAEpB,OAAO,IAAI,CAACX,MAAM,CAACY,kBAAkB,CAAC,CAAC,CAAC;IAC1C;EAAC;EAAA,OAAAzB,qBAAA;AAAA,EAxBgD0B,oBAAe;AAAAC,OAAA,CAAA3C,OAAA,GAAAgB,qBAAA"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
11
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
12
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+ var _api = require("@luma.gl/api");
16
+ var _webgpuSampler = _interopRequireDefault(require("./webgpu-sampler"));
17
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
18
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
19
+ var WebGPUExternalTexture = function (_ExternalTexture) {
20
+ (0, _inherits2.default)(WebGPUExternalTexture, _ExternalTexture);
21
+ var _super = _createSuper(WebGPUExternalTexture);
22
+ function WebGPUExternalTexture(device, props) {
23
+ var _this;
24
+ (0, _classCallCheck2.default)(this, WebGPUExternalTexture);
25
+ _this = _super.call(this, device, props);
26
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
27
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handle", void 0);
28
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "sampler", void 0);
29
+ _this.device = device;
30
+ _this.handle = _this.props.handle || _this.device.handle.importExternalTexture({
31
+ source: props.source,
32
+ colorSpace: props.colorSpace
33
+ });
34
+ _this.sampler = null;
35
+ return _this;
36
+ }
37
+ (0, _createClass2.default)(WebGPUExternalTexture, [{
38
+ key: "destroy",
39
+ value: function destroy() {}
40
+ }, {
41
+ key: "setSampler",
42
+ value: function setSampler(sampler) {
43
+ this.sampler = sampler instanceof _webgpuSampler.default ? sampler : new _webgpuSampler.default(this.device, sampler);
44
+ return this;
45
+ }
46
+ }]);
47
+ return WebGPUExternalTexture;
48
+ }(_api.ExternalTexture);
49
+ exports.default = WebGPUExternalTexture;
50
+ //# sourceMappingURL=webgpu-external-texture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webgpu-external-texture.js","names":["_api","require","_webgpuSampler","_interopRequireDefault","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","WebGPUExternalTexture","_ExternalTexture","_inherits2","_super","device","props","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","handle","importExternalTexture","source","colorSpace","sampler","_createClass2","key","value","destroy","setSampler","WebGPUSampler","ExternalTexture","exports"],"sources":["../../../../src/adapter/resources/webgpu-external-texture.ts"],"sourcesContent":["// luma.gl, MIT license\nimport {ExternalTexture, ExternalTextureProps, Sampler, SamplerProps} from '@luma.gl/api';\nimport type WebGPUDevice from '../webgpu-device';\nimport WebGPUSampler from './webgpu-sampler';\n\n/**\n * Cheap, temporary texture view for videos\n * Only valid within same callback, destroyed automatically as a microtask.\n */\nexport default class WebGPUExternalTexture extends ExternalTexture {\n readonly device: WebGPUDevice;\n readonly handle: GPUExternalTexture;\n sampler: WebGPUSampler;\n\n constructor(device: WebGPUDevice, props: ExternalTextureProps) {\n super(device, props);\n this.device = device;\n this.handle = this.props.handle || this.device.handle.importExternalTexture({\n source: props.source,\n colorSpace: props.colorSpace\n });\n this.sampler = null;\n }\n\n override destroy(): void {\n // External textures are destroyed automatically,\n // as a microtask, instead of manually or upon garbage collection like other resources.\n // this.handle.destroy();\n }\n\n /** Set default sampler */\n setSampler(sampler: Sampler | SamplerProps): this {\n // We can accept a sampler instance or set of props;\n this.sampler = sampler instanceof WebGPUSampler ? sampler : new WebGPUSampler(this.device, sampler);\n return this;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AACA,IAAAA,IAAA,GAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA6C,SAAAG,aAAAC,OAAA,QAAAC,yBAAA,GAAAC,yBAAA,oBAAAC,qBAAA,QAAAC,KAAA,OAAAC,gBAAA,CAAAC,OAAA,EAAAN,OAAA,GAAAO,MAAA,MAAAN,yBAAA,QAAAO,SAAA,OAAAH,gBAAA,CAAAC,OAAA,QAAAG,WAAA,EAAAF,MAAA,GAAAG,OAAA,CAAAC,SAAA,CAAAP,KAAA,EAAAQ,SAAA,EAAAJ,SAAA,YAAAD,MAAA,GAAAH,KAAA,CAAAS,KAAA,OAAAD,SAAA,gBAAAE,2BAAA,CAAAR,OAAA,QAAAC,MAAA;AAAA,SAAAL,0BAAA,eAAAQ,OAAA,qBAAAA,OAAA,CAAAC,SAAA,oBAAAD,OAAA,CAAAC,SAAA,CAAAI,IAAA,2BAAAC,KAAA,oCAAAC,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAV,OAAA,CAAAC,SAAA,CAAAM,OAAA,8CAAAI,CAAA;AAAA,IAMxBC,qBAAqB,aAAAC,gBAAA;EAAA,IAAAC,UAAA,CAAAlB,OAAA,EAAAgB,qBAAA,EAAAC,gBAAA;EAAA,IAAAE,MAAA,GAAA1B,YAAA,CAAAuB,qBAAA;EAKxC,SAAAA,sBAAYI,MAAoB,EAAEC,KAA2B,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAAvB,OAAA,QAAAgB,qBAAA;IAC7DM,KAAA,GAAAH,MAAA,CAAAL,IAAA,OAAMM,MAAM,EAAEC,KAAK;IAAE,IAAAG,gBAAA,CAAAxB,OAAA,MAAAyB,uBAAA,CAAAzB,OAAA,EAAAsB,KAAA;IAAA,IAAAE,gBAAA,CAAAxB,OAAA,MAAAyB,uBAAA,CAAAzB,OAAA,EAAAsB,KAAA;IAAA,IAAAE,gBAAA,CAAAxB,OAAA,MAAAyB,uBAAA,CAAAzB,OAAA,EAAAsB,KAAA;IACrBA,KAAA,CAAKF,MAAM,GAAGA,MAAM;IACpBE,KAAA,CAAKI,MAAM,GAAGJ,KAAA,CAAKD,KAAK,CAACK,MAAM,IAAIJ,KAAA,CAAKF,MAAM,CAACM,MAAM,CAACC,qBAAqB,CAAC;MAC1EC,MAAM,EAAEP,KAAK,CAACO,MAAM;MACpBC,UAAU,EAAER,KAAK,CAACQ;IACpB,CAAC,CAAC;IACFP,KAAA,CAAKQ,OAAO,GAAG,IAAI;IAAC,OAAAR,KAAA;EACtB;EAAC,IAAAS,aAAA,CAAA/B,OAAA,EAAAgB,qBAAA;IAAAgB,GAAA;IAAAC,KAAA,EAED,SAAAC,QAAA,EAAyB,CAIzB;EAAC;IAAAF,GAAA;IAAAC,KAAA,EAGD,SAAAE,WAAWL,OAA+B,EAAQ;MAEhD,IAAI,CAACA,OAAO,GAAGA,OAAO,YAAYM,sBAAa,GAAGN,OAAO,GAAG,IAAIM,sBAAa,CAAC,IAAI,CAAChB,MAAM,EAAEU,OAAO,CAAC;MACnG,OAAO,IAAI;IACb;EAAC;EAAA,OAAAd,qBAAA;AAAA,EA1BgDqB,oBAAe;AAAAC,OAAA,CAAAtC,OAAA,GAAAgB,qBAAA"}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
11
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
12
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
13
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+ var _api = require("@luma.gl/api");
16
+ var _webgpuTexture = _interopRequireDefault(require("./webgpu-texture"));
17
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
18
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
20
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
21
+ var WebGPUFramebuffer = function (_Framebuffer) {
22
+ (0, _inherits2.default)(WebGPUFramebuffer, _Framebuffer);
23
+ var _super = _createSuper(WebGPUFramebuffer);
24
+ function WebGPUFramebuffer(device, props) {
25
+ var _this;
26
+ (0, _classCallCheck2.default)(this, WebGPUFramebuffer);
27
+ _this = _super.call(this, device, props);
28
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "device", void 0);
29
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "colorAttachments", []);
30
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "depthStencilAttachment", null);
31
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderPassDescriptor", {
32
+ colorAttachments: []
33
+ });
34
+ _this.device = device;
35
+ if (props.depthStencilAttachment) {
36
+ _this.depthStencilAttachment = _this.createDepthStencilTexture(props);
37
+ }
38
+ if (props.colorAttachments) {
39
+ _this.colorAttachments = props.colorAttachments.map(function (colorAttachment) {
40
+ return _this.createColorTexture(_this.props, colorAttachment);
41
+ });
42
+ }
43
+ if (_this.depthStencilAttachment) {
44
+ _this.renderPassDescriptor.depthStencilAttachment = {
45
+ view: _this.depthStencilAttachment.handle.createView(),
46
+ depthClearValue: 1.0,
47
+ depthStoreOp: 'store',
48
+ stencilClearValue: 0,
49
+ stencilStoreOp: 'store'
50
+ };
51
+ }
52
+ if (_this.colorAttachments.length > 0) {
53
+ _this.renderPassDescriptor.colorAttachments = _this.colorAttachments.map(function (colorAttachment) {
54
+ return {
55
+ view: colorAttachment.handle.createView(),
56
+ loadOp: 'clear',
57
+ loadValue: [0.0, 0.0, 0.0, 0.0],
58
+ storeOp: 'store'
59
+ };
60
+ });
61
+ }
62
+ return _this;
63
+ }
64
+ (0, _createClass2.default)(WebGPUFramebuffer, [{
65
+ key: "createDepthStencilTexture",
66
+ value: function createDepthStencilTexture(props) {
67
+ if (props.depthStencilAttachment instanceof _webgpuTexture.default) {
68
+ return props.depthStencilAttachment;
69
+ }
70
+ if (typeof props.depthStencilAttachment === 'string') {
71
+ return this.device._createTexture({
72
+ id: 'depth-stencil-attachment',
73
+ format: props.depthStencilAttachment,
74
+ width: props.width,
75
+ height: props.height,
76
+ usage: _api.Texture.RENDER_ATTACHMENT
77
+ });
78
+ }
79
+ throw new Error('type');
80
+ }
81
+ }, {
82
+ key: "createColorTexture",
83
+ value: function createColorTexture(props, texture) {
84
+ if (texture instanceof _webgpuTexture.default) {
85
+ return texture;
86
+ }
87
+ if (typeof texture === 'string') {
88
+ return this.device._createTexture({
89
+ id: 'color-attachment',
90
+ format: texture,
91
+ width: props.width,
92
+ height: props.height,
93
+ usage: _api.Texture.RENDER_ATTACHMENT
94
+ });
95
+ }
96
+ throw new Error('type');
97
+ }
98
+ }, {
99
+ key: "_resizeAttachments",
100
+ value: function _resizeAttachments(width, height) {
101
+ for (var i = 0; i < this.colorAttachments.length; ++i) {
102
+ if (this.colorAttachments[i]) {
103
+ var resizedTexture = this.device._createTexture(_objectSpread(_objectSpread({}, this.colorAttachments[i].props), {}, {
104
+ width: width,
105
+ height: height
106
+ }));
107
+ this.colorAttachments[i].destroy();
108
+ this.colorAttachments[i] = resizedTexture;
109
+ this.renderPassDescriptor.colorAttachments[i].view = resizedTexture.handle.createView();
110
+ }
111
+ }
112
+ if (this.depthStencilAttachment) {
113
+ var _resizedTexture = this.device._createTexture(_objectSpread(_objectSpread({}, this.depthStencilAttachment.props), {}, {
114
+ width: width,
115
+ height: height
116
+ }));
117
+ this.depthStencilAttachment.destroy();
118
+ this.depthStencilAttachment = _resizedTexture;
119
+ this.renderPassDescriptor.depthStencilAttachment.view = _resizedTexture.handle.createView();
120
+ }
121
+ }
122
+ }]);
123
+ return WebGPUFramebuffer;
124
+ }(_api.Framebuffer);
125
+ exports.default = WebGPUFramebuffer;
126
+ //# sourceMappingURL=webgpu-framebuffer.js.map