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 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 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

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
GPUQueue
Experimental
copyExternalImageToTexture
Experimental
HTMLImageElement and ImageData objects as source
Experimental
VideoFrame object as source
Experimental
label
Experimental
onSubmittedWorkDone
Experimental
submit
Experimental
Validates that submitted command buffers are unique.
Experimental
writeBuffer
Experimental
writeTexture
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