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

BCD tables only load in the browser

Siehe auch