GPUQueue

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, bevor Sie diese produktiv verwenden.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Hinweis: Dieses Feature ist verfügbar in Web Workers.

Die GPUQueue-Schnittstelle der WebGPU API steuert die Ausführung von kodierten Befehlen auf der GPU.

Auf die primäre Warteschlange eines Geräts wird über die GPUDevice.queue-Eigenschaft zugegriffen.

Instanzeigenschaften

label Experimentell

Ein String, der ein Etikett bereitstellt, das verwendet werden kann, um das Objekt zu identifizieren, zum Beispiel in GPUError-Meldungen oder Konsolenwarnungen.

Instanzmethoden

copyExternalImageToTexture() Experimentell

Kopiert einen Schnappschuss von einem Quellbild, Video oder Canvas in eine gegebene GPUTexture.

onSubmittedWorkDone() Experimentell

Gibt ein Promise zurück, das aufgelöst wird, wenn alle an die GPU über diese GPUQueue gesendeten Arbeiten zum Zeitpunkt des Aufrufs der Methode bearbeitet wurden.

submit() Experimentell

Plant die Ausführung von Befehls-Puffern, die durch ein oder mehrere GPUCommandBuffer-Objekte dargestellt werden, durch die GPU.

writeBuffer() Experimentell

Schreibt eine bereitgestellte Datenquelle in einen gegebenen GPUBuffer.

writeTexture() Experimentell

Schreibt eine bereitgestellte Datenquelle in eine gegebene GPUTexture.

Beispiele

In unserem Grundlegenden Render-Demo definieren wir einige Vertex-Daten in einem Float32Array, das wir verwenden werden, um ein Dreieck zu zeichnen:

js
const vertices = new Float32Array([
  0.0, 0.6, 0, 1, 1, 0, 0, 1, -0.5, -0.6, 0, 1, 0, 1, 0, 1, 0.5, -0.6, 0, 1, 0,
  0, 1, 1,
]);

Um diese Daten in einer Render-Pipeline zu verwenden, müssen wir sie in einen GPUBuffer einfügen. Zuerst erstellen wir den Puffer:

js
const vertexBuffer = device.createBuffer({
  size: vertices.byteLength, // make it big enough to store vertices in
  usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST,
});

Um die Daten in den Puffer zu bekommen, können wir die Funktion writeBuffer() verwenden, die dem Benutzeragenten die effizienteste Möglichkeit bietet, die Daten zu kopieren:

js
device.queue.writeBuffer(vertexBuffer, 0, vertices, 0, vertices.length);

Später wird eine Reihe von Befehlen mithilfe der Methode GPUCommandEncoder.finish() in einen GPUCommandBuffer kodiert. Der Befehls-Puffer wird dann über einen submit()-Aufruf in die Warteschlange weitergeleitet, um von der GPU bearbeitet zu werden.

js
device.queue.submit([commandEncoder.finish()]);

Hinweis: Studieren Sie die WebGPU-Beispiele, um weitere Warteschlangenbeispiele zu finden.

Spezifikationen

Specification
WebGPU
# gpu-queue

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch