GPUBuffer:usage 属性
usage
是 GPUBuffer
接口的只读属性,它包含表示 GPUBuffer
允许用法的 位标志。
usage
通过传递给原始 GPUDevice.createBuffer()
调用的描述符对象中的 usage
属性进行设置。
值
表示 GPUBuffer
首次创建时设置的原始用法的位标志。返回的数字是表示不同标志的不同十进制值的总和,如下表所示。
位标志 | 用法描述 | 十六进制等效值 | 十进制等效值 |
---|---|---|---|
GPUBufferUsage.COPY_SRC |
缓冲区可以用作复制操作的源,例如 copyBufferToBuffer() 调用的源参数。 |
0x0004 | 4 |
GPUBufferUsage.COPY_DST |
缓冲区可以用作复制/写入操作的目标,例如 copyTextureToBuffer() 调用的目标参数。 |
0x0008 | 8 |
GPUBufferUsage.INDEX |
缓冲区可以用作索引缓冲区,例如传递给 setIndexBuffer() 的 buffer 参数。 |
0x0010 | 16 |
GPUBufferUsage.INDIRECT |
缓冲区可用于存储间接命令参数,例如作为 drawIndirect() 或 dispatchWorkgroupsIndirect() 调用的 indirectBuffer 参数。 |
0x0100 | 256 |
GPUBufferUsage.MAP_READ |
缓冲区可以映射以进行读取,例如在使用 GPUMapMode.READ 的 mode 调用 mapAsync() 时。此标志只能与 GPUBufferUsage.COPY_DST 结合使用。 |
0x0001 | 1 |
GPUBufferUsage.MAP_WRITE |
缓冲区可以映射以进行写入,例如在使用 GPUMapMode.WRITE 的 mode 调用 mapAsync() 时。此标志只能与 GPUBufferUsage.COPY_SRC 结合使用。 |
0x0002 | 2 |
GPUBufferUsage.QUERY_RESOLVE |
缓冲区可用于捕获查询结果,例如作为 resolveQuerySet() 调用的目标参数。 |
0x0200 | 512 |
GPUBufferUsage.STORAGE |
缓冲区可用作存储缓冲区,例如在创建 GPUBindGroup (通过 createBindGroup() )时,作为绑定组条目中的资源,该资源遵循 GPUBindGroupLayout 条目,其缓冲区绑定布局 type 为 "storage" 或 "read-only-storage" 。 |
0x0080 | 128 |
GPUBufferUsage.UNIFORM |
缓冲区可用作统一缓冲区,例如在创建 GPUBindGroup (通过 createBindGroup() )时,作为绑定组条目中的资源,该资源遵循 GPUBindGroupLayout 条目,其缓冲区绑定布局 type 为 "uniform" 。 |
0x0040 | 64 |
GPUBufferUsage.VERTEX |
缓冲区可用作顶点缓冲区,例如作为传递给 setVertexBuffer() 的 buffer 参数。 |
0x0020 | 32 |
示例
js
const output = device.createBuffer({
size: BUFFER_SIZE,
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
});
console.log(output.usage); // 132
const stagingBuffer = device.createBuffer({
size: BUFFER_SIZE,
usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,
});
console.log(stagingBuffer.usage); // 9
规范
规范 |
---|
WebGPU # dom-gpubuffer-usage |
浏览器兼容性
BCD 表格仅在浏览器中加载