Struct wgpu::CommandEncoder
source · pub struct CommandEncoder { /* private fields */ }
Expand description
Encodes a series of GPU operations.
A command encoder can record RenderPass
es, ComputePass
es,
and transfer operations between driver-managed resources like Buffer
s and Texture
s.
When finished recording, call CommandEncoder::finish
to obtain a CommandBuffer
which may
be submitted for execution.
Corresponds to WebGPU GPUCommandEncoder
.
Implementations§
source§impl CommandEncoder
impl CommandEncoder
sourcepub fn finish(self) -> CommandBuffer
pub fn finish(self) -> CommandBuffer
Finishes recording and returns a CommandBuffer
that can be submitted for execution.
sourcepub fn begin_render_pass<'pass>(
&'pass mut self,
desc: &RenderPassDescriptor<'pass, '_>
) -> RenderPass<'pass>
pub fn begin_render_pass<'pass>( &'pass mut self, desc: &RenderPassDescriptor<'pass, '_> ) -> RenderPass<'pass>
Begins recording of a render pass.
This function returns a RenderPass
object which records a single render pass.
sourcepub fn begin_compute_pass(
&mut self,
desc: &ComputePassDescriptor<'_>
) -> ComputePass<'_>
pub fn begin_compute_pass( &mut self, desc: &ComputePassDescriptor<'_> ) -> ComputePass<'_>
Begins recording of a compute pass.
This function returns a ComputePass
object which records a single compute pass.
sourcepub fn copy_buffer_to_buffer(
&mut self,
source: &Buffer,
source_offset: BufferAddress,
destination: &Buffer,
destination_offset: BufferAddress,
copy_size: BufferAddress
)
pub fn copy_buffer_to_buffer( &mut self, source: &Buffer, source_offset: BufferAddress, destination: &Buffer, destination_offset: BufferAddress, copy_size: BufferAddress )
Copy data from one buffer to another.
Panics
- Buffer offsets or copy size not a multiple of
COPY_BUFFER_ALIGNMENT
. - Copy would overrun buffer.
- Copy within the same buffer.
sourcepub fn copy_buffer_to_texture(
&mut self,
source: ImageCopyBuffer<'_>,
destination: ImageCopyTexture<'_>,
copy_size: Extent3d
)
pub fn copy_buffer_to_texture( &mut self, source: ImageCopyBuffer<'_>, destination: ImageCopyTexture<'_>, copy_size: Extent3d )
Copy data from a buffer to a texture.
sourcepub fn copy_texture_to_buffer(
&mut self,
source: ImageCopyTexture<'_>,
destination: ImageCopyBuffer<'_>,
copy_size: Extent3d
)
pub fn copy_texture_to_buffer( &mut self, source: ImageCopyTexture<'_>, destination: ImageCopyBuffer<'_>, copy_size: Extent3d )
Copy data from a texture to a buffer.
sourcepub fn copy_texture_to_texture(
&mut self,
source: ImageCopyTexture<'_>,
destination: ImageCopyTexture<'_>,
copy_size: Extent3d
)
pub fn copy_texture_to_texture( &mut self, source: ImageCopyTexture<'_>, destination: ImageCopyTexture<'_>, copy_size: Extent3d )
Copy data from one texture to another.
Panics
- Textures are not the same type
- If a depth texture, or a multisampled texture, the entire texture must be copied
- Copy would overrun either texture
sourcepub fn clear_texture(
&mut self,
texture: &Texture,
subresource_range: &ImageSubresourceRange
)
pub fn clear_texture( &mut self, texture: &Texture, subresource_range: &ImageSubresourceRange )
Clears texture to zero.
Note that unlike with clear_buffer, COPY_DST
usage is not required.
Implementation notes
- implemented either via buffer copies and render/depth target clear, path depends on texture usages
- behaves like texture zero init, but is performed immediately (clearing is not delayed via marking it as uninitialized)
Panics
CLEAR_TEXTURE
extension not enabled- Range is out of bounds
sourcepub fn clear_buffer(
&mut self,
buffer: &Buffer,
offset: BufferAddress,
size: Option<BufferSize>
)
pub fn clear_buffer( &mut self, buffer: &Buffer, offset: BufferAddress, size: Option<BufferSize> )
sourcepub fn insert_debug_marker(&mut self, label: &str)
pub fn insert_debug_marker(&mut self, label: &str)
Inserts debug marker.
sourcepub fn push_debug_group(&mut self, label: &str)
pub fn push_debug_group(&mut self, label: &str)
Start record commands and group it into debug marker group.
sourcepub fn pop_debug_group(&mut self)
pub fn pop_debug_group(&mut self)
Stops command recording and creates debug group.
source§impl CommandEncoder
impl CommandEncoder
Features::TIMESTAMP_QUERY
must be enabled on the device in order to call these functions.
sourcepub fn write_timestamp(&mut self, query_set: &QuerySet, query_index: u32)
pub fn write_timestamp(&mut self, query_set: &QuerySet, query_index: u32)
Issue a timestamp command at this point in the queue. The timestamp will be written to the specified query set, at the specified index.
Must be multiplied by Queue::get_timestamp_period
to get
the value in nanoseconds. Absolute values have no meaning,
but timestamps can be subtracted to get the time it takes
for a string of operations to complete.
source§impl CommandEncoder
impl CommandEncoder
Features::TIMESTAMP_QUERY
or Features::PIPELINE_STATISTICS_QUERY
must be enabled on the device in order to call these functions.
sourcepub fn resolve_query_set(
&mut self,
query_set: &QuerySet,
query_range: Range<u32>,
destination: &Buffer,
destination_offset: BufferAddress
)
pub fn resolve_query_set( &mut self, query_set: &QuerySet, query_range: Range<u32>, destination: &Buffer, destination_offset: BufferAddress )
Resolve a query set, writing the results into the supplied destination buffer.
Queries may be between 8 and 40 bytes each. See PipelineStatisticsTypes
for more information.