GPUBuffer: usage 属性

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

注意:此功能在 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()modeGPUMapMode.READ。此标志只能与 GPUBufferUsage.COPY_DST 结合使用。 0x0001 1
GPUBufferUsage.MAP_WRITE 该缓冲区可用于写入映射,例如调用 mapAsync()modeGPUMapMode.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

浏览器兼容性

另见