[−][src]Struct vulkano::descriptor::descriptor_set::UnsafeDescriptorPool
Pool from which descriptor sets are allocated from.
A pool has a maximum number of descriptor sets and a maximum number of descriptors (one value per descriptor type) it can allocate.
Implementations
impl UnsafeDescriptorPool
[src]
pub fn new(
device: Arc<Device>,
count: &DescriptorsCount,
max_sets: u32,
free_descriptor_set_bit: bool
) -> Result<UnsafeDescriptorPool, OomError>
[src]
device: Arc<Device>,
count: &DescriptorsCount,
max_sets: u32,
free_descriptor_set_bit: bool
) -> Result<UnsafeDescriptorPool, OomError>
Initializes a new pool.
Initializes a pool whose capacity is given by count
and max_sets
. At most count
descriptors or max_sets
descriptor sets can be allocated at once with this pool.
If free_descriptor_set_bit
is true
, then individual descriptor sets can be free'd from
the pool. Otherwise you must reset or destroy the whole pool at once.
Panic
- Panics if all the descriptors count are 0.
- Panics if
max_sets
is 0.
pub unsafe fn alloc<'l, I>(
&mut self,
layouts: I
) -> Result<UnsafeDescriptorPoolAllocIter, DescriptorPoolAllocError> where
I: IntoIterator<Item = &'l UnsafeDescriptorSetLayout>,
[src]
&mut self,
layouts: I
) -> Result<UnsafeDescriptorPoolAllocIter, DescriptorPoolAllocError> where
I: IntoIterator<Item = &'l UnsafeDescriptorSetLayout>,
Allocates descriptor sets from the pool, one for each layout. Returns an iterator to the allocated sets, or an error.
The FragmentedPool
errors often can't be prevented. If the function returns this error,
you should just create a new pool.
Panic
- Panics if one of the layouts wasn't created with the same device as the pool.
Safety
See also the new
function.
- The total descriptors of the layouts must fit in the pool.
- The total number of descriptor sets allocated from the pool must not overflow the pool.
- You must ensure that the allocated descriptor sets are no longer in use when the pool is destroyed, as destroying the pool is equivalent to freeing all the sets.
pub unsafe fn free<I>(&mut self, descriptor_sets: I) -> Result<(), OomError> where
I: IntoIterator<Item = UnsafeDescriptorSet>,
[src]
I: IntoIterator<Item = UnsafeDescriptorSet>,
Frees some descriptor sets.
Note that it is not mandatory to free sets. Destroying or resetting the pool destroys all the descriptor sets.
Safety
- The pool must have been created with
free_descriptor_set_bit
set totrue
. - The descriptor sets must have been allocated from the pool.
- The descriptor sets must not be free'd twice.
- The descriptor sets must not be in use by the GPU.
pub unsafe fn reset(&mut self) -> Result<(), OomError>
[src]
Resets the pool.
This destroys all descriptor sets and empties the pool.
Trait Implementations
impl Debug for UnsafeDescriptorPool
[src]
impl DeviceOwned for UnsafeDescriptorPool
[src]
impl Drop for UnsafeDescriptorPool
[src]
Auto Trait Implementations
impl RefUnwindSafe for UnsafeDescriptorPool
impl Send for UnsafeDescriptorPool
impl Sync for UnsafeDescriptorPool
impl Unpin for UnsafeDescriptorPool
impl UnwindSafe for UnsafeDescriptorPool
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
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> DeviceOwned for T where
T: Deref,
<T as Deref>::Target: DeviceOwned,
[src]
T: Deref,
<T as Deref>::Target: DeviceOwned,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
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>,