Struct screen_13::pool::alias::AliasPool

source ·
pub struct AliasPool<T> { /* private fields */ }
Expand description

A memory-efficient resource wrapper for any Pool type.

The information for each alias request is compared against the actively aliased resources for compatibility. If no acceptable resources are aliased for the information provided a new resource is leased and returned.

All regular leasing and other functionality of the wrapped pool is available through Deref and DerefMut.

NOTE: You must call alias(..) to use resource aliasing as regular lease(..) calls will not inspect or return aliased resources.

§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

§Examples

See aliasing.rs

Implementations§

source§

impl<T> AliasPool<T>

source

pub fn new(pool: T) -> Self

Creates a new aliasable wrapper over the given pool.

Trait Implementations§

source§

impl<T> Alias<AccelerationStructureInfo, AccelerationStructure> for AliasPool<T>

source§

impl<T> Alias<BufferInfo, Buffer> for AliasPool<T>
where T: Pool<BufferInfo, Buffer>,

source§

fn alias(&mut self, info: BufferInfo) -> Result<Arc<Lease<Buffer>>, DriverError>

Aliases a resource.
source§

impl<T> Alias<ImageInfo, Image> for AliasPool<T>
where T: Pool<ImageInfo, Image>,

source§

fn alias(&mut self, info: ImageInfo) -> Result<Arc<Lease<Image>>, DriverError>

Aliases a resource.
source§

impl<T> Deref for AliasPool<T>

§

type Target = T

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl<T> DerefMut for AliasPool<T>

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
source§

impl<T> Pool<AccelerationStructureInfo, AccelerationStructure> for AliasPool<T>

source§

impl<T> Pool<BufferInfo, Buffer> for AliasPool<T>
where T: Pool<BufferInfo, Buffer>,

source§

fn lease(&mut self, info: BufferInfo) -> Result<Lease<Buffer>, DriverError>

Lease a resource.
source§

impl<T> Pool<ImageInfo, Image> for AliasPool<T>
where T: Pool<ImageInfo, Image>,

source§

fn lease(&mut self, info: ImageInfo) -> Result<Lease<Image>, DriverError>

Lease a resource.

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for AliasPool<T>
where T: RefUnwindSafe,

§

impl<T> Send for AliasPool<T>
where T: Send,

§

impl<T> Sync for AliasPool<T>
where T: Sync,

§

impl<T> Unpin for AliasPool<T>
where T: Unpin,

§

impl<T> UnwindSafe for AliasPool<T>
where T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Alias<AccelerationStructureInfoBuilder, AccelerationStructure> for T

source§

impl<T> Alias<BufferInfoBuilder, Buffer> for T
where T: Alias<BufferInfo, Buffer>,

source§

fn alias( &mut self, builder: BufferInfoBuilder ) -> Result<Arc<Lease<Buffer>>, DriverError>

Aliases a resource.
source§

impl<T> Alias<ImageInfoBuilder, Image> for T
where T: Alias<ImageInfo, Image>,

source§

fn alias( &mut self, builder: ImageInfoBuilder ) -> Result<Arc<Lease<Image>>, DriverError>

Aliases a resource.
source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Pool<AccelerationStructureInfoBuilder, AccelerationStructure> for T

source§

impl<T> Pool<BufferInfoBuilder, Buffer> for T
where T: Pool<BufferInfo, Buffer>,

source§

fn lease( &mut self, builder: BufferInfoBuilder ) -> Result<Lease<Buffer>, DriverError>

Lease a resource.
source§

impl<T> Pool<ImageInfoBuilder, Image> for T
where T: Pool<ImageInfo, Image>,

source§

fn lease( &mut self, builder: ImageInfoBuilder ) -> Result<Lease<Image>, DriverError>

Lease a resource.
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.