pub struct SharedText(/* private fields */);Expand description
The device-scoped half of text rendering, shareable across
Runners (issue #94): the font system + shaping
cache, the CPU-side glyph and MSDF atlases, and their GPU page
textures with bind groups. Everything here is independent of the
swapchain format and MSAA sample count, so one SharedText per
wgpu::Device can back every window — a multi-window host that
passes the same handle to each Runner
(Runner::with_shared_text)
pays glyph rasterization, shaping, warm-up, and atlas VRAM once per
device instead of once per window.
Cloning is cheap (an Arc); the inner state is mutex-guarded and
locked per record/flush call, so windows can be prepared from one
thread in any order. Each attached Runner widens the atlases’
LRU protection window (see
MsdfAtlas::set_lru_protection_window) so a page referenced by one
window’s in-flight frame can’t be recycled by another’s prepare.
The default Runner constructors create a private SharedText
per runner — single-window behavior is unchanged.
Implementations§
Sourcepub fn new(device: &Device) -> Self
pub fn new(device: &Device) -> Self
A fresh shared text pool for device. Pass the same handle to
every Runner created on that device. Do
not share one SharedText across devices — the page
textures belong to the device that created them.
Sourcepub fn warm_default_glyphs(&self)
pub fn warm_default_glyphs(&self)
Pre-rasterize printable ASCII for the bundled default faces —
see [TextPaint::warm_default_glyphs] for cost and rationale.
On a shared pool this runs once per device: warm the pool
before (or after) attaching runners, and every attached runner
is warm. Runners attached to an already-warm pool skip the cost
in their own warm_default_glyphs automatically (rasterized
glyphs are cache hits).
Trait Implementations§
Source§fn clone(&self) -> SharedText
fn clone(&self) -> SharedText
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.