Skip to main content

DescriptorBindingArray

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".

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 = 1

Source§

const FLAGS: DescriptorBindingFlags

Source§

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