GPUDevice: createComputePipelineAsync() Methode

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 einer GPUComputePipeline erfüllt wird. Diese Pipeline kann die Berechnungs-Shader-Stufe steuern und in einem GPUComputePassEncoder verwendet werden, sobald die Pipeline ohne Verzögerungen genutzt werden kann.

Hinweis: Es ist im Allgemeinen vorzuziehen, diese Methode gegenüber GPUDevice.createComputePipeline() zu verwenden, wann immer es möglich ist, da sie verhindert, dass die Ausführung von GPU-Operationen durch die Pipeline-Kompilierung blockiert wird.

Syntax

js
createComputePipeline(descriptor)

Parameter

descriptor

Siehe die Definition 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 Pipeline-Erstellung 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 eine der folgenden Bedingungen nicht erfüllt ist:

  • Die im module verwendete Arbeitsgruppenspeichergröße, die innerhalb der compute-Eigenschaft referenziert wird, ist kleiner oder gleich dem maxComputeWorkgroupStorageSize Limit des GPUDevice.
  • Das module verwendet eine Anzahl von Berechnungsaufrufen 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 Berechnungs-Shader-Einstiegspunkt-Funktion, die der Browser als Standard-Einstiegspunkt verwenden kann.

Beispiele

Hinweis: Die WebGPU-Beispiele enthalten viele weitere Beispiele.

Einfaches Beispiel

Das folgende Beispiel zeigt einen Prozess von:

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

BCD tables only load in the browser

Siehe auch