Trait DescriptorBindingArray

Source
pub trait DescriptorBindingArray<K> {
    type DescriptorArray;

    const COUNT: u32;
    const FLAGS: DescriptorBindingFlags;

    // Required methods
    fn is_compatible(&self, descriptors: &Self::DescriptorArray) -> bool;
    fn get_descriptors(
        &self,
        device: &Device,
    ) -> Result<Self::DescriptorArray, OutOfMemory>;

    // Provided method
    fn update_descriptors(
        &mut self,
        device: &Device,
        encoder: &mut Encoder<'_>,
        descriptors: &Self::DescriptorArray,
    ) -> Result<(), OutOfMemory> { ... }
}
Expand description

Trait for all types that can be used as a descriptor array.

Required Associated Constants§

Source

const COUNT: u32

Number of descriptors in the binding.

Source

const FLAGS: DescriptorBindingFlags

Flags necessary for this binding type.

Required Associated Types§

Source

type DescriptorArray

Descriptors value.

Required Methods§

Source

fn is_compatible(&self, descriptors: &Self::DescriptorArray) -> bool

Checks descriptors bound to a set. Returns true if bound descriptors are compatible with input. Returns false if new descriptors should be bound.

Source

fn get_descriptors( &self, device: &Device, ) -> Result<Self::DescriptorArray, OutOfMemory>

Returns Descriptors equivalent to self.

Provided Methods§

Source

fn update_descriptors( &mut self, device: &Device, encoder: &mut Encoder<'_>, descriptors: &Self::DescriptorArray, ) -> Result<(), OutOfMemory>

Updates content of descriptors.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<K, T, const N: usize> DescriptorBindingArray<K> for &mut [T; N]
where K: DescriptorKind, T: DescriptorBinding<K> + Sealed,

Source§

const COUNT: u32

Source§

const FLAGS: DescriptorBindingFlags = T::FLAGS

Source§

type DescriptorArray = [<K as DescriptorKind>::Descriptor; N]

Source§

fn is_compatible(&self, descriptors: &[K::Descriptor; N]) -> bool

Source§

fn update_descriptors( &mut self, device: &Device, encoder: &mut Encoder<'_>, descriptors: &[K::Descriptor; N], ) -> Result<(), OutOfMemory>

Source§

fn get_descriptors( &self, device: &Device, ) -> Result<[K::Descriptor; N], OutOfMemory>

Source§

impl<K, T, const N: usize> DescriptorBindingArray<K> for &mut ArrayVec<T, N>
where K: DescriptorKind, T: DescriptorBinding<K> + Sealed,

Source§

const COUNT: u32

Source§

const FLAGS: DescriptorBindingFlags

Source§

type DescriptorArray = ArrayVec<<K as DescriptorKind>::Descriptor, N>

Source§

fn is_compatible(&self, descriptors: &ArrayVec<K::Descriptor, N>) -> bool

Source§

fn update_descriptors( &mut self, device: &Device, encoder: &mut Encoder<'_>, descriptors: &ArrayVec<K::Descriptor, N>, ) -> Result<(), OutOfMemory>

Source§

fn get_descriptors( &self, device: &Device, ) -> Result<ArrayVec<K::Descriptor, N>, OutOfMemory>

Source§

impl<K, T, const N: usize> DescriptorBindingArray<K> for [T; N]
where K: DescriptorKind, T: DescriptorBinding<K> + Sealed,

Source§

const COUNT: u32

Source§

const FLAGS: DescriptorBindingFlags

Source§

type DescriptorArray = [<K as DescriptorKind>::Descriptor; N]

Source§

fn is_compatible(&self, descriptors: &[K::Descriptor; N]) -> bool

Source§

fn update_descriptors( &mut self, device: &Device, encoder: &mut Encoder<'_>, descriptors: &[K::Descriptor; N], ) -> Result<(), OutOfMemory>

Source§

fn get_descriptors( &self, device: &Device, ) -> Result<[K::Descriptor; N], OutOfMemory>

Source§

impl<K, T, const N: usize> DescriptorBindingArray<K> for Box<[T; N]>
where K: DescriptorKind, T: DescriptorBinding<K> + Sealed,

Source§

const COUNT: u32

Source§

const FLAGS: DescriptorBindingFlags = T::FLAGS

Source§

type DescriptorArray = [<K as DescriptorKind>::Descriptor; N]

Source§

fn is_compatible(&self, descriptors: &[K::Descriptor; N]) -> bool

Source§

fn update_descriptors( &mut self, device: &Device, encoder: &mut Encoder<'_>, descriptors: &[K::Descriptor; N], ) -> Result<(), OutOfMemory>

Source§

fn get_descriptors( &self, device: &Device, ) -> Result<[K::Descriptor; N], OutOfMemory>

Source§

impl<K, T, const N: usize> DescriptorBindingArray<K> for Box<ArrayVec<T, N>>
where K: DescriptorKind, T: DescriptorBinding<K> + Sealed,

Source§

const COUNT: u32

Source§

const FLAGS: DescriptorBindingFlags

Source§

type DescriptorArray = ArrayVec<<K as DescriptorKind>::Descriptor, N>

Source§

fn is_compatible(&self, descriptors: &ArrayVec<K::Descriptor, N>) -> bool

Source§

fn update_descriptors( &mut self, device: &Device, encoder: &mut Encoder<'_>, descriptors: &ArrayVec<K::Descriptor, N>, ) -> Result<(), OutOfMemory>

Source§

fn get_descriptors( &self, device: &Device, ) -> Result<ArrayVec<K::Descriptor, N>, OutOfMemory>

Source§

impl<T, K, const N: usize> DescriptorBindingArray<K> for ArrayVec<T, N>
where K: DescriptorKind, T: DescriptorBinding<K>,

Source§

const COUNT: u32

Source§

const FLAGS: DescriptorBindingFlags

Source§

type DescriptorArray = ArrayVec<<K as DescriptorKind>::Descriptor, N>

Source§

fn is_compatible(&self, descriptors: &ArrayVec<K::Descriptor, N>) -> bool

Source§

fn update_descriptors( &mut self, device: &Device, encoder: &mut Encoder<'_>, descriptors: &ArrayVec<K::Descriptor, N>, ) -> Result<(), OutOfMemory>

Source§

fn get_descriptors( &self, device: &Device, ) -> Result<ArrayVec<K::Descriptor, N>, OutOfMemory>

Implementors§

Source§

impl<K, T> DescriptorBindingArray<K> for T
where K: DescriptorKind, T: DescriptorBinding<K> + Sealed,

Source§

const COUNT: u32 = 1u32

Source§

const FLAGS: DescriptorBindingFlags

Source§

type DescriptorArray = [<K as DescriptorKind>::Descriptor; 1]