Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

GPUQueue: submit()-Methode

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Want more browser support for this feature? Tell us why.

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 des GPUQueue-Interfaces plant die Ausführung von Befehlsbuffer, die durch ein oder mehrere GPUCommandBuffer-Objekte dargestellt werden, durch die GPU.

Syntax

js
submit(commandBuffers)

Parameter

commandBuffers

Ein Array von GPUCommandBuffer-Objekten, die die Befehle enthalten, 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 übermittelt werden.

Rückgabewert

Keiner (undefined).

Validierung

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

  • Das Array von GPUCommandBuffer-Objekten, das im submit()-Aufruf referenziert wird, enthält keine Duplikate.
  • Alle GPUBuffer-, GPUTexture- und GPUQuerySet-Objekte, die in den kodierten Befehlen verwendet werden, sind verfügbar, d.h. sie sind nicht unzugänglich (GPUBuffer sind unzugänglich, 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 ab, kurz nachdem sie über importExternalTexture() importiert wurden).
  • Wenn ein GPUQuerySet-Objekt, das in einem kodierten Befehl verwendet wird, vom Typ „Occlusion“ ist, darf es nicht bereits verwendet werden, außer von GPURenderPassEncoder.beginOcclusionQuery().

Beispiele

In unserem grundlegenden 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 von dem GPUCommandEncoder kodierten Befehle werden mit der Methode GPUCommandEncoder.finish() in einen GPUCommandBuffer umgewandelt. Der Befehlsbuffer wird dann über einen submit()-Aufruf in die Warteschlange eingefügt, 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

Spezifikation
WebGPU
# dom-gpuqueue-submit

Browser-Kompatibilität

Siehe auch