[][src]Struct vulkano::command_buffer::sys::UnsafeCommandBufferBuilder

pub struct UnsafeCommandBufferBuilder<P> { /* fields omitted */ }

Command buffer being built.

You can add commands to an UnsafeCommandBufferBuilder by using the AddCommand trait. The AddCommand<&Cmd> trait is implemented on the UnsafeCommandBufferBuilder for any Cmd that is a raw Vulkan command.

When you are finished adding commands, you can use the CommandBufferBuild trait to turn this builder into an UnsafeCommandBuffer.

Methods

impl<P> UnsafeCommandBufferBuilder<P>[src]

pub unsafe fn new<Pool, R, F, A>(
    pool: &Pool,
    kind: Kind<R, F>,
    flags: Flags
) -> Result<UnsafeCommandBufferBuilder<P>, OomError> where
    Pool: CommandPool<Builder = P, Alloc = A>,
    P: CommandPoolBuilderAlloc<Alloc = A>,
    A: CommandPoolAlloc,
    R: RenderPassAbstract,
    F: FramebufferAbstract
[src]

Creates a new builder.

Safety

Creating and destroying an unsafe command buffer is not unsafe per se, but the commands that you add to it are unchecked, do not have any synchronization, and are not kept alive.

In other words, it is your job to make sure that the commands you add are valid, that they don't use resources that have been destroyed, and that they do not introduce any race condition.

Note: Some checks are still made with debug_assert!. Do not expect to be able to submit invalid commands.

pub unsafe fn already_allocated<R, F>(
    alloc: P,
    kind: Kind<R, F>,
    flags: Flags
) -> Result<UnsafeCommandBufferBuilder<P>, OomError> where
    R: RenderPassAbstract,
    F: FramebufferAbstract,
    P: CommandPoolBuilderAlloc
[src]

Creates a new command buffer builder from an already-allocated command buffer.

Safety

See the new method.

The kind must match how the command buffer was allocated.

pub fn queue_family(&self) -> QueueFamily where
    P: CommandPoolBuilderAlloc
[src]

Returns the queue family of the builder.

pub fn build(self) -> Result<UnsafeCommandBuffer<P::Alloc>, OomError> where
    P: CommandPoolBuilderAlloc
[src]

Turns the builder into an actual command buffer.

pub unsafe fn begin_query(&mut self, query: UnsafeQuery, precise: bool)[src]

Calls vkCmdBeginQuery on the builder.

pub unsafe fn begin_render_pass<F: ?Sized, I>(
    &mut self,
    framebuffer: &F,
    subpass_contents: SubpassContents,
    clear_values: I
) where
    F: FramebufferAbstract,
    I: Iterator<Item = ClearValue>, 
[src]

Calls vkCmdBeginRenderPass on the builder.

pub unsafe fn bind_descriptor_sets<'s, Pl: ?Sized, S, I>(
    &mut self,
    graphics: bool,
    pipeline_layout: &Pl,
    first_binding: u32,
    sets: S,
    dynamic_offsets: I
) where
    Pl: PipelineLayoutAbstract,
    S: Iterator<Item = &'s UnsafeDescriptorSet>,
    I: Iterator<Item = u32>, 
[src]

Calls vkCmdBindDescriptorSets on the builder.

Does nothing if the list of descriptor sets is empty, as it would be a no-op and isn't a valid usage of the command anyway.

pub unsafe fn bind_index_buffer<B: ?Sized>(
    &mut self,
    buffer: &B,
    index_ty: IndexType
) where
    B: BufferAccess
[src]

Calls vkCmdBindIndexBuffer on the builder.

pub unsafe fn bind_pipeline_compute<Cp: ?Sized>(&mut self, pipeline: &Cp) where
    Cp: ComputePipelineAbstract
[src]

Calls vkCmdBindPipeline on the builder with a compute pipeline.

pub unsafe fn bind_pipeline_graphics<Gp: ?Sized>(&mut self, pipeline: &Gp) where
    Gp: GraphicsPipelineAbstract
[src]

Calls vkCmdBindPipeline on the builder with a graphics pipeline.

pub unsafe fn bind_vertex_buffers(
    &mut self,
    first_binding: u32,
    params: UnsafeCommandBufferBuilderBindVertexBuffer
)
[src]

Calls vkCmdBindVertexBuffers on the builder.

Does nothing if the list of buffers is empty, as it would be a no-op and isn't a valid usage of the command anyway.

pub unsafe fn copy_image<S: ?Sized, D: ?Sized, R>(
    &mut self,
    source: &S,
    source_layout: ImageLayout,
    destination: &D,
    destination_layout: ImageLayout,
    regions: R
) where
    S: ImageAccess,
    D: ImageAccess,
    R: Iterator<Item = UnsafeCommandBufferBuilderImageCopy>, 
[src]

Calls vkCmdCopyImage on the builder.

Does nothing if the list of regions is empty, as it would be a no-op and isn't a valid usage of the command anyway.

