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

Syntax

js
beginComputePass()
beginComputePass(descriptor)

Parameter

descriptor Optional

Ein Objekt mit den folgenden Eigenschaften:

label Optional

Ein String, der eine Bezeichnung bereitstellt, die verwendet werden kann, um das Objekt beispielsweise in GPUError-Nachrichten oder Konsolenwarnungen zu identifizieren.

timestampWrites Optional

Ein Array von Objekten, das definiert, wo und wann Zeitstempelabfrage-Werte für diesen Pass geschrieben werden. Diese Objekte haben die folgenden Eigenschaften:

querySet

Ein GPUQuerySet vom Typ "timestamp", zu dem die Ergebnisse der Zeitstempelabfrage geschrieben werden.

beginningOfPassWriteIndex

Eine Zahl, die den Abfrageindex in querySet angibt, an dem der Zeitstempel zu Beginn des Render-Passes geschrieben wird. Dies ist optional - wenn nicht definiert, wird kein Zeitstempel für den Beginn des Passes geschrieben.

endOfPassWriteIndex

Eine Zahl, die den Abfrageindex in querySet angibt, an dem der Zeitstempel am Ende des Render-Passes geschrieben wird. Dies ist optional - wenn nicht definiert, wird kein Zeitstempel für das Ende des Passes geschrieben.

Hinweis: Das timestamp-query Feature muss aktiviert sein, um Zeitstempelabfragen zu verwenden. Zeitstempelabfrage-Werte werden in Nanosekunden geschrieben, aber wie der Wert ermittelt wird, ist implementationsspezifisch.

Rückgabewert

Ein GPUComputePassEncoder-Objektinstanz.

Validierung

Die folgenden Kriterien müssen beim Aufruf von beginComputePass() erfüllt sein, andernfalls wird ein GPUValidationError erzeugt und ein ungültiger GPUComputePassEncoder zurückgegeben:

Beispiele

In unserem einfachen Compute-Demo werden mehrere Befehle über einen GPUCommandEncoder aufgezeichnet. Die meisten dieser Befehle stammen von dem GPUComputePassEncoder, der über beginComputePass() erstellt wurde.

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

Siehe auch