GPUBuffer

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die GPUBuffer-Schnittstelle der WebGPU API repräsentiert einen Speicherblock, der verwendet werden kann, um rohe Daten zu speichern, die in GPU-Operationen verwendet werden.

Eine GPUBuffer-Objektinstanz wird mit der Methode GPUDevice.createBuffer() erstellt.

Instanzeigenschaften

label

Ein String, der ein Etikett bereitstellt, das verwendet werden kann, um das Objekt zu identifizieren, zum Beispiel in GPUError-Meldungen oder Konsolenwarnungen.

mapState Schreibgeschützt

Ein enumerierter Wert, der den abgebildeten Zustand des GPUBuffer darstellt.

size Schreibgeschützt

Eine Zahl, die die Länge der Speicherzuweisung des GPUBuffer in Bytes darstellt.

usage Schreibgeschützt

Die Bitweise-Flags, die die erlaubten Verwendungen des GPUBuffer darstellen.

Instanzmethoden

destroy()

Zerstört den GPUBuffer.

getMappedRange()

Gibt einen ArrayBuffer zurück, der die abgebildeten Inhalte des GPUBuffer im angegebenen Bereich enthält.

mapAsync()

Bildet den angegebenen Bereich des GPUBuffer ab. Gibt ein Promise zurück, das gelöst wird, wenn der Inhalt des GPUBuffer bereit ist, mit GPUBuffer.getMappedRange() zugegriffen zu werden.

unmap()

Hebt die Abbildung des abgebildeten Bereichs des GPUBuffer auf, damit sein Inhalt wieder von der GPU verwendet werden kann.

Beispiele

In unserem grundlegenden Berechnungsbeispiel erstellen wir einen Ausgabepuffer, um GPU-Berechnungen zu lesen, und einen Staging-Puffer, der für den Zugriff durch JavaScript abgebildet wird.

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,
});

Später, sobald der stagingBuffer die Ergebnisse der GPU-Berechnung enthält, wird eine Kombination von GPUBuffer-Methoden verwendet, um die Daten zurück an JavaScript zu lesen, damit sie in der Konsole protokolliert werden können:

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));

Spezifikationen

Specification
WebGPU
# gpubuffer

Browser-Kompatibilität

Siehe auch