GPUDevice: createBuffer() method
The createBuffer()
method of the GPUDevice
interface creates a GPUBuffer
in which to store raw data to use in GPU operations.
Syntax
Parameters
-
descriptor
-
An object containing the following properties:
label
Optional
-
A string providing a label that can be used to identify the object, for example in GPUError
messages or console warnings.
mappedAtCreation
Optional
-
A boolean. If set to true
, the buffer will be mapped upon creation, meaning that you can set the values inside the buffer immediately by calling GPUBuffer.getMappedRange()
. The default value is false
.
Note that it is valid to set mappedAtCreation: true
so you can set the buffer's initial data, even if the GPUBufferUsage.MAP_READ
or GPUBufferUsage.MAP_WRITE
usage flags are not set.
-
size
-
A number representing the size of the buffer, in bytes.
-
usage
-
The bitwise flags representing the allowed usages for the GPUBuffer
. The possible values are in the GPUBuffer.usage
value table.
Note that multiple possible usages can be specified by separating values with pipe symbols, for example:
usage: GPUBufferUsage.COPY_SRC | GPUBufferUsage.MAP_WRITE;
Return value
A GPUBuffer
object instance.
Validation
The following criteria must be met when calling createBuffer()
, otherwise a GPUValidationError
is generated and an invalid GPUBuffer
object is returned:
- A valid
usage
is specified.
GPUBufferUsage.MAP_READ
is specified, and no additional flags are specified other than GPUBufferUsage.COPY_DST
.
GPUBufferUsage.MAP_WRITE
is specified, and no additional flags are specified other than GPUBufferUsage.COPY_SRC
.
mappedAtCreation: true
is specified, and the specified size
is a multiple of 4.
Note: If the buffer allocation fails without any specific side-effects, a GPUOutOfMemoryError
object is generated.
Examples
In our basic compute demo, we create an output buffer to read GPU calculations to, and a staging buffer to be mapped for JavaScript access.
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,
});
Specifications
Browser compatibility
|
Desktop |
Mobile |
|
Chrome |
Edge |
Firefox |
Internet Explorer |
Opera |
Safari |
WebView Android |
Chrome Android |
Firefox for Android |
Opera Android |
Safari on IOS |
Samsung Internet |
createBuffer |
113Currently supported on ChromeOS, macOS, and Windows only.
|
113Currently supported on ChromeOS, macOS, and Windows only.
|
previewCurrently supported on Linux and Windows only.
|
No |
99Currently supported on ChromeOS, macOS, and Windows only.
|
No |
No |
No |
No |
No |
No |
No |
See also