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

瀏覽器相容性

另見