pub enum BufferUsage {
MapRead,
MapWrite,
CopySource,
CopyDestination,
Index,
Vertex,
Uniform,
Storage,
Indirect,
QueryResolve,
}Expand description
One legal use of a GPU buffer, as declared in GpuBufferDescriptor.usage.
The WebGPU buffer usage field is a bitmask, not an enum: a buffer may
be used for several purposes at once. This enum names the individual
bits so call sites never hand-write a magic number, and the renderer
ORs the selected variants into the bitmask at the call site. Combine
bits with |, e.g. BufferUsage::Vertex | BufferUsage::CopyDestination.
Variants§
MapRead
The buffer may be mapped for reading from the CPU.
Implies the buffer is host-visible, so it cannot be combined with most other uses on conformant implementations.
MapWrite
The buffer may be mapped for writing from the CPU.
CopySource
The buffer may be the source of a copyBufferToBuffer / copyTextureToBuffer call.
CopyDestination
The buffer may be the destination of a copyBufferToBuffer call or
of queue.writeBuffer.
Index
The buffer holds an index list for setIndexBuffer and
drawIndexed.
Vertex
The buffer holds per-vertex or per-instance attributes for setVertexBuffer.
Uniform
The buffer is bound as a var<uniform> in WGSL.
Storage
The buffer is bound as a var<storage> in WGSL.
Indirect
The buffer holds the arguments of an indirect draw or dispatch.
QueryResolve
The buffer is the destination of commandEncoder.resolveQuerySet.
Implementations§
Source§impl BufferUsage
The GPUBufferUsage bit one use occupies.
impl BufferUsage
The GPUBufferUsage bit one use occupies.
The canonical WebGPU values, in one place: a buffer’s legal uses
are a GPUTextureUsage-style bitmask, and getting a bit wrong
produces a buffer that validates in some draws and silently loses
the access in others. Keeping the table on the enum itself means a
call site cannot reference a stale duplicate constant.
Trait Implementations§
Source§impl BitOr for BufferUsage
Combines two buffer uses into the bitmask a GpuBufferDescriptor
expects.
impl BitOr for BufferUsage
Combines two buffer uses into the bitmask a GpuBufferDescriptor
expects.
A buffer may be used for several purposes at once, and the WebGPU
usage field is a bitmask rather than an enum, so combining uses is
the normal case rather than the exception. The | operator is the
only way the engine combines them, which keeps every bit value in
exactly one place.