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 GPUError hoặc cảnh báo console.

mapState Read only

Giá trị được liệt kê đại diện cho trạng thái được ánh xạ của GPUBuffer.

size Read only

Số đại diện cho độ dài của phân bổ bộ nhớ của GPUBuffer, tính bằng byte.

usage Read 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ề ArrayBuffer chứa nội dung được ánh xạ của GPUBuffer trong 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ủa GPUBuffer sẵn sàng để truy cập bằng GPUBuffer.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.

js
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:

js
// 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

Tương thích trình duyệt

Xem thêm