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

js
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 einen reason von "internal" haben.
  • Wenn dies auf einen Validierungsfehler zurückzuführen ist, wird der GPUPipelineError einen reason von "validation" haben.

Ein Validierungsfehler kann auftreten, wenn eine der folgenden Aussagen falsch ist:

  • Die im module verwendete Arbeitsgruppenspeichergröße, die im compute-Eigenschaftsverweis angegeben ist, 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 „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:

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

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
createComputePipelineAsync
Experimental
entryPoint properties are optional for determined default compute shader entry points.
Experimental

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
In development. Supported in a pre-release version.
In development. Supported in a pre-release version.
No support
No support
Experimental. Expect behavior to change in the future.
See implementation notes.
User must explicitly enable this feature.
Has more compatibility info.

Siehe auch