Struct vulkano::command_buffer::AutoCommandBufferBuilder[][src]

pub struct AutoCommandBufferBuilder<L, P = StandardCommandPoolBuilder> { /* fields omitted */ }
Expand description

Note that command buffers allocated from the default command pool (Arc<StandardCommandPool>) don’t implement the Send and Sync traits. If you use this pool, then the AutoCommandBufferBuilder will not implement Send and Sync either. Once a command buffer is built, however, it does implement Send and Sync.

Implementations

Starts building a primary command buffer.

Starts building a secondary compute command buffer.

Same as secondary_compute, but allows specifying how queries are being inherited.

Starts building a secondary graphics command buffer.

Same as secondary_graphics, but allows specifying how queries are being inherited.

Builds the command buffer.

Builds the command buffer.

Adds a command that copies an image to another.

Copy operations have several restrictions:

  • Copy operations are only allowed on queue families that support transfer, graphics, or compute operations.
  • The number of samples in the source and destination images must be equal.
  • The size of the uncompressed element format of the source image must be equal to the compressed element format of the destination.
  • If you copy between depth, stencil or depth-stencil images, the format of both images must match exactly.
  • For two-dimensional images, the Z coordinate must be 0 for the image offsets and 1 for the extent. Same for the Y coordinate for one-dimensional images.
  • For non-array images, the base array layer must be 0 and the number of layers must be 1.

If layer_count is greater than 1, the copy will happen between each individual layer as if they were separate images.

Panic

  • Panics if the source or the destination was not created with device.

Adds a command that blits an image to another.

A blit is similar to an image copy operation, except that the portion of the image that is transferred can be resized. You choose an area of the source and an area of the destination, and the implementation will resize the area of the source so that it matches the size of the area of the destination before writing it.

Blit operations have several restrictions:

  • Blit operations are only allowed on queue families that support graphics operations.
  • The format of the source and destination images must support blit operations, which depends on the Vulkan implementation. Vulkan guarantees that some specific formats must always be supported. See tables 52 to 61 of the specifications.
  • Only single-sampled images are allowed.
  • You can only blit between two images whose formats belong to the same type. The types are: floating-point, signed integers, unsigned integers, depth-stencil.
  • If you blit between depth, stencil or depth-stencil images, the format of both images must match exactly.
  • If you blit between depth, stencil or depth-stencil images, only the Nearest filter is allowed.
  • For two-dimensional images, the Z coordinate must be 0 for the top-left offset and 1 for the bottom-right offset. Same for the Y coordinate for one-dimensional images.
  • For non-array images, the base array layer must be 0 and the number of layers must be 1.

If layer_count is greater than 1, the blit will happen between each individual layer as if they were separate images.

Panic

  • Panics if the source or the destination was not created with device.

Adds a command that clears all the layers and mipmap levels of a color image with a specific value.

Panic

Panics if color is not a color value.

Adds a command that clears a color image with a specific value.

Panic

  • Panics if color is not a color value.

Adds a command that copies from a buffer to another.

This command will copy from the source to the destination. If their size is not equal, then the amount of data copied is equal to the smallest of the two.

Adds a command that copies a range from the source to the destination buffer. Panics if out of bounds.

Adds a command that copies from a buffer to an image.

Adds a command that copies from a buffer to an image.

Adds a command that copies from an image to a buffer.

Adds a command that copies from an image to a buffer.

Open a command buffer debug label region.

Note: you need to enable VK_EXT_debug_utils extension when creating an instance.

Close a command buffer label region.

Note: you need to open a command buffer label region first with debug_marker_begin. Note: you need to enable VK_EXT_debug_utils extension when creating an instance.

Insert a label into a command buffer.

Note: you need to enable VK_EXT_debug_utils extension when creating an instance.

Perform a single compute operation using a compute pipeline.

Perform multiple compute operations using a compute pipeline. One dispatch is performed for each vulkano::command_buffer::DispatchIndirectCommand struct in indirect_buffer.

Perform a single draw operation using a graphics pipeline.

vertex_buffer is a set of vertex and/or instance buffers used to provide input.

