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, bevor Sie diese produktiv verwenden.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Dieses Feature ist verfügbar in Web Workers.
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
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 doppeltenGPUCommandBuffer
Objekte enthalten — jedes kann nur einmal prosubmit()
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 imsubmit()
Aufruf verwiesen wird, enthält keine Duplikate. - Alle
GPUBuffer
,GPUTexture
, undGPUQuerySet
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 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 codierten Befehl verwendet wird, den Typ"occlusion"
Abfrage hat, darf es nicht bereits verwendet werden, außer durchGPURenderPassEncoder.beginOcclusionQuery()
.
Beispiele
In unserem Grundlegender 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
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.
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
- Die WebGPU API