pub unsafe fn blit_image<S: ?Sized, D: ?Sized, R>(
    &mut self,
    source: &S,
    source_layout: ImageLayout,
    destination: &D,
    destination_layout: ImageLayout,
    regions: R,
    filter: Filter
) where
    S: ImageAccess,
    D: ImageAccess,
    R: Iterator<Item = UnsafeCommandBufferBuilderImageBlit>, 
[src]

Calls vkCmdBlitImage on the builder.

Does nothing if the list of regions is empty, as it would be a no-op and isn't a valid usage of the command anyway.

pub unsafe fn clear_color_image<I: ?Sized, R>(
    &mut self,
    image: &I,
    layout: ImageLayout,
    color: ClearValue,
    regions: R
) where
    I: ImageAccess,
    R: Iterator<Item = UnsafeCommandBufferBuilderColorImageClear>, 
[src]

Calls vkCmdClearColorImage on the builder.

Does nothing if the list of regions is empty, as it would be a no-op and isn't a valid usage of the command anyway.

pub unsafe fn copy_buffer<S: ?Sized, D: ?Sized, R>(
    &mut self,
    source: &S,
    destination: &D,
    regions: R
) where
    S: BufferAccess,
    D: BufferAccess,
    R: Iterator<Item = (usize, usize, usize)>, 
[src]

Calls vkCmdCopyBuffer on the builder.

Does nothing if the list of regions is empty, as it would be a no-op and isn't a valid usage of the command anyway.

pub unsafe fn copy_buffer_to_image<S: ?Sized, D: ?Sized, R>(
    &mut self,
    source: &S,
    destination: &D,
    destination_layout: ImageLayout,
    regions: R
) where
    S: BufferAccess,
    D: ImageAccess,
    R: Iterator<Item = UnsafeCommandBufferBuilderBufferImageCopy>, 
[src]

Calls vkCmdCopyBufferToImage on the builder.

Does nothing if the list of regions is empty, as it would be a no-op and isn't a valid usage of the command anyway.

pub unsafe fn copy_image_to_buffer<S: ?Sized, D: ?Sized, R>(
    &mut self,
    source: &S,
    source_layout: ImageLayout,
    destination: &D,
    regions: R
) where
    S: ImageAccess,
    D: BufferAccess,
    R: Iterator<Item = UnsafeCommandBufferBuilderBufferImageCopy>, 
[src]

Calls vkCmdCopyImageToBuffer on the builder.

Does nothing if the list of regions is empty, as it would be a no-op and isn't a valid usage of the command anyway.

pub unsafe fn copy_query_pool_results(
    &mut self,
    queries: UnsafeQueriesRange,
    destination: &dyn BufferAccess,
    stride: usize
)
[src]

Calls vkCmdCopyQueryPoolResults on the builder.

pub unsafe fn dispatch(&mut self, dimensions: [u32; 3])[src]

Calls vkCmdDispatch on the builder.

pub unsafe fn dispatch_indirect<B: ?Sized>(&mut self, buffer: &B) where
    B: BufferAccess
[src]

Calls vkCmdDispatchIndirect on the builder.

pub unsafe fn draw(
    &mut self,
    vertex_count: u32,
    instance_count: u32,
    first_vertex: u32,
    first_instance: u32
)
[src]

Calls vkCmdDraw on the builder.

pub unsafe fn draw_indexed(
    &mut self,
    index_count: u32,
    instance_count: u32,
    first_index: u32,
    vertex_offset: i32,
    first_instance: u32
)
[src]

Calls vkCmdDrawIndexed on the builder.

pub unsafe fn draw_indirect<B: ?Sized>(
    &mut self,
    buffer: &B,
    draw_count: u32,
    stride: u32
) where
    B: BufferAccess
[src]

Calls vkCmdDrawIndirect on the builder.

pub unsafe fn draw_indexed_indirect<B: ?Sized>(
    &mut self,
    buffer: &B,
    draw_count: u32,
    stride: u32
) where
    B: BufferAccess
[src]

Calls vkCmdDrawIndexedIndirect on the builder.

pub unsafe fn end_query(&mut self, query: UnsafeQuery)[src]

Calls vkCmdEndQuery on the builder.

pub unsafe fn end_render_pass(&mut self)[src]

Calls vkCmdEndRenderPass on the builder.

pub unsafe fn execute_commands(
    &mut self,
    cbs: UnsafeCommandBufferBuilderExecuteCommands
)
[src]

Calls vkCmdExecuteCommands on the builder.

Does nothing if the list of command buffers is empty, as it would be a no-op and isn't a valid usage of the command anyway.

pub unsafe fn fill_buffer<B: ?Sized>(&mut self, buffer: &B, data: u32) where
    B: BufferAccess
[src]

Calls vkCmdFillBuffer on the builder.

pub unsafe fn next_subpass(&mut self, subpass_contents: SubpassContents)[src]

Calls vkCmdNextSubpass on the builder.

pub unsafe fn pipeline_barrier(
    &mut self,
    command: &UnsafeCommandBufferBuilderPipelineBarrier
)
[src]

