[−][src]Struct vulkano::command_buffer::sys::UnsafeCommandBufferBuilder
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]
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,
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]
alloc: P,
kind: Kind<R, F>,
flags: Flags
) -> Result<UnsafeCommandBufferBuilder<P>, OomError> where
R: RenderPassAbstract,
F: FramebufferAbstract,
P: CommandPoolBuilderAlloc,
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]
P: CommandPoolBuilderAlloc,
Returns the queue family of the builder.
pub fn build(self) -> Result<UnsafeCommandBuffer<P::Alloc>, OomError> where
P: CommandPoolBuilderAlloc,
[src]
P: CommandPoolBuilderAlloc,
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]
&mut self,
framebuffer: &F,
subpass_contents: SubpassContents,
clear_values: I
) where
F: FramebufferAbstract,
I: Iterator<Item = ClearValue>,
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]
&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>,
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]
&mut self,
buffer: &B,
index_ty: IndexType
) where
B: BufferAccess,
Calls vkCmdBindIndexBuffer
on the builder.
pub unsafe fn bind_pipeline_compute<Cp: ?Sized>(&mut self, pipeline: &Cp) where
Cp: ComputePipelineAbstract,
[src]
Cp: ComputePipelineAbstract,
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]
Gp: GraphicsPipelineAbstract,
Calls vkCmdBindPipeline
on the builder with a graphics pipeline.
pub unsafe fn bind_vertex_buffers(
&mut self,
first_binding: u32,
params: UnsafeCommandBufferBuilderBindVertexBuffer
)
[src]
&mut self,
first_binding: u32,
params: UnsafeCommandBufferBuilderBindVertexBuffer
)
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]
&mut self,
source: &S,
source_layout: ImageLayout,
destination: &D,
destination_layout: ImageLayout,
regions: R
) where
S: ImageAccess,
D: ImageAccess,
R: Iterator<Item = UnsafeCommandBufferBuilderImageCopy>,
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]
&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>,
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]
&mut self,
image: &I,
layout: ImageLayout,
color: ClearValue,
regions: R
) where
I: ImageAccess,
R: Iterator<Item = UnsafeCommandBufferBuilderColorImageClear>,
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]
&mut self,
source: &S,
destination: &D,
regions: R
) where
S: BufferAccess,
D: BufferAccess,
R: Iterator<Item = (usize, usize, usize)>,
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]
&mut self,
source: &S,
destination: &D,
destination_layout: ImageLayout,
regions: R
) where
S: BufferAccess,
D: ImageAccess,
R: Iterator<Item = UnsafeCommandBufferBuilderBufferImageCopy>,
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]
&mut self,
source: &S,
source_layout: ImageLayout,
destination: &D,
regions: R
) where
S: ImageAccess,
D: BufferAccess,
R: Iterator<Item = UnsafeCommandBufferBuilderBufferImageCopy>,
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]
&mut self,
queries: UnsafeQueriesRange,
destination: &dyn BufferAccess,
stride: usize
)
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]
B: BufferAccess,
Calls vkCmdDispatchIndirect
on the builder.
pub unsafe fn draw(
&mut self,
vertex_count: u32,
instance_count: u32,
first_vertex: u32,
first_instance: u32
)
[src]
&mut self,
vertex_count: u32,
instance_count: u32,
first_vertex: u32,
first_instance: u32
)
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]
&mut self,
index_count: u32,
instance_count: u32,
first_index: u32,
vertex_offset: i32,
first_instance: u32
)
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]
&mut self,
buffer: &B,
draw_count: u32,
stride: u32
) where
B: BufferAccess,
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]
&mut self,
buffer: &B,
draw_count: u32,
stride: u32
) where
B: BufferAccess,
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]
&mut self,
cbs: UnsafeCommandBufferBuilderExecuteCommands
)
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]
B: BufferAccess,
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]
&mut self,
command: &UnsafeCommandBufferBuilderPipelineBarrier
)
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]
&mut self,
pipeline_layout: &Pl,
stages: ShaderStages,
offset: u32,
size: u32,
data: &D
) where
Pl: PipelineLayoutAbstract,
D: ?Sized,
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]
&mut self,
constant_factor: f32,
clamp: f32,
slope_factor: f32
)
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]
&mut self,
face_mask: StencilFaceFlags,
compare_mask: u32
)
Calls vkCmdSetStencilCompareMask
on the builder.
pub unsafe fn set_stencil_reference(
&mut self,
face_mask: StencilFaceFlags,
reference: u32
)
[src]
&mut self,
face_mask: StencilFaceFlags,
reference: u32
)
Calls vkCmdSetStencilReference
on the builder.
pub unsafe fn set_stencil_write_mask(
&mut self,
face_mask: StencilFaceFlags,
write_mask: u32
)
[src]
&mut self,
face_mask: StencilFaceFlags,
write_mask: u32
)
Calls vkCmdSetStencilWriteMask
on the builder.
pub unsafe fn set_scissor<I>(&mut self, first_scissor: u32, scissors: I) where
I: Iterator<Item = Scissor>,
[src]
I: Iterator<Item = Scissor>,
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]
I: Iterator<Item = Viewport>,
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]
B: BufferAccess,
D: ?Sized,
Calls vkCmdUpdateBuffer
on the builder.
pub unsafe fn write_timestamp(
&mut self,
query: UnsafeQuery,
stages: PipelineStages
)
[src]
&mut self,
query: UnsafeQuery,
stages: PipelineStages
)
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]
Trait Implementations
impl<P> DeviceOwned for UnsafeCommandBufferBuilder<P>
[src]
impl<P> VulkanObject for UnsafeCommandBufferBuilder<P>
[src]
type Object = CommandBuffer
The type of the object.
const TYPE: DebugReportObjectTypeEXT
[src]
fn internal_object(&self) -> CommandBuffer
[src]
impl<P> Debug for UnsafeCommandBufferBuilder<P>
[src]
Auto Trait Implementations
impl<P> Send for UnsafeCommandBufferBuilder<P> where
P: Send,
P: Send,
impl<P> Unpin for UnsafeCommandBufferBuilder<P> where
P: Unpin,
P: Unpin,
impl<P> Sync for UnsafeCommandBufferBuilder<P> where
P: Sync,
P: Sync,
impl<P> UnwindSafe for UnsafeCommandBufferBuilder<P> where
P: UnwindSafe,
P: UnwindSafe,
impl<P> RefUnwindSafe for UnsafeCommandBufferBuilder<P> where
P: RefUnwindSafe,
P: RefUnwindSafe,
Blanket Implementations
impl<T> DeviceOwned for T where
T: Deref,
<T as Deref>::Target: DeviceOwned,
[src]
T: Deref,
<T as Deref>::Target: DeviceOwned,
impl<T> Content for T
[src]
fn ref_from_ptr(*mut c_void, usize) -> Option<*mut T>
[src]
fn is_size_suitable(usize) -> bool
[src]
fn indiv_size() -> usize
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From<T> for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,