GPUQueue: submit() method
Khả dụng hạn chế
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Note: This feature is available in Web Workers.
Phương thức submit() của giao diện GPUQueue lên lịch thực thi các command buffer được đại diện bởi một hoặc nhiều đối tượng GPUCommandBuffer trên GPU.
Cú pháp
submit(commandBuffers)
Tham số
commandBuffers-
Một mảng các đối tượng
GPUCommandBufferchứa các lệnh cần xếp vào hàng đợi để GPU xử lý. Mảng không được chứa các đối tượngGPUCommandBuffertrùng lặp, mỗi đối tượng chỉ có thể được gửi một lần trong mỗi lần gọisubmit().
Giá trị trả về
Không có (Undefined).
Xác thực
Các tiêu chí sau phải được đáp ứng khi gọi submit(), nếu không sẽ tạo ra GPUValidationError và GPUQueue trở nên không hợp lệ:
- Mảng các đối tượng
GPUCommandBufferđược tham chiếu trong lệnh gọisubmit()không chứa trùng lặp. - Mọi đối tượng
GPUBuffer,GPUTexture, vàGPUQuerySetđược dùng trong các lệnh đã mã hóa phải sẵn sàng để sử dụng, tức là không bị không khả dụng (cácGPUBufferkhông khả dụng nếu đang được mapped) hoặc bị hủy (bằng phương thứcdestroy()). - Mọi đối tượng
GPUExternalTextuređược dùng trong các lệnh đã mã hóa không bị hết hạn (chúng hết hạn tự động ngay sau khi được nhập quaimportExternalTexture()). - Nếu đối tượng
GPUQuerySetđược dùng trong lệnh đã mã hóa thuộc loại truy vấn"occlusion", nó chưa được sử dụng, ngoại trừ bởiGPURenderPassEncoder.beginOcclusionQuery().
Ví dụ
Trong basic render demo, một số lệnh được ghi lại thông qua GPUCommandEncoder:
// …
// 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();
// …
Các lệnh được mã hóa bởi GPUCommandEncoder được ghi vào GPUCommandBuffer bằng phương thức GPUCommandEncoder.finish(). Command buffer sau đó được truyền vào hàng đợi thông qua lệnh gọi submit(), sẵn sàng để GPU xử lý.
device.queue.submit([commandEncoder.finish()]);
Note: Hãy nghiên cứu WebGPU samples để tìm thêm các ví dụ về hàng đợi.
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| WebGPU> # dom-gpuqueue-submit> |