GPUComputePassEncoder

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 GPUComputePassEncoder Schnittstelle der WebGPU API kodiert Befehle zur Steuerung der Compute-Shader-Stufe, wie sie von einer GPUComputePipeline ausgegeben werden. Sie ist Teil der gesamten Kodierungsaktivität eines GPUCommandEncoder.

Eine Compute-Pipeline enthält eine einzige Compute-Stufe, in der ein Compute-Shader allgemeine Daten entgegennimmt, diese parallel über eine festgelegte Anzahl von Arbeitsgruppen verarbeitet und das Ergebnis in einem oder mehreren Puffern zurückgibt.

Ein GPUComputePassEncoder Objekt wird über die GPUCommandEncoder.beginComputePass() Eigenschaft erstellt.

Instanzeigenschaften

label Experimentell

Eine Zeichenkette, die eine Kennzeichnung bereitstellt, die verwendet werden kann, um das Objekt zu identifizieren, beispielsweise in GPUError Meldungen oder Konsolenwarnungen.

Instanzmethoden

dispatchWorkgroups() Experimentell

Verteilt ein spezifisches Raster von Arbeitsgruppen, um die Arbeit auszuführen, die von der aktuellen GPUComputePipeline durchgeführt wird.

dispatchWorkgroupsIndirect() Experimentell

Verteilt ein Raster von Arbeitsgruppen, das durch die Parameter eines GPUBuffer definiert ist, um die Arbeit auszuführen, die von der aktuellen GPUComputePipeline durchgeführt wird.

end() Experimentell

Beendet die Aufnahme der aktuellen Compute-Pass-Befehlsequenz.

insertDebugMarker() Experimentell

Markiert einen bestimmten Punkt in einer Reihe kodierter Befehle mit einer Kennzeichnung.

popDebugGroup() Experimentell

Beendet eine Debug-Gruppe, die mit einem pushDebugGroup() Aufruf begonnen wurde.

pushDebugGroup() Experimentell

Beginnt eine Debug-Gruppe, die mit einer festgelegten Kennzeichnung versehen ist und alle nachfolgenden kodierten Befehle bis zur Aufrufmethode popDebugGroup() enthalten wird.

setBindGroup() Experimentell

Setzt die GPUBindGroup für die nachfolgenden Compute-Befehle für einen bestimmten Index.

setPipeline() Experimentell

Setzt die GPUComputePipeline, die für diesen Compute-Pass verwendet werden soll.

Beispiele

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

js
// ...

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

// Create GPUComputePassEncoder to initiate compute pass
const passEncoder = commandEncoder.beginComputePass();

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

// End the compute 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
# gpucomputepassencoder

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch