Limited availability
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 createComputePipelineAsync()
method of the GPUDevice
interface returns a Promise
that fulfills with a GPUComputePipeline
, which can control the compute shader stage and be used in a GPUComputePassEncoder
, once the pipeline can be used without any stalling.
Note: It is generally preferable to use this method over GPUDevice.createComputePipeline()
whenever possible, as it prevents blocking of GPU operation execution on pipeline compilation.
createComputePipelineAsync(descriptor)
Parameters
descriptor
See the descriptor definition for the GPUDevice.createComputePipeline()
method.
A Promise
that fulfills with a GPUComputePipeline
object instance when the created pipeline is ready to be used without additional delay.
If pipeline creation fails and the resulting pipeline becomes invalid as a result, the returned promise rejects with a GPUPipelineError
:
GPUPipelineError
will have a reason
of "internal"
.GPUPipelineError
will have a reason
of "validation"
.A validation error can occur if any of the following are false:
module
referenced inside the compute
property is less than or equal to the GPUDevice
's maxComputeWorkgroupStorageSize
limit.module
uses a number of compute invocations per workgroup less than or equal to the GPUDevice
's maxComputeInvocationsPerWorkgroup
limit.module
's workgroup size is less than or equal to the GPUDevice
's corresponding maxComputeWorkgroupSizeX
, maxComputeWorkgroupSizeY
, or maxComputeWorkgroupSizeZ
limit.entryPoint
property is omitted, the shader code contains a single compute shader entry point function for the browser to use as the default entry point.Note: The WebGPU samples feature many more examples.
Basic exampleThe following example shows a process of:
GPUDevice.createBindGroupLayout()
.bindGroupLayout
into GPUDevice.createPipelineLayout()
to create a GPUPipelineLayout
.createComputePipelineAsync()
call to create a GPUComputePipeline
.async function init() {
// â¦
const bindGroupLayout = device.createBindGroupLayout({
entries: [
{
binding: 0,
visibility: GPUShaderStage.COMPUTE,
buffer: {
type: "storage",
},
},
],
});
const computePipeline = await device.createComputePipelineAsync({
layout: device.createPipelineLayout({
bindGroupLayouts: [bindGroupLayout],
}),
compute: {
module: shaderModule,
entryPoint: "main",
},
});
// â¦
}
Specifications Browser compatibility See also
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4