pub struct SpecializedComputePipelines<S: SpecializedComputePipeline> { /* private fields */ }
Expand description
A convenience cache for creating different variants of a compute pipeline based on some key.
Some compute pipelines may need to be configured differently depending on the exact situation. This cache allows constructing different compute pipelines for each situation based on a key, making it easy to A) construct the necessary pipelines, and B) reuse already constructed pipelines.
Note: This is intended for modifying your pipeline descriptor on the basis of a key. If your key
contains no data then you don’t need to specialize. For example, if you are using the
AsBindGroup
without the #[bind_group_data]
attribute,
you don’t need to specialize. Instead, create the pipeline directly from PipelineCache
and
store its ID.
Implementations§
Source§impl<S: SpecializedComputePipeline> SpecializedComputePipelines<S>
impl<S: SpecializedComputePipeline> SpecializedComputePipelines<S>
Sourcepub fn specialize(
&mut self,
cache: &PipelineCache,
specialize_pipeline: &S,
key: S::Key,
) -> CachedComputePipelineId
pub fn specialize( &mut self, cache: &PipelineCache, specialize_pipeline: &S, key: S::Key, ) -> CachedComputePipelineId
Get or create a specialized instance of the pipeline corresponding to key
.
Trait Implementations§
Source§impl<S: SpecializedComputePipeline> Default for SpecializedComputePipelines<S>
impl<S: SpecializedComputePipeline> Default for SpecializedComputePipelines<S>
impl<S: SpecializedComputePipeline> Resource for SpecializedComputePipelines<S>
Auto Trait Implementations§
impl<S> Freeze for SpecializedComputePipelines<S>
impl<S> RefUnwindSafe for SpecializedComputePipelines<S>
impl<S> Send for SpecializedComputePipelines<S>
impl<S> Sync for SpecializedComputePipelines<S>
impl<S> Unpin for SpecializedComputePipelines<S>
impl<S> UnwindSafe for SpecializedComputePipelines<S>
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self
using default()
.
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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