pub struct LazyPool {
pub device: Device,
pub info: PoolConfig,
/* private fields */
}Expand description
A balanced resource allocator.
The information for each resource request is compared against the stored resources for compatibility. If no acceptable resources are stored for the information provided a new resource is created and returned.
§Details
- Acceleration structures may be larger than requested
- Buffers may be larger than requested or have additional usage flags
- Images may have additional usage flags
§Bucket Strategy
The information for each resource request is the key for a HashMap of buckets. If no bucket
exists with compatible information a new bucket is created.
In practice this means that for a PoolConfig::image_capacity of 4, requests for a
1024x1024 image with certain attributes will store a maximum of 4 such images. Requests for
any image having a different size or incompatible attributes will store an additional maximum of
4 images.
§Memory Management
If requests for varying resources are common LazyPool::clear_images_by_info and other
memory management functions are necessary in order to avoid using all available device memory.
Fields§
§device: DeviceThe device which owns this pool.
Note: This field is read-only.
info: PoolConfigInformation used to create this pool.
Note: This field is read-only.
Implementations§
Source§impl LazyPool
impl LazyPool
Sourcepub fn with_capacity(device: &Device, info: impl Into<PoolConfig>) -> Self
pub fn with_capacity(device: &Device, info: impl Into<PoolConfig>) -> Self
Constructs a new LazyPool with the given capacity information.
Sourcepub fn clear_accel_structs(&mut self)
pub fn clear_accel_structs(&mut self)
Clears the pool of acceleration structure resources.
Sourcepub fn clear_accel_structs_by_type(
&mut self,
accel_struct_ty: AccelerationStructureTypeKHR,
)
pub fn clear_accel_structs_by_type( &mut self, accel_struct_ty: AccelerationStructureTypeKHR, )
Clears the pool of all acceleration structure resources matching the given type.
Sourcepub fn clear_buffers(&mut self)
pub fn clear_buffers(&mut self)
Clears the pool of buffer resources.
Sourcepub fn clear_images(&mut self)
pub fn clear_images(&mut self)
Clears the pool of image resources.
Sourcepub fn clear_images_by_info(&mut self, info: impl Into<ImageInfo>)
pub fn clear_images_by_info(&mut self, info: impl Into<ImageInfo>)
Clears the pool of image resources matching the given information.
Sourcepub fn retain_accel_structs<F>(&mut self, f: F)
pub fn retain_accel_structs<F>(&mut self, f: F)
Retains only the acceleration structure resources specified by the predicate.
In other words, remove all resources for which f(vk::AccelerationStructureTypeKHR) returns
false.
The elements are visited in unsorted (and unspecified) order.
§Performance
Provides the same performance guarantees as
HashMap::retain.