pub struct Types {
pub address: BTreeSet<AddressType>,
pub storage: BTreeMap<StorageType, EnumSet<TypeUsage>>,
pub semantic: BTreeSet<SemanticType>,
pub atomic: BTreeMap<Type, EnumSet<AtomicUsage>>,
}Expand description
Type support for a device
Fields§
§address: BTreeSet<AddressType>Valid address types
storage: BTreeMap<StorageType, EnumSet<TypeUsage>>Types supported by this runtime, and which usages they support.
semantic: BTreeSet<SemanticType>Semantic constructs supported by this runtime.
atomic: BTreeMap<Type, EnumSet<AtomicUsage>>Supported vector types for atomic ops, only specific vectorizations for specific types are
supported here. Not all vector types are supported as scalars, i.e. Vulkan on Nvidia only
supports vectorized f16, not scalar. Only use the exact vectorizations registered here.
These may not be supported everywhere - in practice, f32 vectors are only supported in global
memory.
Trait Implementations§
impl Eq for Types
impl StructuralPartialEq for Types
Auto Trait Implementations§
impl Freeze for Types
impl RefUnwindSafe for Types
impl Send for Types
impl Sync for Types
impl Unpin for Types
impl UnsafeUnpin for Types
impl UnwindSafe for Types
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
Mutably borrows from an owned value. Read more
Source§impl<C> CloneExpand for Cwhere
C: Clone,
impl<C> CloneExpand for Cwhere
C: Clone,
fn __expand_clone_method(&self, _scope: &mut Scope) -> C
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> CompilationArg for T
impl<T> CompilationArg for T
Source§fn dynamic_cast<Arg>(&self) -> Argwhere
Arg: CompilationArg,
fn dynamic_cast<Arg>(&self) -> Argwhere
Arg: CompilationArg,
Compilation args should be the same even with different element types. However, it isn’t
possible to enforce it with the type system. So, we make the compilation args serializable
and dynamically cast them. Read more
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.