web api instance method
GPUBuffer: mapAsync() method
Secure contextAvailable in 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 mapState), calls to 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 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 bygetMappedRange()will be discarded onceunmap()is called.Read-mode mapping can only be used on
GPUBuffers that have a usage ofGPUBufferUsage.MAP_READset on them (i.e., when created withcreateBuffer()).
-
-
GPUMapMode.WRITE-
: The
GPUBufferis mapped for writing. Values can be read and updated — any changes made to theArrayBufferreturned bygetMappedRange()will be saved to theGPUBufferonceunmap()is called.Write-mode mapping can only be used on
GPUBuffers that have a usage ofGPUBufferUsage.MAP_WRITEset on them (i.e., when created withcreateBuffer()).
-
-
- : A bitwise flag that specifies whether the
-
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.
- : A number representing the offset, in bytes, from the start of the buffer to the start of the range to be mapped. If
-
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.
- : A number representing the size, in bytes, of the range to be mapped. If
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, orsize-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
Browser compatibility
See also
- The WebGPU API