shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$renderers$gpu$BindGroupSystem = function(global, require, module, exports) {
  global = require("module$node_modules$pixi_DOT_js$lib$extensions$Extensions");
  "use strict";
  class BindGroupSystem {
    constructor(renderer) {
      this._hash = Object.create(null);
      this._renderer = renderer;
    }
    contextChange(gpu) {
      this._gpu = gpu;
    }
    getBindGroup(bindGroup, program, groupIndex) {
      bindGroup._updateKey();
      return this._hash[bindGroup._key] || this._createBindGroup(bindGroup, program, groupIndex);
    }
    _createBindGroup(group, program, groupIndex) {
      var device = this._gpu.device;
      const groupLayout = program.layout[groupIndex], entries = [], renderer = this._renderer;
      for (const j in groupLayout) {
        var resource = group.resources[j] ?? group.resources[groupLayout[j]];
        let gpuResource;
        "uniformGroup" === resource._resourceType ? (renderer.ubo.updateUniformGroup(resource), resource = resource.buffer, gpuResource = {buffer:renderer.buffer.getGPUBuffer(resource), offset:0, size:resource.descriptor.size}) : "buffer" === resource._resourceType ? gpuResource = {buffer:renderer.buffer.getGPUBuffer(resource), offset:0, size:resource.descriptor.size} : "bufferResource" === resource._resourceType ? gpuResource = {buffer:renderer.buffer.getGPUBuffer(resource.buffer), offset:resource.offset, 
        size:resource.size} : "textureSampler" === resource._resourceType ? gpuResource = renderer.texture.getGpuSampler(resource) : "textureSource" === resource._resourceType && (gpuResource = renderer.texture.getTextureView(resource));
        entries.push({binding:groupLayout[j], resource:gpuResource});
      }
      program = renderer.shader.getProgramData(program).bindGroups[groupIndex];
      device = device.createBindGroup({layout:program, entries});
      return this._hash[group._key] = device;
    }
    destroy() {
      this._renderer = this._hash = null;
    }
  }
  BindGroupSystem.extension = {type:[global.ExtensionType.WebGPUSystem], name:"bindGroup"};
  exports.BindGroupSystem = BindGroupSystem;
};

//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$renderers$gpu$BindGroupSystem.js.map
