GPUBuffer: usage-Eigenschaft

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die schreibgeschützte Eigenschaft usage des GPUBuffer-Interfaces enthält die bitweisen Flags, die die erlaubten Nutzungen des GPUBuffer darstellen.

usage wird über die usage-Eigenschaft im Deskriptor-Objekt festgelegt, das in den ursprünglichen GPUDevice.createBuffer()-Aufruf übergeben wird.

Wert

Die bitweisen Flags, die die ursprünglichen Nutzungen darstellen, die beim ersten Erstellen des GPUBuffer festgelegt wurden. Die zurückgegebene Zahl ist die Summe der Dezimalwerte, die die verschiedenen Flags repräsentieren, wie in der unten stehenden Tabelle zu sehen ist.

Bitweises Flag Nutzungsbeschreibung Hex-Wert Dezimal-Wert
GPUBufferUsage.COPY_SRC Der Puffer kann als Quelle einer Kopie-Operation verwendet werden, zum Beispiel das Argument source eines copyBufferToBuffer()-Aufrufs. 0x0004 4
GPUBufferUsage.COPY_DST Der Puffer kann als Ziel einer Kopier-/Schreiboperation verwendet werden, zum Beispiel das Argument destination eines copyTextureToBuffer()-Aufrufs. 0x0008 8
GPUBufferUsage.INDEX Der Puffer kann als Indexpuffer verwendet werden, zum Beispiel als buffer-Argument, das an setIndexBuffer() übergeben wird. 0x0010 16
GPUBufferUsage.INDIRECT Der Puffer kann verwendet werden, um indirekte Befehlsargumente zu speichern, zum Beispiel als indirectBuffer-Argument eines drawIndirect()- oder dispatchWorkgroupsIndirect()-Aufrufs. 0x0100 256
GPUBufferUsage.MAP_READ Der Puffer kann zum Lesen gemappt werden, zum Beispiel beim Aufruf von mapAsync() mit einem mode von GPUMapMode.READ. Dieses Flag kann nur mit GPUBufferUsage.COPY_DST kombiniert werden. 0x0001 1
GPUBufferUsage.MAP_WRITE Der Puffer kann zum Schreiben gemappt werden, zum Beispiel beim Aufruf von mapAsync() mit einem mode von GPUMapMode.WRITE. Dieses Flag kann nur mit GPUBufferUsage.COPY_SRC kombiniert werden. 0x0002 2
GPUBufferUsage.QUERY_RESOLVE Der Puffer kann verwendet werden, um Abfrageergebnisse zu erfassen, zum Beispiel als destination-Argument eines resolveQuerySet()-Aufrufs. 0x0200 512
GPUBufferUsage.STORAGE Der Puffer kann als Speicherpuffer verwendet werden, zum Beispiel als Ressource in einem Bindgruppen-Eintrag beim Erstellen einer GPUBindGroup (über createBindGroup()), die einem GPUBindGroupLayout-Eintrag entspricht, mit einem Puffereintrags-Layout type von "storage" oder "read-only-storage". 0x0080 128
GPUBufferUsage.UNIFORM Der Puffer kann als Uniform-Puffer verwendet werden, zum Beispiel als Ressource in einem Bindgruppen-Eintrag beim Erstellen einer GPUBindGroup (über createBindGroup()), die einem GPUBindGroupLayout-Eintrag entspricht, mit einem Puffereintrags-Layout type von "uniform". 0x0040 64
GPUBufferUsage.VERTEX Der Puffer kann als Vertex-Puffer verwendet werden, zum Beispiel als buffer-Argument, das an setVertexBuffer() übergeben wird. 0x0020 32

Beispiele

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

Spezifikationen

Specification
WebGPU
# dom-gpubuffer-usage

Browser-Kompatibilität

Siehe auch