GPUBuffer:usage 属性

实验性: 这是一个 实验性技术
在生产环境中使用此功能前,请仔细查看 浏览器兼容性表格

安全上下文:此功能仅在 安全上下文(HTTPS)中可用,且仅在某些或所有 支持的浏览器 中可用。

usageGPUBuffer 接口的只读属性,它包含表示 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.READmode 调用 mapAsync() 时。此标志只能与 GPUBufferUsage.COPY_DST 结合使用。 0x0001 1
GPUBufferUsage.MAP_WRITE 缓冲区可以映射以进行写入,例如在使用 GPUMapMode.WRITEmode 调用 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 表格仅在浏览器中加载

另请参阅