pub unsafe fn push_constants<Pl: ?Sized, D>(
    &mut self,
    pipeline_layout: &Pl,
    stages: ShaderStages,
    offset: u32,
    size: u32,
    data: &D
) where
    Pl: PipelineLayoutAbstract,
    D: ?Sized
[src]

Calls vkCmdPushConstants on the builder.

pub unsafe fn reset_event(&mut self, event: &Event, stages: PipelineStages)[src]

Calls vkCmdResetEvent on the builder.

pub unsafe fn reset_query_pool(&mut self, queries: UnsafeQueriesRange)[src]

Calls vkCmdResetQueryPool on the builder.

pub unsafe fn set_blend_constants(&mut self, constants: [f32; 4])[src]

Calls vkCmdSetBlendConstants on the builder.

pub unsafe fn set_depth_bias(
    &mut self,
    constant_factor: f32,
    clamp: f32,
    slope_factor: f32
)
[src]

Calls vkCmdSetDepthBias on the builder.

pub unsafe fn set_depth_bounds(&mut self, min: f32, max: f32)[src]

Calls vkCmdSetDepthBounds on the builder.

pub unsafe fn set_event(&mut self, event: &Event, stages: PipelineStages)[src]

Calls vkCmdSetEvent on the builder.

pub unsafe fn set_line_width(&mut self, line_width: f32)[src]

Calls vkCmdSetLineWidth on the builder.

pub unsafe fn set_stencil_compare_mask(
    &mut self,
    face_mask: StencilFaceFlags,
    compare_mask: u32
)
[src]

Calls vkCmdSetStencilCompareMask on the builder.

pub unsafe fn set_stencil_reference(
    &mut self,
    face_mask: StencilFaceFlags,
    reference: u32
)
[src]

Calls vkCmdSetStencilReference on the builder.

pub unsafe fn set_stencil_write_mask(
    &mut self,
    face_mask: StencilFaceFlags,
    write_mask: u32
)
[src]

Calls vkCmdSetStencilWriteMask on the builder.

pub unsafe fn set_scissor<I>(&mut self, first_scissor: u32, scissors: I) where
    I: Iterator<Item = Scissor>, 
[src]

Calls vkCmdSetScissor on the builder.

If the list is empty then the command is automatically ignored.

pub unsafe fn set_viewport<I>(&mut self, first_viewport: u32, viewports: I) where
    I: Iterator<Item = Viewport>, 
[src]

Calls vkCmdSetViewport on the builder.

If the list is empty then the command is automatically ignored.

pub unsafe fn update_buffer<B: ?Sized, D>(&mut self, buffer: &B, data: &D) where
    B: BufferAccess,
    D: ?Sized
[src]

Calls vkCmdUpdateBuffer on the builder.

pub unsafe fn write_timestamp(
    &mut self,
    query: UnsafeQuery,
    stages: PipelineStages
)
[src]

Calls vkCmdWriteTimestamp on the builder.

pub unsafe fn debug_marker_begin(&mut self, name: &CStr, color: [f32; 4])[src]

Calls vkCmdDebugMarkerBeginEXT on the builder.

Panics

Requires the VK_EXT_debug_marker device extension to be loaded.

Safety

The command pool that this command buffer was allocated from must support graphics or compute operations

pub unsafe fn debug_marker_end(&mut self)[src]

Calls vkCmdDebugMarkerEndEXT on the builder.

Panics

Requires the VK_EXT_debug_marker device extension to be loaded.

Safety

There must be an outstanding vkCmdDebugMarkerBeginEXT command prior to the vkCmdDebugMarkerEndEXT on the queue that this command buffer is submitted to. If the matching vkCmdDebugMarkerBeginEXT command was in a secondary command buffer, the vkCmdDebugMarkerEndEXT must be in the same command buffer.

pub unsafe fn debug_marker_insert(&mut self, name: &CStr, color: [f32; 4])[src]

Calls vkCmdDebugMarkerInsertEXT on the builder.

Panics

Requires the VK_EXT_debug_marker device extension to be loaded.

Safety

The command pool that this command buffer was allocated from must support graphics or compute operations

Trait Implementations

impl<P> DeviceOwned for UnsafeCommandBufferBuilder<P>[src]

impl<P> VulkanObject for UnsafeCommandBufferBuilder<P>[src]

type Object = CommandBuffer

The type of the object.

impl<P> Debug for UnsafeCommandBufferBuilder<P>[src]

Auto Trait Implementations

impl<P> Send for UnsafeCommandBufferBuilder<P> where
    P: Send

impl<P> Unpin for UnsafeCommandBufferBuilder<P> where
    P: Unpin

impl<P> Sync for UnsafeCommandBufferBuilder<P> where
    P: Sync

impl<P> UnwindSafe for UnsafeCommandBufferBuilder<P> where
    P: UnwindSafe

impl<P> RefUnwindSafe for UnsafeCommandBufferBuilder<P> where
    P: RefUnwindSafe

Blanket Implementations

impl<T> DeviceOwned for T where
    T: Deref,
    <T as Deref>::Target: DeviceOwned
[src]

impl<T> Content for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]