pub struct FifoPool {
pub device: Device,
pub info: PoolConfig,
/* private fields */
}Expand description
A memory-efficient 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
All resources are stored in a single bucket per resource type, regardless of their individual attributes.
In practice this means that for a PoolConfig::image_capacity of 4, a maximum of 4 images
will be stored. Requests to obtain 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.
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 FifoPool
impl FifoPool
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 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.