GPUCommandEncoder: beginComputePass() method
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.
Phương thức beginComputePass() của giao diện GPUCommandEncoder bắt đầu mã hóa một compute pass, trả về một GPUComputePassEncoder có thể dùng để điều khiển tính toán.
Cú pháp
beginComputePass()
beginComputePass(descriptor)
Tham số
descriptorOptional-
Một đối tượng chứa các thuộc tính sau:
labelOptional-
Một chuỗi dùng làm nhãn để nhận dạng đối tượng, ví dụ trong thông báo
GPUErrorhoặc cảnh báo trên console. timestampWritesOptional-
Một mảng các đối tượng xác định nơi và thời điểm các giá trị truy vấn dấu thời gian sẽ được ghi cho pass này. Các đối tượng này có các thuộc tính sau:
querySet-
Một
GPUQuerySetkiểu"timestamp"mà kết quả truy vấn dấu thời gian sẽ được ghi vào. beginningOfPassWriteIndex-
Một số chỉ định chỉ mục truy vấn trong
querySetnơi dấu thời gian ở đầu render pass sẽ được ghi. Thuộc tính này là tùy chọn - nếu không được định nghĩa, sẽ không có dấu thời gian nào được ghi cho đầu pass. endOfPassWriteIndex-
Một số chỉ định chỉ mục truy vấn trong
querySetnơi dấu thời gian ở cuối render pass sẽ được ghi. Thuộc tính này là tùy chọn - nếu không được định nghĩa, sẽ không có dấu thời gian nào được ghi cho cuối pass.
Note: Tính năng
timestamp-queryfeature cần được bật để dùng truy vấn dấu thời gian. Giá trị truy vấn dấu thời gian được ghi bằng nanosecond, nhưng cách xác định giá trị là do phần triển khai quyết định.
Giá trị trả về
Một thể hiện đối tượng GPUComputePassEncoder.
Kiểm tra hợp lệ
Các tiêu chí sau phải được đáp ứng khi gọi beginComputePass(), nếu không một GPUValidationError sẽ được tạo và trả về một GPUComputePassEncoder không hợp lệ:
Ví dụ
Trong bản demo compute cơ bản của chúng tôi, nhiều lệnh được ghi qua một GPUCommandEncoder. Phần lớn các lệnh này đến từ GPUComputePassEncoder được tạo bằng beginComputePass().
// …
// Tạo GPUCommandEncoder để mã hóa các lệnh gửi tới GPU
const commandEncoder = device.createCommandEncoder();
// Bắt đầu compute pass
const passEncoder = commandEncoder.beginComputePass();
// Thực thi lệnh
passEncoder.setPipeline(computePipeline);
passEncoder.setBindGroup(0, bindGroup);
passEncoder.dispatchWorkgroups(Math.ceil(BUFFER_SIZE / 64));
// Kết thúc render pass
passEncoder.end();
// Sao chép output buffer sang staging buffer
commandEncoder.copyBufferToBuffer(
output,
0, // Độ lệch nguồn
stagingBuffer,
0, // Độ lệch đích
BUFFER_SIZE,
);
// Kết thúc frame bằng cách truyền mảng command buffer vào command queue để thực thi
device.queue.submit([commandEncoder.finish()]);
// …
Thông số kỹ thuật
| Specification |
|---|
| WebGPU> # dom-gpucommandencoder-begincomputepass> |