GPUDevice: createPipelineLayout() method
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Note: This feature is available in Web Workers.
The createPipelineLayout()
method of the
GPUDevice
interface creates a GPUPipelineLayout
that defines the GPUBindGroupLayout
s used by a pipeline. GPUBindGroup
s used with the pipeline during command encoding must have compatible GPUBindGroupLayout
s.
Syntax
createPipelineLayout(descriptor)
Parameters
descriptor
-
An object containing the following properties:
bindGroupLayouts
-
An array of
GPUBindGroupLayout
objects (which are in turn created via calls toGPUDevice.createBindGroupLayout()
). Each one corresponds to a@group
attribute in the shader code contained in theGPUShaderModule
used in a related pipeline. label
Optional-
A string providing a label that can be used to identify the object, for example in
GPUError
messages or console warnings.
Return value
A GPUPipelineLayout
object instance.
Validation
The following criteria must be met when calling createPipelineLayout()
, otherwise a GPUValidationError
is generated and an invalid GPUPipelineLayout
object is returned:
- The
GPUBindGroupLayout
objects inbindGroupLayouts
are valid. - The number of
GPUBindGroupLayout
objects inbindGroupLayouts
is less than theGPUDevice
'smaxBindGroups
limit.
Examples
Note: The WebGPU samples feature many more examples.
Multiple bind group layouts, bind group, and pipeline layout
The following snippet:
- Creates a
GPUBindGroupLayout
that describes a binding with a buffer, a texture, and a sampler. - Creates a
GPUPipelineLayout
based on theGPUBindGroupLayout
.
// ...
const bindGroupLayout = device.createBindGroupLayout({
entries: [
{
binding: 0,
visibility: GPUShaderStage.VERTEX | GPUShaderStage.FRAGMENT,
buffer: {},
},
{
binding: 1,
visibility: GPUShaderStage.FRAGMENT,
texture: {},
},
{
binding: 2,
visibility: GPUShaderStage.FRAGMENT,
sampler: {},
},
],
});
const pipelineLayout = device.createPipelineLayout({
bindGroupLayouts: [bindGroupLayout],
});
// ...
Specifications
Specification |
---|
WebGPU # dom-gpudevice-createpipelinelayout |
Browser compatibility
BCD tables only load in the browser
See also
- The WebGPU API