Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
GPUDevice: createComputePipelineAsync() Methode
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Sicherer Kontext: Diese Funktion ist nur insicheren Kontexten (HTTPS) in einigen oder allenunterstützenden Browsern verfügbar.
Hinweis: Diese Funktion ist inWeb Workers verfügbar.
DiecreateComputePipelineAsync() Methode desGPUDevice Interfaces gibt einPromise zurück, das mit einemGPUComputePipeline erfüllt wird. Diese kann die Compute-Shader-Stufe steuern und in einemGPUComputePassEncoder verwendet werden, sobald die Pipeline ohne Blockierungen einsatzbereit ist.
Hinweis:Es ist in der Regel vorzuziehen, diese Methode anstelle vonGPUDevice.createComputePipeline() zu verwenden, wann immer dies möglich ist, da sie verhindert, dass die Ausführung der GPU-Operationen durch die Pipeline-Kompilierung blockiert wird.
In diesem Artikel
Syntax
createComputePipelineAsync(descriptor)Parameter
descriptorSiehe die Descriptor-Definition für die Methode
GPUDevice.createComputePipeline().
Rückgabewert
EinPromise, das mit einerGPUComputePipeline Objektinstanz erfüllt wird, wenn die erstellte Pipeline einsatzbereit ist, ohne zusätzliche Verzögerungen.
Validierung
Wenn die Pipelinenerstellung fehlschlägt und die resultierende Pipeline dadurch ungültig wird, wird das zurückgegebene Promise mit einemGPUPipelineError abgelehnt:
- Wenn dies auf einen internen Fehler zurückzuführen ist, hat der
GPUPipelineErroreinenreasonvon"internal". - Wenn dies auf einen Validierungsfehler zurückzuführen ist, hat der
GPUPipelineErroreinenreasonvon"validation".
Ein Validierungsfehler kann auftreten, wenn eines der folgenden Dinge nicht zutrifft:
- Die von dem im
compute-Eigenschaft referenziertenmoduleverwendete Arbeitsgruppenspeichergröße ist kleiner oder gleich demmaxComputeWorkgroupStorageSize-Limit desGPUDevice. - Das
moduleverwendet eine Anzahl von Compute-Aufrufen pro Arbeitsgruppe, die kleiner oder gleich demmaxComputeInvocationsPerWorkgroup-Limit desGPUDeviceist. - Die Arbeitsgruppengröße des
moduleist kleiner oder gleich dem entsprechendenmaxComputeWorkgroupSizeX,maxComputeWorkgroupSizeYodermaxComputeWorkgroupSizeZ-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:DieWebGPU-Beispiele bieten viele weitere Beispiele.
Einfaches Beispiel
Das folgende Beispiel zeigt einen Prozess:
- Erstellen eines Bind-Gruppen-Layouts mit
GPUDevice.createBindGroupLayout(). - Einspeisen des
bindGroupLayoutinGPUDevice.createPipelineLayout(), um einGPUPipelineLayoutzu erstellen. - Unmittelbare Nutzung dieses Werts in einem
createComputePipelineAsync()Aufruf, um eineGPUComputePipelinezu 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
Siehe auch
- DieWebGPU API