GPUCommandEncoder: beginComputePass() 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 beginComputePass() Methode der GPUCommandEncoder-Schnittstelle beginnt mit der Kodierung eines Compute-Durchlaufs und gibt einen GPUComputePassEncoder zurück, der zur Steuerung der Berechnung verwendet werden kann.

Syntax

js
beginComputePass()
beginComputePass(descriptor)

Parameter

descriptor Optional

Ein Objekt, das die folgenden Eigenschaften enthält:

label Optional

Ein Zeichenfolgenwert, der ein Label bereitstellt, das zur Identifikation des Objekts verwendet werden kann, beispielsweise in GPUError-Meldungen oder Konsolenwarnungen.

timestampWrites Optional

Ein Array von Objekten, die definieren, wo und wann Zeitstempel-Abfragewerte für diesen Durchlauf geschrieben werden. Diese Objekte haben die folgenden Eigenschaften:

  • location: Ein enumerierter Wert, der angibt, wann der Zeitstempel ausgeführt wird. Verfügbare Werte sind:
    • "beginning": Der Zeitstempel wird zusammen mit den anderen kodierten Befehlen im Compute-Durchlauf ausgeführt, sobald der entsprechende GPUCommandBuffer übermittelt wird.
    • "end": Der Zeitstempel wird als Teil einer separaten Liste von Zeitstempel-Anhängen ausgeführt, sobald der Durchlauf endet.
  • queryIndex: Eine Nummer, die die Indexposition im querySet angibt, an die der Zeitstempel geschrieben wird.
  • querySet: Das GPUQuerySet, in das der Zeitstempel geschrieben wird.

Hinweis: Die timestamp-query Funktionalität muss aktiviert sein, um Zeitstempel-Abfragen zu verwenden.

Rückgabewert

Eine Instanz des GPUComputePassEncoder-Objekts.

Validierung

Die folgenden Kriterien müssen beim Aufrufen von beginComputePass() erfüllt sein. Andernfalls wird ein GPUValidationError generiert und ein ungültiger GPUComputePassEncoder wird zurückgegeben:

  • Die timestamp-query Funktionalität ist im GPUDevice aktiviert.
  • Keine zwei timestampWrites-Objekte dürfen dieselbe location haben. Dies bedeutet, dass Sie effektive nur zwei Zeitstempel-Abfragen pro Renderdurchlauf ausführen können.
  • Für jede Zeitstempel-Abfrage muss der querySet GPUQuerySet.type "timestamp" sein, und der queryIndex-Wert muss kleiner als die GPUQuerySet.count sein.

Beispiele

In unserem Grundlagen-Beispiel für Compute werden mehrere Befehle über einen GPUCommandEncoder aufgezeichnet. Die meisten dieser Befehle stammen aus dem über beginComputePass() erstellten GPUComputePassEncoder.

js
// ...

// Create GPUCommandEncoder to encode commands to issue to the GPU
const commandEncoder = device.createCommandEncoder();

// Initiate render pass
const passEncoder = commandEncoder.beginComputePass();

// Issue commands
passEncoder.setPipeline(computePipeline);
passEncoder.setBindGroup(0, bindGroup);
passEncoder.dispatchWorkgroups(Math.ceil(BUFFER_SIZE / 64));

// End the render pass
passEncoder.end();

// Copy output buffer to staging buffer
commandEncoder.copyBufferToBuffer(
  output,
  0, // Source offset
  stagingBuffer,
  0, // Destination offset
  BUFFER_SIZE,
);

// End frame by passing array of command buffers to command queue for execution
device.queue.submit([commandEncoder.finish()]);

// ...

Spezifikationen

Specification
WebGPU
# dom-gpucommandencoder-begincomputepass

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
beginComputePass
Experimental
timestampWrites descriptor property
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