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: RingIndexphantom_v: PhantomData<V>phantom_i: PhantomData<I>phantom_q: PhantomData<Q>phantom_m: PhantomData<TM>phantom_fm: PhantomData<FM>Implementations
sourceimpl<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
sourceimpl<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 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_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
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
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
pub fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
pub fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, 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. Read more
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more
pub fn as_any(&self) -> &(dyn Any + 'static)
pub 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. Read more
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
pub 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. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber to this type, returning a
WithDispatch wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber to this type, returning a
WithDispatch wrapper. Read more