pub struct Semantics(/* private fields */);Expand description
Memory semantics to determine how some operations should function - used when calling such configurable operations.
Implementations§
Source§impl Semantics
impl Semantics
Sourcepub const ACQUIRE: Self
pub const ACQUIRE: Self
On an atomic instruction, orders memory operations provided in program order after this atomic instruction against this atomic instruction. On a barrier, orders memory operations provided in program order after this barrier against atomic instructions before this barrier.
Sourcepub const RELEASE: Self
pub const RELEASE: Self
On an atomic instruction, orders memory operations provided in program order before this atomic instruction against this atomic instruction. On a barrier, orders memory operations provided in program order before this barrier against atomic instructions after this barrier.
Sourcepub const ACQUIRE_RELEASE: Self
pub const ACQUIRE_RELEASE: Self
Has the properties of both Self::ACQUIRE and Self::RELEASE semantics. It
is used for read-modify-write operations.
Sourcepub const SEQUENTIALLY_CONST: Self
pub const SEQUENTIALLY_CONST: Self
All observers see this memory access in the same order with respect to
other sequentially-consistent memory accesses from this invocation.
If the declared memory model is vulkan, SEQUENTIALLY_CONST must
not be used.
Sourcepub const UNIFORM_MEMORY: Self
pub const UNIFORM_MEMORY: Self
Apply the memory-ordering constraints to
[crate::storage_class::StorageBuffer],
[crate::storage_class::PhysicalStorageBuffer], or
[crate::storage_class::Uniform] Storage Class memory.
Sourcepub const SUBGROUP_MEMORY: Self
pub const SUBGROUP_MEMORY: Self
Apply the memory-ordering constraints to subgroup memory.
Sourcepub const WORKGROUP_MEMORY: Self
pub const WORKGROUP_MEMORY: Self
Apply the memory-ordering constraints to
[crate::storage_class::Workgroup] Storage Class memory.
Sourcepub const CROSS_WORKGROUP_MEMORY: Self
pub const CROSS_WORKGROUP_MEMORY: Self
Apply the memory-ordering constraints to
[crate::storage_class::CrossWorkgroup] Storage Class memory.
Sourcepub const ATOMIC_COUNTER_MEMORY: Self
pub const ATOMIC_COUNTER_MEMORY: Self
Apply the memory-ordering constraints to
[crate::storage_class::AtomicCounter] Storage Class memory.
Sourcepub const IMAGE_MEMORY: Self
pub const IMAGE_MEMORY: Self
Apply the memory-ordering constraints to image contents (types declared
by OpTypeImage), or to accesses done through pointers to the
[crate::storage_class::Image] Storage Class.
Sourcepub const OUTPUT_MEMORY: Self
pub const OUTPUT_MEMORY: Self
Apply the memory-ordering constraints to the
[crate::storage_class::Output] Storage Class memory.
Sourcepub const MAKE_AVAILABLE: Self
pub const MAKE_AVAILABLE: Self
Perform an availability operation on all references in the selected storage classes.
Sourcepub const MAKE_VISIBLE: Self
pub const MAKE_VISIBLE: Self
Perform a visibility operation on all references in the selected storage classes.
Source§impl Semantics
impl Semantics
Sourcepub const fn bits(&self) -> u32
pub const fn bits(&self) -> u32
Get the underlying bits value.
The returned value is exactly the bits set in this flags value.
Sourcepub const fn from_bits(bits: u32) -> Option<Self>
pub const fn from_bits(bits: u32) -> Option<Self>
Convert from a bits value.
This method will return None if any unknown bits are set.
Sourcepub const fn from_bits_truncate(bits: u32) -> Self
pub const fn from_bits_truncate(bits: u32) -> Self
Convert from a bits value, unsetting any unknown bits.
Sourcepub const fn from_bits_retain(bits: u32) -> Self
pub const fn from_bits_retain(bits: u32) -> Self
Convert from a bits value exactly.
Sourcepub fn from_name(name: &str) -> Option<Self>
pub fn from_name(name: &str) -> Option<Self>
Get a flags value with the bits of a flag with the given name set.
This method will return None if name is empty or doesn’t
correspond to any named flag.
Sourcepub const fn intersects(&self, other: Self) -> bool
pub const fn intersects(&self, other: Self) -> bool
Whether any set bits in other are also set in self.
Sourcepub const fn contains(&self, other: Self) -> bool
pub const fn contains(&self, other: Self) -> bool
Whether all set bits in other are also set in self.
Sourcepub fn remove(&mut self, other: Self)
pub fn remove(&mut self, other: Self)
The intersection of self with the complement of other (&!).
This method is not equivalent to self & !other when other has unknown bits set.
remove won’t truncate other, but the ! operator will.
Sourcepub fn toggle(&mut self, other: Self)
pub fn toggle(&mut self, other: Self)
The bitwise exclusive-or (^) of the bits in self and other.
Sourcepub fn set(&mut self, other: Self, value: bool)
pub fn set(&mut self, other: Self, value: bool)
Call insert when value is true or remove when value is false.
Sourcepub const fn intersection(self, other: Self) -> Self
pub const fn intersection(self, other: Self) -> Self
The bitwise and (&) of the bits in self and other.
Sourcepub const fn union(self, other: Self) -> Self
pub const fn union(self, other: Self) -> Self
The bitwise or (|) of the bits in self and other.
Sourcepub const fn difference(self, other: Self) -> Self
pub const fn difference(self, other: Self) -> Self
The intersection of self with the complement of other (&!).
This method is not equivalent to self & !other when other has unknown bits set.
difference won’t truncate other, but the ! operator will.
Sourcepub const fn symmetric_difference(self, other: Self) -> Self
pub const fn symmetric_difference(self, other: Self) -> Self
The bitwise exclusive-or (^) of the bits in self and other.
Sourcepub const fn complement(self) -> Self
pub const fn complement(self) -> Self
The bitwise negation (!) of the bits in self, truncating the result.
Source§impl Semantics
impl Semantics
Sourcepub const fn iter(&self) -> Iter<Semantics>
pub const fn iter(&self) -> Iter<Semantics>
Yield a set of contained flags values.
Each yielded flags value will correspond to a defined named flag. Any unknown bits will be yielded together as a final flags value.
Sourcepub const fn iter_names(&self) -> IterNames<Semantics>
pub const fn iter_names(&self) -> IterNames<Semantics>
Yield a set of contained named flags values.
This method is like iter, except only yields bits in contained named flags.
Any unknown bits, or bits not corresponding to a contained flag will not be yielded.
Trait Implementations§
Source§impl BitAndAssign for Semantics
impl BitAndAssign for Semantics
Source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
The bitwise and (&) of the bits in self and other.
Source§impl BitOrAssign for Semantics
impl BitOrAssign for Semantics
Source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
The bitwise or (|) of the bits in self and other.
Source§impl BitXorAssign for Semantics
impl BitXorAssign for Semantics
Source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
The bitwise exclusive-or (^) of the bits in self and other.
Source§impl Extend<Semantics> for Semantics
impl Extend<Semantics> for Semantics
Source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
The bitwise or (|) of the bits in each flags value.
Source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one)Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one)Source§impl Flags for Semantics
impl Flags for Semantics
Source§fn from_bits_retain(bits: u32) -> Semantics
fn from_bits_retain(bits: u32) -> Semantics
Source§fn known_bits(&self) -> Self::Bits
fn known_bits(&self) -> Self::Bits
Source§fn unknown_bits(&self) -> Self::Bits
fn unknown_bits(&self) -> Self::Bits
Source§fn contains_unknown_bits(&self) -> bool
fn contains_unknown_bits(&self) -> bool
true if any unknown bits are set.Source§fn from_bits_truncate(bits: Self::Bits) -> Self
fn from_bits_truncate(bits: Self::Bits) -> Self
Source§fn from_name(name: &str) -> Option<Self>
fn from_name(name: &str) -> Option<Self>
Source§fn iter_names(&self) -> IterNames<Self>
fn iter_names(&self) -> IterNames<Self>
Source§fn iter_defined_names() -> IterDefinedNames<Self>
fn iter_defined_names() -> IterDefinedNames<Self>
Self::FLAGS.Source§fn iter_equal_names(&self) -> IterEqualNames<Self>
fn iter_equal_names(&self) -> IterEqualNames<Self>
Source§fn intersects(&self, other: Self) -> boolwhere
Self: Sized,
fn intersects(&self, other: Self) -> boolwhere
Self: Sized,
other are also set in self.Source§fn contains(&self, other: Self) -> boolwhere
Self: Sized,
fn contains(&self, other: Self) -> boolwhere
Self: Sized,
other are also set in self.Source§fn insert(&mut self, other: Self)where
Self: Sized,
fn insert(&mut self, other: Self)where
Self: Sized,
|) of the bits in self and other.Source§fn toggle(&mut self, other: Self)where
Self: Sized,
fn toggle(&mut self, other: Self)where
Self: Sized,
^) of the bits in self and other.Source§fn intersection(self, other: Self) -> Self
fn intersection(self, other: Self) -> Self
&) of the bits in self and other.Source§fn difference(self, other: Self) -> Self
fn difference(self, other: Self) -> Self
Source§fn symmetric_difference(self, other: Self) -> Self
fn symmetric_difference(self, other: Self) -> Self
^) of the bits in self and other.Source§fn complement(self) -> Self
fn complement(self) -> Self
!) of the bits in self, truncating the result.Source§impl FromIterator<Semantics> for Semantics
impl FromIterator<Semantics> for Semantics
Source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
The bitwise or (|) of the bits in each flags value.
Source§impl IntoIterator for Semantics
impl IntoIterator for Semantics
Source§impl Ord for Semantics
impl Ord for Semantics
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialOrd for Semantics
impl PartialOrd for Semantics
Source§impl Sub for Semantics
impl Sub for Semantics
Source§impl SubAssign for Semantics
impl SubAssign for Semantics
Source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
The intersection of self with the complement of other (&!).
This method is not equivalent to self & !other when other has unknown bits set.
difference won’t truncate other, but the ! operator will.
impl Copy for Semantics
impl Eq for Semantics
impl Pod for Semantics
impl StructuralPartialEq for Semantics
Auto Trait Implementations§
impl Freeze for Semantics
impl RefUnwindSafe for Semantics
impl Send for Semantics
impl Sync for Semantics
impl Unpin for Semantics
impl UnsafeUnpin for Semantics
impl UnwindSafe for Semantics
Blanket Implementations§
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> CheckedBitPattern for Twhere
T: AnyBitPattern,
impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
Source§type Bits = T
type Bits = T
Self must have the same layout as the specified Bits except for
the possible invalid bit patterns being checked during
is_valid_bit_pattern.Source§fn is_valid_bit_pattern(_bits: &T) -> bool
fn is_valid_bit_pattern(_bits: &T) -> bool
bits
as &Self.