GPUQueue: submit() Methode

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 submit() Methode der GPUQueue Schnittstelle plant die Ausführung von Befehls-Puffern, die durch ein oder mehrere GPUCommandBuffer Objekte dargestellt werden, durch die GPU.

Syntax

js
submit(commandBuffers)

Parameter

commandBuffers

Ein Array von GPUCommandBuffer Objekten, das die Befehle enthält, die für die Verarbeitung durch die GPU in die Warteschlange gestellt werden sollen. Das Array darf keine doppelten GPUCommandBuffer Objekte enthalten — jedes kann nur einmal pro submit() Aufruf übergeben werden.

Rückgabewert

Keiner (Undefined).

Validierung

Die folgenden Kriterien müssen beim Aufruf von submit() erfüllt sein, sonst wird ein GPUValidationError generiert und die GPUQueue wird ungültig:

  • Das Array der GPUCommandBuffer Objekte, auf die im submit() Aufruf verwiesen wird, enthält keine Duplikate.
  • Alle GPUBuffer, GPUTexture, und GPUQuerySet Objekte, die in den kodierten Befehlen verwendet werden, sind zur Nutzung verfügbar, d.h. nicht nicht verfügbar (GPUBuffer sind nicht verfügbar, wenn sie derzeit gemappt sind) oder zerstört (mit der destroy() Methode).
  • Alle GPUExternalTexture Objekte, die in den kodierten Befehlen verwendet werden, sind nicht abgelaufen (sie laufen automatisch kurz nach dem Import über importExternalTexture() ab).
  • Wenn ein GPUQuerySet Objekt, das in einem codierten Befehl verwendet wird, den Typ "occlusion" Abfrage hat, darf es nicht bereits verwendet werden, außer durch GPURenderPassEncoder.beginOcclusionQuery().

Beispiele

In unserem Grundlegender Render-Demo werden eine Reihe von Befehlen über einen GPUCommandEncoder aufgezeichnet:

js
// ...

// Create GPUCommandEncoder
const commandEncoder = device.createCommandEncoder();

// Create GPURenderPassDescriptor to tell WebGPU which texture to draw into, then initiate render pass

const renderPassDescriptor = {
  colorAttachments: [
    {
      clearValue: clearColor,
      loadOp: "clear",
      storeOp: "store",
      view: context.getCurrentTexture().createView(),
    },
  ],
};

const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);

// Draw a triangle

passEncoder.setPipeline(renderPipeline);
passEncoder.setVertexBuffer(0, vertexBuffer);
passEncoder.draw(3);

// End the render pass

passEncoder.end();

// ...

Die durch den GPUCommandEncoder codierten Befehle werden mit der Methode GPUCommandEncoder.finish() in einen GPUCommandBuffer umkodiert. 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
# dom-gpuqueue-submit

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
submit
Experimental
Validates that submitted command buffers are unique.
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