Struct RecordingCommandBuffer

Source
pub struct RecordingCommandBuffer { /* private fields */ }
Expand description

A command buffer in the recording state.

This type corresponds directly to a VkCommandBuffer after it has been allocated and started recording. It doesn’t keep track of synchronization or resource lifetimes. As such, all recorded commands are unsafe and it is the user’s duty to make sure that data races are protected against using manual synchronization and all resources used by the recorded commands outlive the command buffer.

Note that command buffers in the recording state don’t implement the Send and Sync traits. Once a command buffer has finished recording, however, it does implement Send and Sync.

Implementations§

Source§

impl RecordingCommandBuffer

Source

pub unsafe fn build_acceleration_structure( &mut self, info: &AccelerationStructureBuildGeometryInfo, build_range_infos: &[AccelerationStructureBuildRangeInfo], ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn build_acceleration_structure_indirect( &mut self, info: &AccelerationStructureBuildGeometryInfo, indirect_buffer: &Subbuffer<[u8]>, stride: u32, max_primitive_counts: &[u32], ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn copy_acceleration_structure( &mut self, info: &CopyAccelerationStructureInfo, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn copy_acceleration_structure_to_memory( &mut self, info: &CopyAccelerationStructureToMemoryInfo, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn copy_memory_to_acceleration_structure( &mut self, info: &CopyMemoryToAccelerationStructureInfo, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn write_acceleration_structures_properties( &mut self, acceleration_structures: &[Arc<AccelerationStructure>], query_pool: &QueryPool, first_query: u32, ) -> Result<&mut Self, Box<ValidationError>>

Source§

impl RecordingCommandBuffer

Source

pub unsafe fn bind_descriptor_sets( &mut self, pipeline_bind_point: PipelineBindPoint, pipeline_layout: &PipelineLayout, first_set: u32, descriptor_sets: &[&RawDescriptorSet], dynamic_offsets: &[u32], ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn bind_index_buffer( &mut self, index_buffer: &IndexBuffer, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn bind_pipeline_compute( &mut self, pipeline: &ComputePipeline, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn bind_pipeline_graphics( &mut self, pipeline: &GraphicsPipeline, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn bind_pipeline_ray_tracing( &mut self, pipeline: &RayTracingPipeline, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn bind_vertex_buffers( &mut self, first_binding: u32, vertex_buffers: &[Subbuffer<[u8]>], ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn push_constants<Pc>( &mut self, pipeline_layout: &PipelineLayout, offset: u32, push_constants: &Pc, ) -> Result<&mut Self, Box<ValidationError>>
where Pc: BufferContents,

Source

pub unsafe fn push_descriptor_set( &mut self, pipeline_bind_point: PipelineBindPoint, pipeline_layout: &PipelineLayout, set_num: u32, descriptor_writes: &[WriteDescriptorSet], ) -> Result<&mut Self, Box<ValidationError>>

Source§

impl RecordingCommandBuffer

Source

pub unsafe fn clear_color_image( &mut self, clear_info: &ClearColorImageInfo, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn clear_depth_stencil_image( &mut self, clear_info: &ClearDepthStencilImageInfo, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn fill_buffer( &mut self, dst_buffer: &Subbuffer<[u32]>, data: u32, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn update_buffer<D>( &mut self, dst_buffer: &Subbuffer<D>, data: &D, ) -> Result<&mut Self, Box<ValidationError>>
where D: BufferContents + ?Sized,

Source§

impl RecordingCommandBuffer

Source

pub unsafe fn copy_buffer( &mut self, copy_buffer_info: &CopyBufferInfo, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn copy_image( &mut self, copy_image_info: &CopyImageInfo, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn copy_buffer_to_image( &mut self, copy_buffer_to_image_info: &CopyBufferToImageInfo, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn copy_image_to_buffer( &mut self, copy_image_to_buffer_info: &CopyImageToBufferInfo, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn blit_image( &mut self, blit_image_info: &BlitImageInfo, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn resolve_image( &mut self, resolve_image_info: &ResolveImageInfo, ) -> Result<&mut Self, Box<ValidationError>>

Source§

impl RecordingCommandBuffer

Source

pub unsafe fn begin_debug_utils_label( &mut self, label_info: &DebugUtilsLabel, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn end_debug_utils_label( &mut self, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn insert_debug_utils_label( &mut self, label_info: &DebugUtilsLabel, ) -> Result<&mut Self, Box<ValidationError>>

Source§

impl RecordingCommandBuffer

Source

pub unsafe fn set_blend_constants( &mut self, constants: [f32; 4], ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_color_write_enable( &mut self, enables: &[bool], ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_cull_mode( &mut self, cull_mode: CullMode, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_depth_bias( &mut self, constant_factor: f32, clamp: f32, slope_factor: f32, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_depth_bias_enable( &mut self, enable: bool, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_depth_bounds( &mut self, bounds: RangeInclusive<f32>, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_depth_bounds_test_enable( &mut self, enable: bool, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_depth_compare_op( &mut self, compare_op: CompareOp, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_depth_test_enable( &mut self, enable: bool, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_depth_write_enable( &mut self, enable: bool, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_discard_rectangle( &mut self, first_rectangle: u32, rectangles: &[Scissor], ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_front_face( &mut self, face: FrontFace, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_line_stipple( &mut self, factor: u32, pattern: u16, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_line_width( &mut self, line_width: f32, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_logic_op( &mut self, logic_op: LogicOp, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_patch_control_points( &mut self, num: u32, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_primitive_restart_enable( &mut self, enable: bool, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_primitive_topology( &mut self, topology: PrimitiveTopology, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_rasterizer_discard_enable( &mut self, enable: bool, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_scissor( &mut self, first_scissor: u32, scissors: &[Scissor], ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_scissor_with_count( &mut self, scissors: &[Scissor], ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_stencil_compare_mask( &mut self, faces: StencilFaces, compare_mask: u32, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_stencil_op( &mut self, faces: StencilFaces, fail_op: StencilOp, pass_op: StencilOp, depth_fail_op: StencilOp, compare_op: CompareOp, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_stencil_reference( &mut self, faces: StencilFaces, reference: u32, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_stencil_test_enable( &mut self, enable: bool, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_stencil_write_mask( &mut self, faces: StencilFaces, write_mask: u32, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_vertex_input( &mut self, vertex_input_state: &VertexInputState, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_viewport( &mut self, first_viewport: u32, viewports: &[Viewport], ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_viewport_with_count( &mut self, viewports: &[Viewport], ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_conservative_rasterization_mode( &mut self, conservative_rasterization_mode: ConservativeRasterizationMode, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_extra_primitive_overestimation_size( &mut self, extra_primitive_overestimation_size: f32, ) -> Result<&mut Self, Box<ValidationError>>

Source§

impl RecordingCommandBuffer

Source

pub unsafe fn dispatch( &mut self, group_counts: [u32; 3], ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn dispatch_indirect( &mut self, indirect_buffer: &Subbuffer<[DispatchIndirectCommand]>, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn draw( &mut self, vertex_count: u32, instance_count: u32, first_vertex: u32, first_instance: u32, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn draw_indirect( &mut self, indirect_buffer: &Subbuffer<[DrawIndirectCommand]>, draw_count: u32, stride: u32, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn draw_indirect_count( &mut self, indirect_buffer: &Subbuffer<[DrawIndirectCommand]>, count_buffer: &Subbuffer<u32>, max_draw_count: u32, stride: u32, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn draw_indexed( &mut self, index_count: u32, instance_count: u32, first_index: u32, vertex_offset: i32, first_instance: u32, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn draw_indexed_indirect( &mut self, indirect_buffer: &Subbuffer<[DrawIndexedIndirectCommand]>, draw_count: u32, stride: u32, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn draw_indexed_indirect_count( &mut self, indirect_buffer: &Subbuffer<[DrawIndexedIndirectCommand]>, count_buffer: &Subbuffer<u32>, max_draw_count: u32, stride: u32, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn draw_mesh_tasks( &mut self, group_counts: [u32; 3], ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn draw_mesh_tasks_indirect( &mut self, indirect_buffer: &Subbuffer<[DrawMeshTasksIndirectCommand]>, draw_count: u32, stride: u32, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn draw_mesh_tasks_indirect_count( &mut self, indirect_buffer: &Subbuffer<[DrawMeshTasksIndirectCommand]>, count_buffer: &Subbuffer<u32>, max_draw_count: u32, stride: u32, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn trace_rays( &mut self, shader_binding_table_addresses: &ShaderBindingTableAddresses, dimensions: [u32; 3], ) -> Result<&mut Self, Box<ValidationError>>

Source§

impl RecordingCommandBuffer

Source

pub unsafe fn begin_query( &mut self, query_pool: &QueryPool, query: u32, flags: QueryControlFlags, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn end_query( &mut self, query_pool: &QueryPool, query: u32, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn write_timestamp( &mut self, query_pool: &QueryPool, query: u32, stage: PipelineStage, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn copy_query_pool_results<T>( &mut self, query_pool: &QueryPool, queries: Range<u32>, destination: &Subbuffer<[T]>, flags: QueryResultFlags, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn reset_query_pool( &mut self, query_pool: &QueryPool, queries: Range<u32>, ) -> Result<&mut Self, Box<ValidationError>>

Source§

impl RecordingCommandBuffer

Source

pub unsafe fn begin_render_pass( &mut self, render_pass_begin_info: &RenderPassBeginInfo, subpass_begin_info: &SubpassBeginInfo, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn next_subpass( &mut self, subpass_end_info: &SubpassEndInfo, subpass_begin_info: &SubpassBeginInfo, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn end_render_pass( &mut self, subpass_end_info: &SubpassEndInfo, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn begin_rendering( &mut self, rendering_info: &RenderingInfo, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn end_rendering( &mut self, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn clear_attachments( &mut self, attachments: &[ClearAttachment], rects: &[ClearRect], ) -> Result<&mut Self, Box<ValidationError>>

Source§

impl RecordingCommandBuffer

Source

pub unsafe fn execute_commands( &mut self, command_buffers: &[&CommandBuffer], ) -> Result<&mut Self, Box<ValidationError>>

Source§

impl RecordingCommandBuffer

Source

pub unsafe fn pipeline_barrier( &mut self, dependency_info: &DependencyInfo, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn set_event( &mut self, event: &Event, dependency_info: &DependencyInfo, ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn wait_events( &mut self, events: &[(Arc<Event>, DependencyInfo)], ) -> Result<&mut Self, Box<ValidationError>>

Source

pub unsafe fn reset_event( &mut self, event: &Event, stages: PipelineStages, ) -> Result<&mut Self, Box<ValidationError>>

Source§

impl RecordingCommandBuffer

Source

pub fn new( allocator: Arc<dyn CommandBufferAllocator>, queue_family_index: u32, level: CommandBufferLevel, begin_info: CommandBufferBeginInfo, ) -> Result<Self, Validated<VulkanError>>

Allocates and begins recording a new command buffer.

Source

pub unsafe fn end(self) -> Result<CommandBuffer, VulkanError>

Ends the recording, returning a command buffer which can be submitted.

Source

pub fn queue_family_index(&self) -> u32

Returns the queue family index that this command buffer was created for.

Source

pub fn level(&self) -> CommandBufferLevel

Returns the level of the command buffer.

Source

pub fn usage(&self) -> CommandBufferUsage

Returns the usage that the command buffer was created with.

Source

pub fn inheritance_info(&self) -> Option<&CommandBufferInheritanceInfo>

Returns the inheritance info of the command buffer, if it is a secondary command buffer.

Trait Implementations§

Source§

impl Debug for RecordingCommandBuffer

Source§

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

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

impl DeviceOwned for RecordingCommandBuffer

Source§

fn device(&self) -> &Arc<Device>

Returns the device that owns self.
Source§

impl Drop for RecordingCommandBuffer

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl VulkanObject for RecordingCommandBuffer

Source§

type Handle = CommandBuffer

The type of the object.
Source§

fn handle(&self) -> Self::Handle

Returns the raw Vulkan handle of the object.

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> DeviceOwnedVulkanObject for T

Source§

fn set_debug_utils_object_name( &self, object_name: Option<&str>, ) -> Result<(), VulkanError>

Assigns a human-readable name to the object for debugging purposes. Read more
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.