pub struct FifoPool { /* private fields */ }
Expand description
A memory-efficient resource allocator.
The information for each lease 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
All resources are stored in a single bucket per resource type, regardless of their individual attributes.
In practice this means that for a PoolInfo::image_capacity
of 4
, a maximum of 4
images
will be stored. Requests to lease an image or other resource will first look for a compatible
resource in the bucket and create a new resource as needed.
§Memory Management
The single-bucket strategy means that there will always be a reasonable and predictable number
of stored resources, however you may call FifoPool::clear
or the other memory management
functions at any time to discard stored resources.
Implementations§
source§impl FifoPool
impl FifoPool
sourcepub fn with_capacity(device: &Arc<Device>, info: impl Into<PoolInfo>) -> Self
pub fn with_capacity(device: &Arc<Device>, info: impl Into<PoolInfo>) -> Self
Constructs a new FifoPool
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_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.