1. Web
  2. Web-APIs
  3. GPUQueue
  4. submit()

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

Help improve MDN

Erfahren Sie, wie Sie beitragen können Diese Seite wurde automatisch aus dem Englischen übersetzt.

AltStyle によって変換されたページ (->オリジナル) /