The type of the PipelineManager
Keep track of the current bound pipeline in order to avoid redundant setPipeline calls
Array of already created ComputePipelineEntry and RenderPipelineEntry
Array of current pass (used by GPURenderPassEncoder at the moment, but can be extended to GPUComputePassEncoder as well) already set bind groups.
Compare two shader objects
first shader object to compare
second shader object to compare
Checks if the provided RenderPipelineEntry parameters belongs to an already created RenderPipelineEntry.
Check if a RenderPipelineEntry has already been created with the given parameters. Use it if found, else create a new one and add it to the pipelineEntries array.
RenderMaterial used to create the pipeline.
Checks if the provided PipelineEntry parameters belongs to an already created ComputePipelineEntry.
Check if a ComputePipelineEntry has already been created with the given parameters. Use it if found, else create a new one and add it to the pipelineEntries array.
ComputeMaterial used to create the pipeline.
Check if the given PipelineEntry is already set, if not set it
current pass encoder
the PipelineEntry to set
Track the active/already set bind groups to avoid setBindGroup()
redundant calls.
current pass encoder.
array bind groups passed by the RenderMaterial.
Reset the current pipeline index and activeBindGroups so the next PipelineEntry will be set for sure
Used to create and keep track of both ComputePipelineEntry and RenderPipelineEntry.
Perform checks to eventually use a cached pipeline entry instead of creating a new one.
The end goal is to cache pipelines and reuse them (as well as bind groups).
Also responsible for setting the current pass encoder pipeline in order to avoid redundant setPipeline calls.
Created internally by the GPUDeviceManager.
See
WebGPU Bind Group best practices