pub struct DescriptorBindingFlags(/* private fields */);
Expand description

Flags that control how a binding in a descriptor set layout is created.

Implementations§

source§

impl DescriptorBindingFlags

source

pub const UPDATE_AFTER_BIND: Self = _

Allows descriptors in this binding to be updated after a command buffer has already recorded a bind command containing a descriptor set with this layout, as long as the command buffer is not executing. Each descriptor can also be updated concurrently.

If a binding has this flag, then the descriptor set layout must be created with the DescriptorSetLayoutCreateFlags::UPDATE_AFTER_BIND_POOL flag, and descriptor sets using it must be allocated from a descriptor pool that has the DescriptorPoolCreateFlags::UPDATE_AFTER_BIND flag. In addition, the descriptor_binding_*_update_after_bind feature corresponding to the descriptor type of the binding must be enabled.

source

pub const UPDATE_UNUSED_WHILE_PENDING: Self = _

Allows descriptors in this binding to be updated after a command buffer has already recorded a bind command containing a descriptor set with this layout, as long as the command buffer is not executing, and no shader invocation recorded in the command buffer uses the descriptor. Each descriptor can also be updated concurrently.

This is a subset of what is allowed by DescriptorBindingFlags::UPDATE_AFTER_BIND, but has much less strict requirements. It does not require any additional flags to be present on the descriptor set layout or the descriptor pool, and instead requires the descriptor_binding_update_unused_while_pending feature.

What counts as “used” depends on whether the DescriptorBindingFlags::PARTIALLY_BOUND flag is also set. If it is set, then only dynamic use by a shader invocation counts as being used, otherwise all static use by a shader invocation is considered used.

source

pub const PARTIALLY_BOUND: Self = _

Allows descriptors to be left empty or invalid even if they are statically used by a shader invocation, as long as they are not dynamically used . Additionally, if DescriptorBindingFlags::UPDATE_UNUSED_WHILE_PENDING is set, allows updating descriptors if they are statically used by a command buffer they are recorded in, as long as are not dynamically used.

The descriptor_binding_partially_bound feature must be enabled on the device.

source

pub const VARIABLE_DESCRIPTOR_COUNT: Self = _

Whether the binding has a variable number of descriptors.

If set, the descriptor_binding_variable_descriptor_count feature must be enabled. The value of descriptor_count specifies the maximum number of descriptors allowed.

There may only be one binding with a variable count in a descriptor set, and it must be the binding with the highest binding number. The descriptor_type must not be DescriptorType::UniformBufferDynamic or DescriptorType::StorageBufferDynamic.

source

pub const fn empty() -> Self

Returns a DescriptorBindingFlags with none of the flags set.

source

pub const fn none() -> Self

👎Deprecated since 0.31.0: use empty instead

Returns a DescriptorBindingFlags with none of the flags set.

source

pub const fn count(self) -> u32

Returns the number of flags set in self.

source

pub const fn is_empty(self) -> bool

Returns whether no flags are set in self.

source

pub const fn intersects(self, other: Self) -> bool

Returns whether any flags are set in both self and other.

source

pub const fn contains(self, other: Self) -> bool

Returns whether all flags in other are set in self.

source

pub const fn union(self, other: Self) -> Self

Returns the union of self and other.

source

pub const fn intersection(self, other: Self) -> Self

Returns the intersection of self and other.

source

pub const fn difference(self, other: Self) -> Self

Returns self without the flags set in other.

source

pub const fn symmetric_difference(self, other: Self) -> Self

Returns the flags that are set in self or other, but not in both.

Trait Implementations§

source§

impl BitAnd for DescriptorBindingFlags

§

type Output = DescriptorBindingFlags

The resulting type after applying the & operator.
source§

fn bitand(self, rhs: Self) -> Self

Performs the & operation. Read more
source§

impl BitAndAssign for DescriptorBindingFlags

source§

fn bitand_assign(&mut self, rhs: Self)

Performs the &= operation. Read more
source§

impl BitOr for DescriptorBindingFlags

§

type Output = DescriptorBindingFlags

The resulting type after applying the | operator.
source§

fn bitor(self, rhs: Self) -> Self

Performs the | operation. Read more
source§

impl BitOrAssign for DescriptorBindingFlags

source§

fn bitor_assign(&mut self, rhs: Self)

Performs the |= operation. Read more
source§

impl BitXor for DescriptorBindingFlags

§

type Output = DescriptorBindingFlags

The resulting type after applying the ^ operator.
source§

fn bitxor(self, rhs: Self) -> Self

Performs the ^ operation. Read more
source§

impl BitXorAssign for DescriptorBindingFlags

source§

fn bitxor_assign(&mut self, rhs: Self)

Performs the ^= operation. Read more
source§

impl Clone for DescriptorBindingFlags

source§

fn clone(&self) -> DescriptorBindingFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for DescriptorBindingFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Default for DescriptorBindingFlags

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl From<DescriptorBindingFlags> for DescriptorBindingFlags

source§

fn from(val: DescriptorBindingFlags) -> Self

Converts to this type from the input type.
source§

impl From<DescriptorBindingFlags> for DescriptorBindingFlags

source§

fn from(val: DescriptorBindingFlags) -> Self

Converts to this type from the input type.
source§

impl Hash for DescriptorBindingFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for DescriptorBindingFlags

source§

fn eq(&self, other: &DescriptorBindingFlags) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Sub for DescriptorBindingFlags

§

type Output = DescriptorBindingFlags

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self

Performs the - operation. Read more
source§

impl SubAssign for DescriptorBindingFlags

source§

fn sub_assign(&mut self, rhs: Self)

Performs the -= operation. Read more
source§

impl Copy for DescriptorBindingFlags

source§

impl Eq for DescriptorBindingFlags

source§

impl StructuralEq for DescriptorBindingFlags

source§

impl StructuralPartialEq for DescriptorBindingFlags

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere 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 Twhere 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.