GPUDevice: Methode createComputePipelineAsync()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die createComputePipelineAsync()
-Methode der GPUDevice
-Schnittstelle gibt ein Promise
zurück, das mit einem GPUComputePipeline
erfüllt wird. Diese kann die „Compute Shader“-Stufe steuern und in einem GPUComputePassEncoder
verwendet werden, sobald die Pipeline ohne Verzögerung genutzt werden kann.
Hinweis:
Es ist generell vorzuziehen, diese Methode anstelle von GPUDevice.createComputePipeline()
zu verwenden, wann immer möglich, da sie das Blockieren der GPU-Ausführung bei der Pipeline-Kompilierung verhindert.
Syntax
createComputePipelineAsync(descriptor)
Parameter
descriptor
-
Siehe die Beschreibung des Deskriptors für die Methode
GPUDevice.createComputePipeline()
.
Rückgabewert
Ein Promise
, das mit einer GPUComputePipeline
-Objektinstanz erfüllt wird, wenn die erstellte Pipeline bereit ist, ohne zusätzliche Verzögerung verwendet zu werden.
Validierung
Wenn die Pipelinenerstellung fehlschlägt und die resultierende Pipeline dadurch ungültig wird, lehnt das zurückgegebene Versprechen mit einem GPUPipelineError
ab:
- Wenn dies auf einen internen Fehler zurückzuführen ist, wird der
GPUPipelineError
einenreason
von"internal"
haben. - Wenn dies auf einen Validierungsfehler zurückzuführen ist, wird der
GPUPipelineError
einenreason
von"validation"
haben.
Ein Validierungsfehler kann auftreten, wenn eine der folgenden Aussagen falsch ist:
- Die im
module
verwendete Arbeitsgruppenspeichergröße, die imcompute
-Eigenschaftsverweis angegeben ist, ist kleiner oder gleich demmaxComputeWorkgroupStorageSize
- Limit desGPUDevice
. - Das
module
verwendet eine Anzahl von Berechnungsaufrufen pro Arbeitsgruppe, die kleiner oder gleich demmaxComputeInvocationsPerWorkgroup
- Limit desGPUDevice
ist. - Die Arbeitsgruppengröße des
module
ist kleiner oder gleich dem entsprechendenmaxComputeWorkgroupSizeX
,maxComputeWorkgroupSizeY
odermaxComputeWorkgroupSizeZ
- Limit desGPUDevice
. - Wenn die
entryPoint
-Eigenschaft weggelassen wird, enthält der Shader-Code eine einzelne „Compute Shader“-Einstiegspunktfunktion, die der Browser als Standard-Einstiegspunkt verwenden kann.
Beispiele
Hinweis: Die WebGPU-Beispiele bieten viele weitere Beispiele.
Einfaches Beispiel
Das folgende Beispiel zeigt einen Prozess von:
- Erstellen eines Bindungsgruppendesigns mit
GPUDevice.createBindGroupLayout()
. - Übergabe des
bindGroupLayout
anGPUDevice.createPipelineLayout()
, um einGPUPipelineLayout
zu erstellen. - Sofortige Verwendung dieses Werts in einem Aufruf von
createComputePipelineAsync()
, um einGPUComputePipeline
zu erstellen.
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",
},
});
// ...
}
Spezifikationen
Specification |
---|
WebGPU # dom-gpudevice-createcomputepipelineasync |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Die WebGPU API