GPUCommandEncoder
Limited availability
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.
Giao diện GPUCommandEncoder của WebGPU API đại diện cho một bộ mã hóa thu thập một chuỗi các lệnh GPU để gửi tới GPU.
Một thể hiện GPUCommandEncoder được tạo thông qua GPUDevice.createCommandEncoder().
Thuộc tính thể hiện
Phương thức thể hiện
beginComputePass()-
Bắt đầu mã hóa một compute pass, trả về một
GPUComputePassEncodercó thể dùng để điều khiển tính toán. beginRenderPass()-
Bắt đầu mã hóa một render pass, trả về một
GPURenderPassEncodercó thể dùng để điều khiển quá trình kết xuất. clearBuffer()-
Mã hóa một lệnh điền một vùng của
GPUBufferbằng các số 0. copyBufferToBuffer()-
Mã hóa một lệnh sao chép dữ liệu từ một
GPUBuffersang một buffer khác. copyBufferToTexture()-
Mã hóa một lệnh sao chép dữ liệu từ một
GPUBuffersang mộtGPUTexture. copyTextureToBuffer()-
Mã hóa một lệnh sao chép dữ liệu từ một
GPUTexturesang mộtGPUBuffer. copyTextureToTexture()-
Mã hóa một lệnh sao chép dữ liệu từ một
GPUTexturesang một texture khác. finish()-
Hoàn tất việc ghi chuỗi lệnh đã được mã hóa trên
GPUCommandEncodernày, trả về mộtGPUCommandBuffertương ứng. insertDebugMarker()-
Đánh dấu một điểm cụ thể trong chuỗi lệnh đã mã hóa bằng một nhãn.
popDebugGroup()-
Kết thúc một debug group, được bắt đầu bằng lệnh gọi
pushDebugGroup(). pushDebugGroup()-
Bắt đầu một debug group, được gắn bằng một nhãn chỉ định và sẽ chứa tất cả các lệnh đã mã hóa tiếp theo cho đến khi phương thức
popDebugGroup()được gọi. resolveQuerySet()-
Mã hóa một lệnh phân giải một
GPUQuerySet, sao chép kết quả vào mộtGPUBufferđược chỉ định. writeTimestamp()Non-standard Deprecated-
Mã hóa một lệnh ghi dấu thời gian vào một
GPUQuerySetsau khi các lệnh trước đó đã được ghi vào cùngGPUCommandBufferđang xếp hàng được GPU thực thi.
Ví dụ
Trong bản demo kết xuất cơ bản của chúng tôi, nhiều lệnh được ghi qua một GPUCommandEncoder:
// …
// Tạo GPUCommandEncoder
const commandEncoder = device.createCommandEncoder();
// Tạo GPURenderPassDescriptor để báo cho WebGPU biết texture nào sẽ được vẽ vào, rồi khởi tạo render pass
const renderPassDescriptor = {
colorAttachments: [
{
clearValue: clearColor,
loadOp: "clear",
storeOp: "store",
view: context.getCurrentTexture().createView(),
},
],
};
const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);
// Vẽ một tam giác
passEncoder.setPipeline(renderPipeline);
passEncoder.setVertexBuffer(0, vertexBuffer);
passEncoder.draw(3);
// Kết thúc render pass
passEncoder.end();
// …
Các lệnh được mã hóa bởi GPUCommandEncoder được ghi vào một GPUCommandBuffer bằng phương thức GPUCommandEncoder.finish(). Sau đó, command buffer được truyền vào hàng đợi qua lệnh gọi submit(), sẵn sàng để GPU xử lý.
device.queue.submit([commandEncoder.finish()]);
Note: Hãy xem các WebGPU samples để tìm thêm ví dụ về mã hóa lệnh.
Thông số kỹ thuật
| Specification |
|---|
| WebGPU> # gpucommandencoder> |