All data in vertex_buffer is used for the draw operation. To use only some data in the buffer, wrap it in a vulkano::buffer::BufferSlice.

Perform multiple draw operations using a graphics pipeline.

One draw is performed for each DrawIndirectCommand struct in indirect_buffer. The maximum number of draw commands in the buffer is limited by the max_draw_indirect_count limit. This limit is 1 unless the multi_draw_indirect feature has been enabled.

vertex_buffer is a set of vertex and/or instance buffers used to provide input. It is used for every draw operation.

All data in vertex_buffer is used for every draw operation. To use only some data in the buffer, wrap it in a vulkano::buffer::BufferSlice.

Perform a single draw operation using a graphics pipeline, using an index buffer.

vertex_buffer is a set of vertex and/or instance buffers used to provide input. index_buffer is a buffer containing indices into the vertex buffer that should be processed in order.

All data in vertex_buffer and index_buffer is used for the draw operation. To use only some data in the buffer, wrap it in a vulkano::buffer::BufferSlice.

Perform multiple draw operations using a graphics pipeline, using an index buffer.

One draw is performed for each DrawIndirectCommand struct in indirect_buffer. The maximum number of draw commands in the buffer is limited by the max_draw_indirect_count limit. This limit is 1 unless the multi_draw_indirect feature has been enabled.

vertex_buffer is a set of vertex and/or instance buffers used to provide input. index_buffer is a buffer containing indices into the vertex buffer that should be processed in order.

All data in vertex_buffer and index_buffer is used for every draw operation. To use only some data in the buffer, wrap it in a vulkano::buffer::BufferSlice.

Adds a command that writes the content of a buffer.

This function is similar to the memset function in C. The data parameter is a number that will be repeatedly written through the entire buffer.

Note: This function is technically safe because buffers can only contain integers or floating point numbers, which are always valid whatever their memory representation is. But unless your buffer actually contains only 32-bits integers, you are encouraged to use this function only for zeroing the content of a buffer by passing 0 for the data.

Adds a command that writes data to a buffer.

If data is larger than the buffer, only the part of data that fits is written. If the buffer is larger than data, only the start of the buffer is written.

Adds a command that begins a query.

The query will be active until end_query is called for the same query.

Safety

The query must be unavailable, ensured by calling reset_query_pool.

Adds a command that ends an active query.

Adds a command that writes a timestamp to a timestamp query.

Safety

The query must be unavailable, ensured by calling reset_query_pool.

Adds a command that copies the results of a range of queries to a buffer on the GPU.

query_pool.ty().result_size() elements will be written for each query in the range, plus 1 extra element per query if QueryResultFlags::with_availability is enabled. The provided buffer must be large enough to hold the data.

See also get_results.

Adds a command to reset a range of queries on a query pool.

The affected queries will be marked as “unavailable” after this command runs, and will no longer return any results. They will be ready to have new results recorded for them.

Safety

The queries in the specified range must not be active in another command buffer.

Commands that can only be executed on primary command buffers

Adds a command that enters a render pass.

If contents is SubpassContents::SecondaryCommandBuffers, then you will only be able to add secondary command buffers while you’re inside the first subpass of the render pass. If it is SubpassContents::Inline, you will only be able to add inline draw commands and not secondary command buffers.

C must contain exactly one clear value for each attachment in the framebuffer.

You must call this before you can add draw commands.

Adds a command that ends the current render pass.

This must be called after you went through all the subpasses and before you can build the command buffer or add further commands.

Adds a command that executes a secondary command buffer.

If the flags that command_buffer was created with are more restrictive than those of self, then self will be restricted to match. E.g. executing a secondary command buffer with Flags::OneTimeSubmit will set self’s flags to Flags::OneTimeSubmit also.

Adds a command that multiple secondary command buffers in a vector.

This requires that the secondary command buffers do not have resource conflicts; an error will be returned if there are any. Use execute_commands if you want to ensure that resource conflicts are automatically resolved.

Adds a command that jumps to the next subpass of the current render pass.

Trait Implementations

Returns the device that owns Self.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Builds a pointer to this type from a raw pointer.

Returns true if the size is suitable to store a type like this.

Returns the size of an individual element.

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.