Struct maplibre::vector::resource::buffer_pool::BufferPool
source · pub struct BufferPool<Q, B, V, I, TM, FM> {
vertices: BackingBuffer<B>,
indices: BackingBuffer<B>,
layer_metadata: BackingBuffer<B>,
feature_metadata: BackingBuffer<B>,
index: RingIndex,
phantom_v: PhantomData<V>,
phantom_i: PhantomData<I>,
phantom_q: PhantomData<Q>,
phantom_m: PhantomData<TM>,
phantom_fm: PhantomData<FM>,
}Expand description
This is inspired by the memory pool in Vulkan documented here.
Fields§
§vertices: BackingBuffer<B>§indices: BackingBuffer<B>§layer_metadata: BackingBuffer<B>§feature_metadata: BackingBuffer<B>§index: RingIndex§phantom_v: PhantomData<V>§phantom_i: PhantomData<I>§phantom_q: PhantomData<Q>§phantom_m: PhantomData<TM>§phantom_fm: PhantomData<FM>Implementations§
source§impl<V: Pod, I: Pod, TM: Pod, FM: Pod> BufferPool<Queue, Buffer, V, I, TM, FM>
impl<V: Pod, I: Pod, TM: Pod, FM: Pod> BufferPool<Queue, Buffer, V, I, TM, FM>
pub fn from_device(device: &Device) -> Self
source§impl<Q: Queue<B>, B, V: Pod, I: Pod, TM: Pod, FM: Pod> BufferPool<Q, B, V, I, TM, FM>
impl<Q: Queue<B>, B, V: Pod, I: Pod, TM: Pod, FM: Pod> BufferPool<Q, B, V, I, TM, FM>
pub fn new( vertices: BackingBufferDescriptor<B>, indices: BackingBufferDescriptor<B>, layer_metadata: BackingBufferDescriptor<B>, feature_metadata: BackingBufferDescriptor<B> ) -> Self
pub fn clear(&mut self)
pub fn vertices(&self) -> &B
pub fn indices(&self) -> &B
pub fn metadata(&self) -> &B
pub fn feature_metadata(&self) -> &B
sourcefn align(
stride: BufferAddress,
elements: BufferAddress,
usable_elements: BufferAddress
) -> (BufferAddress, BufferAddress)
fn align( stride: BufferAddress, elements: BufferAddress, usable_elements: BufferAddress ) -> (BufferAddress, BufferAddress)
The VertexBuffers can contain padding elements. Not everything from a VertexBuffers is useable.
The function returns the bytes and aligned_bytes. See OverAlignedVertexBuffer.
pub fn get_loaded_source_layers_at( &self, coords: WorldTileCoords ) -> Option<HashSet<&str>>
sourcepub fn allocate_layer_geometry(
&mut self,
queue: &Q,
coords: WorldTileCoords,
style_layer: StyleLayer,
geometry: &OverAlignedVertexBuffer<V, I>,
layer_metadata: TM,
feature_metadata: &[FM]
)
pub fn allocate_layer_geometry( &mut self, queue: &Q, coords: WorldTileCoords, style_layer: StyleLayer, geometry: &OverAlignedVertexBuffer<V, I>, layer_metadata: TM, feature_metadata: &[FM] )
Allocates
geometrylayer_metadataandfeature_metadatafor a layer. This function is able to dynamically evict layers if there is not enough space available.
pub fn update_layer_metadata( &self, queue: &Q, entry: &IndexEntry, layer_metadata: TM )
pub fn update_feature_metadata( &self, queue: &Q, entry: &IndexEntry, feature_metadata: &[FM] )
pub fn index(&self) -> &RingIndex
Trait Implementations§
source§impl<Q: Debug, B: Debug, V: Debug, I: Debug, TM: Debug, FM: Debug> Debug for BufferPool<Q, B, V, I, TM, FM>
impl<Q: Debug, B: Debug, V: Debug, I: Debug, TM: Debug, FM: Debug> Debug for BufferPool<Q, B, V, I, TM, FM>
source§impl<Q: Queue<B>, B, V: Pod, I: Pod, TM: Pod, FM: Pod> HasTile for BufferPool<Q, B, V, I, TM, FM>
impl<Q: Queue<B>, B, V: Pod, I: Pod, TM: Pod, FM: Pod> HasTile for BufferPool<Q, B, V, I, TM, FM>
fn has_tile(&self, coords: WorldTileCoords, _world: &World) -> bool
fn get_available_parent( &self, coords: WorldTileCoords, world: &World ) -> Option<WorldTileCoords>
fn get_available_children( &self, coords: WorldTileCoords, world: &World, search_depth: usize ) -> Option<Vec<WorldTileCoords>>
Auto Trait Implementations§
impl<Q, B, V, I, TM, FM> RefUnwindSafe for BufferPool<Q, B, V, I, TM, FM>where B: RefUnwindSafe, FM: RefUnwindSafe, I: RefUnwindSafe, Q: RefUnwindSafe, TM: RefUnwindSafe, V: RefUnwindSafe,
impl<Q, B, V, I, TM, FM> Send for BufferPool<Q, B, V, I, TM, FM>where B: Send, FM: Send, I: Send, Q: Send, TM: Send, V: Send,
impl<Q, B, V, I, TM, FM> Sync for BufferPool<Q, B, V, I, TM, FM>where B: Sync, FM: Sync, I: Sync, Q: Sync, TM: Sync, V: Sync,
impl<Q, B, V, I, TM, FM> Unpin for BufferPool<Q, B, V, I, TM, FM>where B: Unpin, FM: Unpin, I: Unpin, Q: Unpin, TM: Unpin, V: Unpin,
impl<Q, B, V, I, TM, FM> UnwindSafe for BufferPool<Q, B, V, I, TM, FM>where B: UnwindSafe, FM: UnwindSafe, I: UnwindSafe, Q: UnwindSafe, TM: UnwindSafe, V: UnwindSafe,
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
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.