pub struct OffscreenSurfacePool {
pub reuse_hits: u32,
pub allocs: u32,
/* private fields */
}Expand description
Frame-transient pool of offscreen render targets.
Slots persist across frames and are matched by exact PoolKey. Call
Self::end_frame only after all encoded composites have finished
referencing their leases. The pool has no eviction policy.
§Examples
use ailloli_ui_render_wgpu::offscreen_pool::OffscreenSurfacePool;
let pool = OffscreenSurfacePool::default();
assert_eq!((pool.reuse_hits, pool.allocs, pool.peak_bytes()), (0, 0, 0));Fields§
§reuse_hits: u32Successful exact-key lease reuses across the pool lifetime.
allocs: u32New slot allocations across the pool lifetime.
Implementations§
Source§impl OffscreenSurfacePool
impl OffscreenSurfacePool
Sourcepub fn lease(
&mut self,
device: &Device,
key: PoolKey,
format: TextureFormat,
) -> LeasedOffscreen
pub fn lease( &mut self, device: &Device, key: PoolKey, format: TextureFormat, ) -> LeasedOffscreen
Leases an exact-key slot, reusing a free allocation or creating one.
New textures use format, but an existing slot is keyed only by
dimensions, stencil, and ping role. A pool must therefore be scoped to a
single surface format. Counters use u32 and may overflow only after an
impractically large number of operations.
§Examples
use ailloli_ui_render_wgpu::offscreen_pool::{OffscreenSurfacePool, PoolKey};
fn lease(pool: &mut OffscreenSurfacePool, device: &wgpu::Device) {
let slot = pool.lease(device, PoolKey::color(64, 64, true),
wgpu::TextureFormat::Rgba8Unorm);
assert_eq!(slot.width, 64);
}Sourcepub fn release(&self, lease: LeasedOffscreen)
pub fn release(&self, lease: LeasedOffscreen)
Marks a lease’s slot free if its index exists in this pool.
Invalid or foreign indices are silently ignored. Releasing copied leases more than once is idempotent at the flag level.
§Examples
use ailloli_ui_render_wgpu::offscreen_pool::{LeasedOffscreen, OffscreenSurfacePool};
fn release(pool: &OffscreenSurfacePool, lease: LeasedOffscreen) { pool.release(lease); }Sourcepub fn end_frame(&self)
pub fn end_frame(&self)
Marks every leased slot free after the main pass has sampled offscreen textures.
§Examples
use ailloli_ui_render_wgpu::offscreen_pool::OffscreenSurfacePool;
OffscreenSurfacePool::default().end_frame();Sourcepub fn debug_assert_leased_count(&self, expected: usize)
pub fn debug_assert_leased_count(&self, expected: usize)
Debug-only: leased slot count must match active isolated passes until Self::end_frame.
Release builds compile this method as a no-op, preserving call-site shape.
§Panics
Debug builds panic when the number of in-use slots differs from
expected.
§Examples
use ailloli_ui_render_wgpu::offscreen_pool::OffscreenSurfacePool;
OffscreenSurfacePool::default().debug_assert_leased_count(0);Sourcepub fn peak_bytes(&self) -> u64
pub fn peak_bytes(&self) -> u64
Estimates peak bytes retained by all slots, including free ones.
Color and stencil each count as four bytes per pixel. This is a logical estimate and excludes row alignment, driver metadata, views, and samplers.
§Examples
use ailloli_ui_render_wgpu::offscreen_pool::OffscreenSurfacePool;
assert_eq!(OffscreenSurfacePool::default().peak_bytes(), 0);Trait Implementations§
Source§impl Default for OffscreenSurfacePool
impl Default for OffscreenSurfacePool
Source§fn default() -> OffscreenSurfacePool
fn default() -> OffscreenSurfacePool
Auto Trait Implementations§
impl Freeze for OffscreenSurfacePool
impl !RefUnwindSafe for OffscreenSurfacePool
impl Send for OffscreenSurfacePool
impl !Sync for OffscreenSurfacePool
impl Unpin for OffscreenSurfacePool
impl !UnwindSafe for OffscreenSurfacePool
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().