pub struct CommandPool { /* private fields */ }
Expand description

Represents a Vulkan command pool.

A command pool is always tied to a specific queue family. Command buffers allocated from a pool can only be executed on the corresponding queue family.

This struct doesn’t implement the Sync trait because Vulkan command pools are not thread safe. In other words, you can only use a pool from one thread at a time.

Implementations§

source§

impl CommandPool

source

pub fn new( device: Arc<Device>, create_info: CommandPoolCreateInfo ) -> Result<CommandPool, Validated<VulkanError>>

Creates a new CommandPool.

source

pub unsafe fn from_handle( device: Arc<Device>, handle: CommandPool, create_info: CommandPoolCreateInfo ) -> CommandPool

Creates a new CommandPool from a raw object handle.

Safety
  • handle must be a valid Vulkan object handle created from device.
  • create_info must match the info used to create the object.
source

pub fn flags(&self) -> CommandPoolCreateFlags

Returns the flags that the command pool was created with.

source

pub fn queue_family_index(&self) -> u32

Returns the queue family on which command buffers of this pool can be executed.

source

pub unsafe fn reset( &self, flags: CommandPoolResetFlags ) -> Result<(), Validated<VulkanError>>

Resets the pool, which resets all the command buffers that were allocated from it.

Safety
  • The command buffers allocated from this pool must not be in the pending state.
source

pub fn allocate_command_buffers( &self, allocate_info: CommandBufferAllocateInfo ) -> Result<impl ExactSizeIterator<Item = CommandPoolAlloc>, VulkanError>

Allocates command buffers.

source

pub unsafe fn free_command_buffers( &self, command_buffers: impl IntoIterator<Item = CommandPoolAlloc> ) -> Result<(), Box<ValidationError>>

Frees individual command buffers.

Safety
  • The command_buffers must have been allocated from this pool.
  • The command_buffers must not be in the pending state.
source

pub fn trim(&self) -> Result<(), Box<ValidationError>>

Trims a command pool, which recycles unused internal memory from the command pool back to the system.

Command buffers allocated from the pool are not affected by trimming.

This function is supported only if the khr_maintenance1 extension is enabled on the device. Otherwise an error is returned. Since this operation is purely an optimization it is legitimate to call this function and simply ignore any possible error.

Trait Implementations§

source§

impl Debug for CommandPool

source§

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

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

impl DeviceOwned for CommandPool

source§

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

Returns the device that owns self.
source§

impl Drop for CommandPool

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl Hash for CommandPool

source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for CommandPool

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl VulkanObject for CommandPool

§

type Handle = CommandPool

The type of the object.
source§

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

Returns the raw Vulkan handle of the object.
source§

impl Eq for CommandPool

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> DeviceOwnedVulkanObject for Twhere T: DeviceOwned + VulkanObject,

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 Twhere 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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.