1 | import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
2 | import _createClass from "@babel/runtime/helpers/createClass";
|
3 | import { isSafari } from '@antv/g-webgpu-core';
|
4 | import * as WebGPUConstants from '@webgpu/types/dist/constants';
|
5 |
|
6 | var WebGPUBuffer = function () {
|
7 | function WebGPUBuffer(engine, options) {
|
8 | _classCallCheck(this, WebGPUBuffer);
|
9 |
|
10 | this.engine = engine;
|
11 | this.options = options;
|
12 | this.buffer = void 0;
|
13 | var _options = options,
|
14 | data = _options.data,
|
15 | usage = _options.usage,
|
16 | type = _options.type;
|
17 | this.buffer = this.createBuffer(data instanceof Array ? new Float32Array(data) : data,
|
18 | usage || WebGPUConstants.BufferUsage.Vertex | WebGPUConstants.BufferUsage.CopyDst);
|
19 | }
|
20 |
|
21 | _createClass(WebGPUBuffer, [{
|
22 | key: "get",
|
23 | value: function get() {
|
24 | return this.buffer;
|
25 | }
|
26 | }, {
|
27 | key: "destroy",
|
28 | value: function destroy() {
|
29 | this.buffer.destroy();
|
30 | }
|
31 | }, {
|
32 | key: "subData",
|
33 | value: function subData(_ref) {
|
34 | var data = _ref.data,
|
35 | offset = _ref.offset;
|
36 | this.setSubData(this.buffer, offset, data instanceof Array ? new Float32Array(data) : data);
|
37 | }
|
38 | }, {
|
39 | key: "createBuffer",
|
40 | value: function createBuffer(view, flags) {
|
41 |
|
42 | var padding = view.byteLength % 4;
|
43 | var verticesBufferDescriptor = {
|
44 |
|
45 | size: view.byteLength + padding,
|
46 | usage: flags
|
47 | };
|
48 | var buffer = this.engine.device.createBuffer(verticesBufferDescriptor);
|
49 | this.setSubData(buffer, 0, view);
|
50 | return buffer;
|
51 | }
|
52 | |
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
|
59 | }, {
|
60 | key: "setSubData",
|
61 | value: function setSubData(destBuffer, destOffset, srcArrayBuffer) {
|
62 |
|
63 |
|
64 |
|
65 |
|
66 |
|
67 |
|
68 |
|
69 |
|
70 | var queue = isSafari ?
|
71 | this.engine.device.getQueue() : this.engine.device.defaultQueue;
|
72 |
|
73 | queue.writeBuffer(destBuffer, destOffset, srcArrayBuffer);
|
74 | }
|
75 | }]);
|
76 |
|
77 | return WebGPUBuffer;
|
78 | }();
|
79 |
|
80 | export { WebGPUBuffer as default };
|
81 |
|
\ | No newline at end of file |