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 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 des GPUDevice Interfaces 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 Blockierungen einsatzbereit ist.

Hinweis: Es ist in der Regel vorzuziehen, diese Methode anstelle von GPUDevice.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.

Syntax

js
createComputePipelineAsync(descriptor)

Parameter

descriptor

Siehe die Descriptor-Definition für die Methode GPUDevice.createComputePipeline().

Rückgabewert

Ein Promise, das mit einer GPUComputePipeline 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 einem GPUPipelineError abgelehnt:

  • Wenn dies auf einen internen Fehler zurückzuführen ist, hat der GPUPipelineError einen reason von "internal".
  • Wenn dies auf einen Validierungsfehler zurückzuführen ist, hat der GPUPipelineError einen reason von "validation".

Ein Validierungsfehler kann auftreten, wenn eines der folgenden Dinge nicht zutrifft:

  • Die von dem im compute-Eigenschaft referenzierten module verwendete Arbeitsgruppenspeichergröße ist kleiner oder gleich dem maxComputeWorkgroupStorageSize- Limit des GPUDevice.
  • Das module verwendet eine Anzahl von Compute-Aufrufen pro Arbeitsgruppe, die kleiner oder gleich dem maxComputeInvocationsPerWorkgroup- Limit des GPUDevice ist.
  • Die Arbeitsgruppengröße des module ist kleiner oder gleich dem entsprechenden maxComputeWorkgroupSizeX, maxComputeWorkgroupSizeY oder maxComputeWorkgroupSizeZ- Limit des GPUDevice.
  • 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:

js
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