GPUQueue

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.

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

Auf die Hauptwarteschlange eines Geräts wird über die Eigenschaft GPUDevice.queue zugegriffen.

Instanzeigenschaften

label

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

Instanzmethoden

copyExternalImageToTexture()

Kopiert eine Momentaufnahme, die von einem Quellbild, Video oder Canvas aufgenommen wurde, in eine gegebene GPUTexture.

onSubmittedWorkDone()

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

submit()

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

writeBuffer()

Schreibt eine bereitgestellte Datenquelle in einen gegebenen GPUBuffer.

writeTexture()

Schreibt eine bereitgestellte Datenquelle in eine gegebene GPUTexture.

Beispiele

In unserem grundlegenden Render-Demo definieren wir einige Vertex-Daten in einem Float32Array, die 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 legen. 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 es dem Benutzeragenten ermöglicht, den effizientesten Weg zu bestimmen, um die Daten zu kopieren:

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

Später wird eine Reihe von Befehlen in einem GPUCommandBuffer mit der Methode GPUCommandEncoder.finish() kodiert. Der Befehls-Puffer wird dann über einen submit()-Aufruf in die Warteschlange übergeben, bereit zur Verarbeitung durch die GPU.

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

Hinweis: Studieren Sie die WebGPU-Beispiele, um weitere Beispiele für Warteschlangen zu finden.

Spezifikationen

Specification
WebGPU
# gpu-queue

Browser-Kompatibilität

Siehe auch