(function (global, factory) { if (typeof define === "function" && define.amd) { define(["exports", "./WebGPUProgrammableStage.js"], factory); } else if (typeof exports !== "undefined") { factory(exports, require("./WebGPUProgrammableStage.js")); } else { var mod = { exports: {} }; factory(mod.exports, global.WebGPUProgrammableStage); global.WebGPUComputePipelines = mod.exports; } })(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _WebGPUProgrammableStage) { "use strict"; Object.defineProperty(_exports, "__esModule", { value: true }); _exports.default = void 0; _WebGPUProgrammableStage = _interopRequireDefault(_WebGPUProgrammableStage); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } var WebGPUComputePipelines = /*#__PURE__*/function () { function WebGPUComputePipelines(device) { _classCallCheck(this, WebGPUComputePipelines); this.device = device; this.pipelines = new WeakMap(); this.stages = { compute: new WeakMap() }; } _createClass(WebGPUComputePipelines, [{ key: "get", value: function get(param) { var pipeline = this.pipelines.get(param); // @TODO: Reuse compute pipeline if possible, introduce WebGPUComputePipeline if (pipeline === undefined) { var device = this.device; var shader = { computeShader: param.shader }; // programmable stage var stageCompute = this.stages.compute.get(shader); if (stageCompute === undefined) { stageCompute = new _WebGPUProgrammableStage.default(device, shader.computeShader, 'compute'); this.stages.compute.set(shader, stageCompute); } pipeline = device.createComputePipeline({ compute: stageCompute.stage }); this.pipelines.set(param, pipeline); } return pipeline; } }, { key: "dispose", value: function dispose() { this.pipelines = new WeakMap(); this.stages = { compute: new WeakMap() }; } }]); return WebGPUComputePipelines; }(); var _default = WebGPUComputePipelines; _exports.default = _default; });