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 insecure contexts (HTTPS), in some or allsupporting browsers.
Note: This feature is available inWeb Workers.
ThemapAsync() method of theGPUBuffer interface maps the specified range of theGPUBuffer. It returns aPromise that resolves when theGPUBuffer's content is ready to be accessed. While theGPUBuffer is mapped it cannot be used in any GPU commands.
Once the buffer is successfully mapped (which can be checked viaGPUBuffer.mapState), calls toGPUBuffer.getMappedRange() will return anArrayBuffer containing theGPUBuffer's current values, to be read and updated by JavaScript as required.
When you have finished working with theGPUBuffer values, callGPUBuffer.unmap() to unmap it, making it accessible to the GPU again.
In this article
Syntax
mapAsync(mode)mapAsync(mode, offset, size)Parameters
modeAbitwise flag that specifies whether the
GPUBufferis mapped for reading or writing. Possible values are:GPUMapMode.READThe
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.WRITEThe
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()).
offsetOptionalA 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.sizeOptionalA 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
APromise that resolves toUndefined when theGPUBuffer's content is ready to be accessed.
Validation
The following criteria must be met when callingmapAsync(), otherwise anOperationErrorDOMException is thrown, the promise is rejected, and aGPUValidationError 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 themainGPUBuffer page for an example.
Specifications
| Specification |
|---|
| WebGPU> # dom-gpubuffer-mapasync> |
Browser compatibility
See also
- TheWebGPU API