| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | 
							- import WebGPUProgrammableStage from './WebGPUProgrammableStage.js';
 
- class WebGPUComputePipelines {
 
- 	constructor( device ) {
 
- 		this.device = device;
 
- 		this.pipelines = new WeakMap();
 
- 		this.stages = {
 
- 			compute: new WeakMap()
 
- 		};
 
- 	}
 
- 	get( param ) {
 
- 		let pipeline = this.pipelines.get( param );
 
- 		// @TODO: Reuse compute pipeline if possible, introduce WebGPUComputePipeline
 
- 		if ( pipeline === undefined ) {
 
- 			const device = this.device;
 
- 			const shader = {
 
- 				computeShader: param.shader
 
- 			};
 
- 			// programmable stage
 
- 			let stageCompute = this.stages.compute.get( shader );
 
- 			if ( stageCompute === undefined ) {
 
-  				stageCompute = new WebGPUProgrammableStage( device, shader.computeShader, 'compute' );
 
- 				this.stages.compute.set( shader, stageCompute );
 
- 			}
 
- 			pipeline = device.createComputePipeline( {
 
- 				compute: stageCompute.stage
 
- 			} );
 
- 			this.pipelines.set( param, pipeline );
 
- 		}
 
- 		return pipeline;
 
- 	}
 
- 	dispose() {
 
- 		this.pipelines = new WeakMap();
 
- 		this.stages = {
 
- 			compute: new WeakMap()
 
- 		};
 
- 	}
 
- }
 
- export default WebGPUComputePipelines;
 
 
  |