GPUBuffer
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.
Giao diện GPUBuffer của WebGPU API đại diện cho một khối bộ nhớ có thể được sử dụng để lưu trữ dữ liệu thô để sử dụng trong các thao tác GPU.
Phiên bản đối tượng GPUBuffer được tạo bằng phương thức GPUDevice.createBuffer().
Thuộc tính phiên bản
label-
Một chuỗi cung cấp nhãn có thể được sử dụng để xác định đối tượng, ví dụ trong các thông báo
GPUErrorhoặc cảnh báo console. mapStateRead only-
Giá trị được liệt kê đại diện cho trạng thái được ánh xạ của
GPUBuffer. sizeRead only-
Số đại diện cho độ dài của phân bổ bộ nhớ của
GPUBuffer, tính bằng byte. usageRead only-
bitwise flags đại diện cho các cách sử dụng cho phép của
GPUBuffer.
Phương thức phiên bản
destroy()-
Hủy
GPUBuffer. getMappedRange()-
Trả về
ArrayBufferchứa nội dung được ánh xạ củaGPUBuffertrong phạm vi được chỉ định. mapAsync()-
Ánh xạ phạm vi được chỉ định của
GPUBuffer. Trả vềPromiseđược giải quyết khi nội dung củaGPUBuffersẵn sàng để truy cập bằngGPUBuffer.getMappedRange(). unmap()-
Hủy ánh xạ phạm vi được ánh xạ của
GPUBuffer, làm cho nội dung của nó có sẵn cho GPU sử dụng lại.
Ví dụ
Trong demo tính toán cơ bản, chúng ta tạo buffer đầu ra để đọc kết quả tính toán GPU và buffer dàn dựng để được ánh xạ cho quyền truy cập JavaScript.
const output = device.createBuffer({
size: BUFFER_SIZE,
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
});
const stagingBuffer = device.createBuffer({
size: BUFFER_SIZE,
usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,
});
Sau đó, khi stagingBuffer chứa kết quả tính toán GPU, một tổ hợp các phương thức GPUBuffer được sử dụng để đọc dữ liệu trở lại JavaScript để có thể ghi vào console:
GPUBuffer.mapAsync()được sử dụng để ánh xạGPUBufferđể đọc.GPUBuffer.getMappedRange()được sử dụng để trả vềArrayBufferchứa nội dung củaGPUBuffer.GPUBuffer.unmap()được sử dụng để hủy ánh xạGPUBuffer, sau khi chúng ta đã đọc nội dung vào JavaScript theo yêu cầu.
// map staging buffer to read results back to JS
await stagingBuffer.mapAsync(
GPUMapMode.READ,
0, // Offset
BUFFER_SIZE, // Length
);
const copyArrayBuffer = stagingBuffer.getMappedRange(0, BUFFER_SIZE);
const data = copyArrayBuffer.slice(0);
stagingBuffer.unmap();
console.log(new Float32Array(data));
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| WebGPU> # gpubuffer> |