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 des GPUQueue
-Interfaces plant die Ausführung von Befehls-Puffern, die durch eines oder mehrere GPUCommandBuffer
-Objekte vom GPU repräsentiert werden.
Syntax
submit(commandBuffers)
Parameter
commandBuffers
-
Ein Array von
GPUCommandBuffer
-Objekten, die die zu verarbeitenden Befehle für die GPU enthalten. Das Array darf keine doppeltenGPUCommandBuffer
-Objekte enthalten — jedes kann nur einmal prosubmit()
-Aufruf übermittelt werden.
Rückgabewert
Keiner (Undefined
).
Validierung
Die folgenden Kriterien müssen erfüllt sein, wenn submit()
aufgerufen wird, andernfalls wird ein GPUValidationError
generiert und die GPUQueue
wird ungültig:
- Das Array von
GPUCommandBuffer
-Objekten, auf das imsubmit()
-Aufruf verwiesen wird, enthält keine Duplikate. - Alle
GPUBuffer
-,GPUTexture
- undGPUQuerySet
-Objekte, die in den kodierten Befehlen verwendet werden, sind verfügbar, d.h. nicht unzugänglich (z. B. sindGPUBuffer
s unzugänglich, wenn sie derzeit gemappt sind) oder zerstört (mit derdestroy()
-Methode). - Alle
GPUExternalTexture
-Objekte, die in den kodierten Befehlen verwendet werden, sind nicht abgelaufen (sie laufen automatisch kurz nach dem Import überimportExternalTexture()
ab). - Wenn ein
GPUQuerySet
-Objekt, das in einem kodierten Befehl verwendet wird, von Typ "occlusion query" ist, wird es nicht bereits verwendet, außer vonGPURenderPassEncoder.beginOcclusionQuery()
.
Beispiele
In unserem Grundlegendes Render-Demo werden eine Reihe von Befehlen über einen GPUCommandEncoder
aufgezeichnet:
// …
// 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
kodierten Befehle werden mithilfe der GPUCommandEncoder.finish()
-Methode in einem GPUCommandBuffer
neu aufgezeichnet. Der Befehls-Puffer wird dann über einen submit()
-Aufruf in die Warteschlange übergeben und ist bereit, von der GPU verarbeitet zu werden.
device.queue.submit([commandEncoder.finish()]);
Hinweis: Studieren Sie die WebGPU-Beispiele, um weitere Warteschlangenbeispiele zu finden.
Spezifikationen
Specification |
---|
WebGPU # dom-gpuqueue-submit |
Browser-Kompatibilität
Siehe auch
- Die WebGPU API