GPUBuffer: mapAsync() 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.
The mapAsync() method of the
GPUBuffer interface maps the specified range of the GPUBuffer. It returns a Promise that resolves when the GPUBuffer's content is ready to be accessed. While the GPUBuffer is mapped it cannot be used in any GPU commands.
Once the buffer is successfully mapped (which can be checked via GPUBuffer.mapState), calls to GPUBuffer.getMappedRange() will return an ArrayBuffer containing the GPUBuffer's current values, to be read and updated by JavaScript as required.
When you have finished working with the GPUBuffer values, call GPUBuffer.unmap() to unmap it, making it accessible to the GPU again.
Syntax
mapAsync(mode)
mapAsync(mode, offset, size)
Parameters
mode-
A bitwise flag that specifies whether the
GPUBufferis mapped for reading or writing. Possible values are:GPUMapMode.READ-
The
GPUBufferis mapped for reading. Values can be read, but any changes made to theArrayBufferreturned byGPUBuffer.getMappedRange()will be discarded onceGPUBuffer.unmap()is called.Read-mode mapping can only be used on
GPUBuffers that have a usage ofGPUBufferUsage.MAP_READset on them (i.e., when created withGPUDevice.createBuffer()). GPUMapMode.WRITE-
The
GPUBufferis mapped for writing. Values can be read and updated — any changes made to theArrayBufferreturned byGPUBuffer.getMappedRange()will be saved to theGPUBufferonceGPUBuffer.unmap()is called.Write-mode mapping can only be used on
GPUBuffers that have a usage ofGPUBufferUsage.MAP_WRITEset on them (i.e., when created withGPUDevice.createBuffer()).
offsetOptional-
A number representing the offset, in bytes, from the start of the buffer to the start of the range to be mapped. If
offsetis omitted, it defaults to 0. sizeOptional-
A number representing the size, in bytes, of the range to be mapped. If
sizeis omitted, the range mapped extends to the end of theGPUBuffer.
Return value
A Promise that resolves to Undefined when the GPUBuffer's content is ready to be accessed.
Validation
The following criteria must be met when calling mapAsync(), otherwise an OperationError DOMException is thrown, the promise is rejected, and a GPUValidationError is generated:
offsetis a multiple of 8.- The total range to be mapped (
sizeif specified, orGPUBuffer.size-offsetif not) is a multiple of 4. - The total range to be mapped is inside the bounds of the
GPUBuffer. - If mode is
GPUMapMode.READ, theGPUBufferhas a usage ofGPUBufferUsage.MAP_READ. - If mode is
GPUMapMode.WRITE, theGPUBufferhas a usage ofGPUBufferUsage.MAP_WRITE.
Examples
See the main GPUBuffer page for an example.
Specifications
| Specification |
|---|
| WebGPU> # dom-gpubuffer-mapasync> |
Browser compatibility
Loading…
See also
- The WebGPU API