GPUBuffer: mapAsync()-Methode

Limited availability

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

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.

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

Hinweis: Dieses Feature ist verfügbar in Web Workers.

Die mapAsync()-Methode der GPUBuffer-Schnittstelle mappt den angegebenen Bereich des GPUBuffer. Sie gibt ein Promise zurück, das aufgelöst wird, wenn der Inhalt des GPUBuffer bereit ist, darauf zuzugreifen. Solange der GPUBuffer gemappt ist, kann er nicht in GPU-Befehlen verwendet werden.

Sobald der Puffer erfolgreich gemappt wurde (was über GPUBuffer.mapState überprüft werden kann), geben Aufrufe von GPUBuffer.getMappedRange() ein ArrayBuffer zurück, das die aktuellen Werte des GPUBuffer enthält, um von JavaScript nach Bedarf gelesen und aktualisiert zu werden.

Wenn Sie die Arbeit mit den GPUBuffer-Werten abgeschlossen haben, rufen Sie GPUBuffer.unmap() auf, um ihn zu entmappen und erneut für die GPU zugänglich zu machen.

Syntax

js
mapAsync(mode)
mapAsync(mode, offset, size)

Parameter

mode

Ein Bit-Flag, das angibt, ob der GPUBuffer für Lese- oder Schreibzugriffe gemappt ist. Mögliche Werte sind:

GPUMapMode.READ

Der GPUBuffer ist zum Lesen gemappt. Werte können gelesen werden, aber alle Änderungen, die am von GPUBuffer.getMappedRange() zurückgegebenen ArrayBuffer vorgenommen werden, werden verworfen, sobald GPUBuffer.unmap() aufgerufen wird.

Das Lesen im gemappten Modus kann nur auf GPUBuffers verwendet werden, die eine Nutzung von GPUBufferUsage.MAP_READ gesetzt haben (d. h. wenn sie mit GPUDevice.createBuffer() erstellt wurden).

GPUMapMode.WRITE

Der GPUBuffer ist zum Schreiben gemappt. Werte können gelesen und aktualisiert werden – alle Änderungen, die am von GPUBuffer.getMappedRange() zurückgegebenen ArrayBuffer vorgenommen werden, werden im GPUBuffer gespeichert, sobald GPUBuffer.unmap() aufgerufen wird.

Das Schreiben im gemappten Modus kann nur auf GPUBuffers verwendet werden, die eine Nutzung von GPUBufferUsage.MAP_WRITE gesetzt haben (d. h. wenn sie mit GPUDevice.createBuffer() erstellt wurden).

offset Optional

Eine Zahl, die den Versatz in Bytes vom Anfang des Puffers bis zum Beginn des zu mappenden Bereichs darstellt. Wenn offset weggelassen wird, ist der Standardwert 0.

size Optional

Eine Zahl, die die Größe in Bytes des zu mappenden Bereichs darstellt. Wenn size weggelassen wird, erstreckt sich der zu mappende Bereich bis zum Ende des GPUBuffer.

Rückgabewert

Ein Promise, das auf Undefined aufgelöst wird, wenn der Inhalt des GPUBuffer bereit ist, darauf zuzugreifen.

Validierung

Die folgenden Kriterien müssen erfüllt sein, wenn mapSync() aufgerufen wird, andernfalls wird eine OperationError DOMException ausgelöst, das Promise wird abgelehnt, und ein GPUValidationError wird generiert:

  • offset ist ein Vielfaches von 8.
  • Der gesamte zu mappende Bereich (size falls angegeben, oder GPUBuffer.size - offset falls nicht) ist ein Vielfaches von 4.
  • Der gesamte zu mappende Bereich liegt innerhalb der Grenzen des GPUBuffer.
  • Falls der Modus GPUMapMode.READ ist, hat der GPUBuffer eine Nutzung von GPUBufferUsage.MAP_READ.
  • Falls der Modus GPUMapMode.WRITE ist, hat der GPUBuffer eine Nutzung von GPUBufferUsage.MAP_WRITE.

Beispiele

Sehen Sie sich die Hauptseite von GPUBuffer für ein Beispiel an.

Spezifikationen

Specification
WebGPU
# dom-gpubuffer-mapasync

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch