Struct wgpu_hal::vulkan::CommandEncoder

source ·
pub struct CommandEncoder {
    raw: CommandPool,
    device: Arc<DeviceShared>,
    active: CommandBuffer,
    bind_point: PipelineBindPoint,
    temp: Temp,
    free: Vec<CommandBuffer>,
    discarded: Vec<CommandBuffer>,
    rpass_debug_marker_active: bool,
    end_of_pass_timer_query: Option<(QueryPool, u32)>,
    counters: Arc<HalCounters>,
}

Fields§

§raw: CommandPool§device: Arc<DeviceShared>§active: CommandBuffer

The current command buffer, if self is in the “recording” state.

If non-null, the buffer is in the Vulkan “recording” state.

§bind_point: PipelineBindPoint

What kind of pass we are currently within: compute or render.

§temp: Temp

Allocation recycling pool for this encoder.

§free: Vec<CommandBuffer>

A pool of available command buffers.

These are all in the Vulkan “initial” state.

§discarded: Vec<CommandBuffer>

A pool of discarded command buffers.

These could be in any Vulkan state except “pending”.

§rpass_debug_marker_active: bool

If this is true, the active renderpass enabled a debug span, and needs to be disabled on renderpass close.

§end_of_pass_timer_query: Option<(QueryPool, u32)>

If set, the end of the next render/compute pass will write a timestamp at the given pool & location.

§counters: Arc<HalCounters>

Implementations§

source§

impl CommandEncoder

source§

impl CommandEncoder

source

pub unsafe fn raw_handle(&self) -> CommandBuffer

§Safety
  • The command buffer handle must not be manually destroyed

Trait Implementations§

source§

impl CommandEncoder for CommandEncoder

source§

type A = Api

source§

unsafe fn begin_encoding(&mut self, label: Label<'_>) -> Result<(), DeviceError>

Begin encoding a new command buffer. Read more
source§

unsafe fn end_encoding(&mut self) -> Result<CommandBuffer, DeviceError>

Return a fresh CommandBuffer holding the recorded commands. Read more
source§

unsafe fn discard_encoding(&mut self)

Discard the command list under construction. Read more
source§

unsafe fn reset_all<I>(&mut self, cmd_bufs: I)
where I: Iterator<Item = CommandBuffer>,

Reclaim all resources belonging to this CommandEncoder. Read more
source§

unsafe fn transition_buffers<'a, T>(&mut self, barriers: T)
where T: Iterator<Item = BufferBarrier<'a, Buffer>>,

source§

unsafe fn transition_textures<'a, T>(&mut self, barriers: T)
where T: Iterator<Item = TextureBarrier<'a, Texture>>,

source§

unsafe fn clear_buffer(&mut self, buffer: &Buffer, range: MemoryRange)

source§

unsafe fn copy_buffer_to_buffer<T>( &mut self, src: &Buffer, dst: &Buffer, regions: T, )
where T: Iterator<Item = BufferCopy>,

source§

unsafe fn copy_texture_to_texture<T>( &mut self, src: &Texture, src_usage: TextureUses, dst: &Texture, regions: T, )
where T: Iterator<Item = TextureCopy>,

Copy from one texture to another. Works with a single array layer. Note: dst current usage has to be TextureUses::COPY_DST. Note: the copy extent is in physical size (rounded to the block size)
source§

unsafe fn copy_buffer_to_texture<T>( &mut self, src: &Buffer, dst: &Texture, regions: T, )
where T: Iterator<Item = BufferTextureCopy>,

Copy from buffer to texture. Works with a single array layer. Note: dst current usage has to be TextureUses::COPY_DST. Note: the copy extent is in physical size (rounded to the block size)
source§

unsafe fn copy_texture_to_buffer<T>( &mut self, src: &Texture, src_usage: TextureUses, dst: &Buffer, regions: T, )
where T: Iterator<Item = BufferTextureCopy>,

Copy from texture to buffer. Works with a single array layer. Note: the copy extent is in physical size (rounded to the block size)
source§

unsafe fn begin_query(&mut self, set: &QuerySet, index: u32)

Safety: Read more
source§

unsafe fn end_query(&mut self, set: &QuerySet, index: u32)

Safety: Read more
source§

unsafe fn write_timestamp(&mut self, set: &QuerySet, index: u32)

source§

unsafe fn reset_queries(&mut self, set: &QuerySet, range: Range<u32>)

source§

unsafe fn copy_query_results( &mut self, set: &QuerySet, range: Range<u32>, buffer: &Buffer, offset: BufferAddress, stride: BufferSize, )

source§

unsafe fn build_acceleration_structures<'a, T>( &mut self, descriptor_count: u32, descriptors: T, )

To get the required sizes for the buffer allocations use get_acceleration_structure_build_sizes per descriptor All buffers must be synchronized externally All buffer regions, which are written to may only be passed once per function call, with the exception of updates in the same descriptor. Consequences of this limitation: Read more
source§

unsafe fn place_acceleration_structure_barrier( &mut self, barrier: AccelerationStructureBarrier, )

source§

unsafe fn begin_render_pass( &mut self, desc: &RenderPassDescriptor<'_, QuerySet, TextureView>, )

Begin a new render pass, clearing all active bindings. Read more
source§

unsafe fn end_render_pass(&mut self)

End the current render pass. Read more
source§

unsafe fn set_bind_group( &mut self, layout: &PipelineLayout, index: u32, group: &BindGroup, dynamic_offsets: &[DynamicOffset], )

Sets the bind group at index to group. Read more
source§

unsafe fn set_push_constants( &mut self, layout: &PipelineLayout, stages: ShaderStages, offset_bytes: u32, data: &[u32], )

Sets a range in push constant data. Read more
source§

unsafe fn insert_debug_marker(&mut self, label: &str)

source§

unsafe fn begin_debug_marker(&mut self, group_label: &str)

source§

unsafe fn end_debug_marker(&mut self)

source§

unsafe fn set_render_pipeline(&mut self, pipeline: &RenderPipeline)

source§

unsafe fn set_index_buffer<'a>( &mut self, binding: BufferBinding<'a, Buffer>, format: IndexFormat, )

source§

unsafe fn set_vertex_buffer<'a>( &mut self, index: u32, binding: BufferBinding<'a, Buffer>, )

source§

unsafe fn set_viewport(&mut self, rect: &Rect<f32>, depth_range: Range<f32>)

source§

unsafe fn set_scissor_rect(&mut self, rect: &Rect<u32>)

source§

unsafe fn set_stencil_reference(&mut self, value: u32)

source§

unsafe fn set_blend_constants(&mut self, color: &[f32; 4])

source§

unsafe fn draw( &mut self, first_vertex: u32, vertex_count: u32, first_instance: u32, instance_count: u32, )

source§

unsafe fn draw_indexed( &mut self, first_index: u32, index_count: u32, base_vertex: i32, first_instance: u32, instance_count: u32, )

source§

unsafe fn draw_indirect( &mut self, buffer: &Buffer, offset: BufferAddress, draw_count: u32, )

source§

unsafe fn draw_indexed_indirect( &mut self, buffer: &Buffer, offset: BufferAddress, draw_count: u32, )

source§

unsafe fn draw_indirect_count( &mut self, buffer: &Buffer, offset: BufferAddress, count_buffer: &Buffer, count_offset: BufferAddress, max_count: u32, )

source§

unsafe fn draw_indexed_indirect_count( &mut self, buffer: &Buffer, offset: BufferAddress, count_buffer: &Buffer, count_offset: BufferAddress, max_count: u32, )

source§

unsafe fn begin_compute_pass( &mut self, desc: &ComputePassDescriptor<'_, QuerySet>, )

Begin a new compute pass, clearing all active bindings. Read more
source§

unsafe fn end_compute_pass(&mut self)

End the current compute pass. Read more
source§

unsafe fn set_compute_pipeline(&mut self, pipeline: &ComputePipeline)

source§

unsafe fn dispatch(&mut self, count: [u32; 3])

source§

unsafe fn dispatch_indirect(&mut self, buffer: &Buffer, offset: BufferAddress)

source§

impl Debug for CommandEncoder

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Drop for CommandEncoder

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl DynResource for CommandEncoder

source§

fn as_any(&self) -> &dyn Any

source§

fn as_any_mut(&mut self) -> &mut dyn Any

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Downcast<T> for T

source§

fn downcast(&self) -> &T

source§

impl<C> DynCommandEncoder for C

source§

unsafe fn begin_encoding( &mut self, label: Option<&str>, ) -> Result<(), DeviceError>

source§

unsafe fn discard_encoding(&mut self)

source§

unsafe fn end_encoding( &mut self, ) -> Result<Box<dyn DynCommandBuffer>, DeviceError>

source§

unsafe fn reset_all(&mut self, command_buffers: Vec<Box<dyn DynCommandBuffer>>)

source§

unsafe fn transition_buffers( &mut self, barriers: &[BufferBarrier<'_, dyn DynBuffer>], )

source§

unsafe fn transition_textures( &mut self, barriers: &[TextureBarrier<'_, dyn DynTexture>], )

source§

unsafe fn clear_buffer( &mut self, buffer: &(dyn DynBuffer + 'static), range: Range<u64>, )

source§

unsafe fn copy_buffer_to_buffer( &mut self, src: &(dyn DynBuffer + 'static), dst: &(dyn DynBuffer + 'static), regions: &[BufferCopy], )

source§

unsafe fn copy_texture_to_texture( &mut self, src: &(dyn DynTexture + 'static), src_usage: TextureUses, dst: &(dyn DynTexture + 'static), regions: &[TextureCopy], )

source§

unsafe fn copy_buffer_to_texture( &mut self, src: &(dyn DynBuffer + 'static), dst: &(dyn DynTexture + 'static), regions: &[BufferTextureCopy], )

source§

unsafe fn copy_texture_to_buffer( &mut self, src: &(dyn DynTexture + 'static), src_usage: TextureUses, dst: &(dyn DynBuffer + 'static), regions: &[BufferTextureCopy], )

source§

unsafe fn set_bind_group( &mut self, layout: &(dyn DynPipelineLayout + 'static), index: u32, group: Option<&(dyn DynBindGroup + 'static)>, dynamic_offsets: &[u32], )

source§

unsafe fn set_push_constants( &mut self, layout: &(dyn DynPipelineLayout + 'static), stages: ShaderStages, offset_bytes: u32, data: &[u32], )

source§

unsafe fn insert_debug_marker(&mut self, label: &str)

source§

unsafe fn begin_debug_marker(&mut self, group_label: &str)

source§

unsafe fn end_debug_marker(&mut self)

source§

unsafe fn begin_query(&mut self, set: &(dyn DynQuerySet + 'static), index: u32)

source§

unsafe fn end_query(&mut self, set: &(dyn DynQuerySet + 'static), index: u32)

source§

unsafe fn write_timestamp( &mut self, set: &(dyn DynQuerySet + 'static), index: u32, )

source§

unsafe fn reset_queries( &mut self, set: &(dyn DynQuerySet + 'static), range: Range<u32>, )

source§

unsafe fn copy_query_results( &mut self, set: &(dyn DynQuerySet + 'static), range: Range<u32>, buffer: &(dyn DynBuffer + 'static), offset: u64, stride: NonZero<u64>, )

source§

unsafe fn begin_render_pass( &mut self, desc: &RenderPassDescriptor<'_, dyn DynQuerySet, dyn DynTextureView>, )

source§

unsafe fn end_render_pass(&mut self)

source§

unsafe fn set_viewport(&mut self, rect: &Rect<f32>, depth_range: Range<f32>)

source§

unsafe fn set_scissor_rect(&mut self, rect: &Rect<u32>)

source§

unsafe fn set_stencil_reference(&mut self, value: u32)

source§

unsafe fn set_blend_constants(&mut self, color: &[f32; 4])

source§

unsafe fn draw( &mut self, first_vertex: u32, vertex_count: u32, first_instance: u32, instance_count: u32, )

source§

unsafe fn draw_indexed( &mut self, first_index: u32, index_count: u32, base_vertex: i32, first_instance: u32, instance_count: u32, )

source§

unsafe fn draw_indirect( &mut self, buffer: &(dyn DynBuffer + 'static), offset: u64, draw_count: u32, )

source§

unsafe fn draw_indexed_indirect( &mut self, buffer: &(dyn DynBuffer + 'static), offset: u64, draw_count: u32, )

source§

unsafe fn draw_indirect_count( &mut self, buffer: &(dyn DynBuffer + 'static), offset: u64, count_buffer: &(dyn DynBuffer + 'static), count_offset: u64, max_count: u32, )

source§

unsafe fn draw_indexed_indirect_count( &mut self, buffer: &(dyn DynBuffer + 'static), offset: u64, count_buffer: &(dyn DynBuffer + 'static), count_offset: u64, max_count: u32, )

source§

unsafe fn begin_compute_pass( &mut self, desc: &ComputePassDescriptor<'_, dyn DynQuerySet>, )

source§

unsafe fn end_compute_pass(&mut self)

source§

unsafe fn set_compute_pipeline( &mut self, pipeline: &(dyn DynComputePipeline + 'static), )

source§

unsafe fn dispatch(&mut self, count: [u32; 3])

source§

unsafe fn dispatch_indirect( &mut self, buffer: &(dyn DynBuffer + 'static), offset: u64, )

source§

unsafe fn set_render_pipeline( &mut self, pipeline: &(dyn DynRenderPipeline + 'static), )

source§

unsafe fn set_index_buffer<'a>( &mut self, binding: BufferBinding<'a, dyn DynBuffer>, format: IndexFormat, )

source§

unsafe fn set_vertex_buffer<'a>( &mut self, index: u32, binding: BufferBinding<'a, dyn DynBuffer>, )

source§

unsafe fn build_acceleration_structures<'a>( &mut self, descriptors: &'a [BuildAccelerationStructureDescriptor<'a, dyn DynBuffer, dyn DynAccelerationStructure>], )

source§

unsafe fn place_acceleration_structure_barrier( &mut self, barrier: AccelerationStructureBarrier, )

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> Upcast<T> for T

source§

fn upcast(&self) -> Option<&T>

source§

impl<T> WasmNotSend for T
where T: Send,

source§

impl<T> WasmNotSendSync for T

source§

impl<T> WasmNotSync for T
where T: Sync,