GPUBuffer: usage 属性
注意:此功能在 Web Workers 中可用。
GPUBuffer 接口的只读属性 usage 包含表示 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 |
该缓冲区可用于读取映射,例如调用 mapAsync() 时 mode 为 GPUMapMode.READ。此标志只能与 GPUBufferUsage.COPY_DST 结合使用。 |
0x0001 | 1 |
GPUBufferUsage.MAP_WRITE |
该缓冲区可用于写入映射,例如调用 mapAsync() 时 mode 为 GPUMapMode.WRITE。此标志只能与 GPUBufferUsage.COPY_SRC 结合使用。 |
0x0002 | 2 |
GPUBufferUsage.QUERY_RESOLVE |
该缓冲区可用于捕获查询结果,例如 resolveQuerySet() 调用中的目标参数。 |
0x0200 | 512 |
GPUBufferUsage.STORAGE |
该缓冲区可用作存储缓冲区,例如在创建 GPUBindGroup(通过 createBindGroup())时作为绑定组条目中的资源,该绑定组条目符合具有 "storage" 或 "read-only-storage" type 的缓冲区绑定布局的 GPUBindGroupLayout 条目。 |
0x0080 | 128 |
GPUBufferUsage.UNIFORM |
该缓冲区可用作统一缓冲区,例如在创建 GPUBindGroup(通过 createBindGroup())时作为绑定组条目中的资源,该绑定组条目符合具有 "uniform" type 的缓冲区绑定布局的 GPUBindGroupLayout 条目。 |
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 |
浏览器兼容性
加载中…