gfx_hal

Struct Features

Source
pub struct Features { /* private fields */ }
Expand description

Features that the device supports.

These only include features of the core interface and not API extensions.

Can be obtained from a physical device by calling features.

Implementations§

Source§

impl Features

Source

pub const CORE_MASK: Self = _

Bit mask of Vulkan Core/Extension features.

Source

pub const PORTABILITY_MASK: Self = _

Bit mask of Vulkan Portability features.

Source

pub const WEBGPU_MASK: Self = _

Bit mask for extra WebGPU features.

Source

pub const EXTENSIONS_MASK: Self = _

Bit mask for all extensions.

Source

pub const ROBUST_BUFFER_ACCESS: Self = _

Support for robust buffer access. Buffer access by SPIR-V shaders is checked against the buffer/image boundaries.

Source

pub const FULL_DRAW_INDEX_U32: Self = _

Support the full 32-bit range of indexed for draw calls. If not supported, the maximum index value is determined by Limits::max_draw_index_value.

Source

pub const IMAGE_CUBE_ARRAY: Self = _

Support cube array image views.

Source

pub const INDEPENDENT_BLENDING: Self = _

Support different color blending settings per attachments on graphics pipeline creation.

Source

pub const GEOMETRY_SHADER: Self = _

Support geometry shader.

Source

pub const TESSELLATION_SHADER: Self = _

Support tessellation shaders.

Source

pub const SAMPLE_RATE_SHADING: Self = _

Support per-sample shading and multisample interpolation.

Source

pub const DUAL_SRC_BLENDING: Self = _

Support dual source blending.

Source

pub const LOGIC_OP: Self = _

Support logic operations.

Source

pub const MULTI_DRAW_INDIRECT: Self = _

Support multiple draws per indirect call.

Source

pub const DRAW_INDIRECT_FIRST_INSTANCE: Self = _

Support indirect drawing with first instance value. If not supported the first instance value must be 0.

Source

pub const DEPTH_CLAMP: Self = _

Support depth clamping.

Source

pub const DEPTH_BIAS_CLAMP: Self = _

Support depth bias clamping.

Source

pub const NON_FILL_POLYGON_MODE: Self = _

Support non-fill polygon modes.

Source

pub const DEPTH_BOUNDS: Self = _

Support depth bounds test.

Source

pub const LINE_WIDTH: Self = _

Support lines with width other than 1.0.

Source

pub const POINT_SIZE: Self = _

Support points with size greater than 1.0.

Source

pub const ALPHA_TO_ONE: Self = _

Support replacing alpha values with 1.0.

Source

pub const MULTI_VIEWPORTS: Self = _

Support multiple viewports and scissors.

Source

pub const SAMPLER_ANISOTROPY: Self = _

Support anisotropic filtering.

Source

pub const FORMAT_ETC2: Self = _

Support ETC2 texture compression formats.

Source

pub const FORMAT_ASTC_LDR: Self = _

Support ASTC (LDR) texture compression formats.

Source

pub const FORMAT_BC: Self = _

Support BC texture compression formats.

Source

pub const PRECISE_OCCLUSION_QUERY: Self = _

Support precise occlusion queries, returning the actual number of samples. If not supported, queries return a non-zero value when at least one sample passes.

Source

pub const PIPELINE_STATISTICS_QUERY: Self = _

Support query of pipeline statistics.

Source

pub const VERTEX_STORES_AND_ATOMICS: Self = _

Support unordered access stores and atomic ops in the vertex, geometry and tessellation shader stage. If not supported, the shader resources must be annotated as read-only.

Source

pub const FRAGMENT_STORES_AND_ATOMICS: Self = _

Support unordered access stores and atomic ops in the fragment shader stage If not supported, the shader resources must be annotated as read-only.

Source

pub const SHADER_TESSELLATION_AND_GEOMETRY_POINT_SIZE: Self = _

Source

pub const SHADER_IMAGE_GATHER_EXTENDED: Self = _

Source

pub const SHADER_STORAGE_IMAGE_EXTENDED_FORMATS: Self = _

Source

pub const SHADER_STORAGE_IMAGE_MULTISAMPLE: Self = _

Source

pub const SHADER_STORAGE_IMAGE_READ_WITHOUT_FORMAT: Self = _

Source

pub const SHADER_STORAGE_IMAGE_WRITE_WITHOUT_FORMAT: Self = _

Source

pub const SHADER_UNIFORM_BUFFER_ARRAY_DYNAMIC_INDEXING: Self = _

Source

pub const SHADER_SAMPLED_IMAGE_ARRAY_DYNAMIC_INDEXING: Self = _

Source

pub const SHADER_STORAGE_BUFFER_ARRAY_DYNAMIC_INDEXING: Self = _

Source

pub const SHADER_STORAGE_IMAGE_ARRAY_DYNAMIC_INDEXING: Self = _

Source

pub const SHADER_CLIP_DISTANCE: Self = _

Source

pub const SHADER_CULL_DISTANCE: Self = _

Source

pub const SHADER_FLOAT64: Self = _

Source

pub const SHADER_INT64: Self = _

Source

pub const SHADER_INT16: Self = _

Source

pub const SHADER_RESOURCE_RESIDENCY: Self = _

Source

pub const SHADER_RESOURCE_MIN_LOD: Self = _

Source

pub const SPARSE_BINDING: Self = _

Source

pub const SPARSE_RESIDENCY_BUFFER: Self = _

Source

pub const SPARSE_RESIDENCY_IMAGE_2D: Self = _

Source

pub const SPARSE_RESIDENCY_IMAGE_3D: Self = _

Source

pub const SPARSE_RESIDENCY_2_SAMPLES: Self = _

Source

pub const SPARSE_RESIDENCY_4_SAMPLES: Self = _

Source

pub const SPARSE_RESIDENCY_8_SAMPLES: Self = _

Source

pub const SPARSE_RESIDENCY_16_SAMPLES: Self = _

Source

pub const SPARSE_RESIDENCY_ALIASED: Self = _

Source

pub const VARIABLE_MULTISAMPLE_RATE: Self = _

Source

pub const INHERITED_QUERIES: Self = _

Source

pub const TEXTURE_DESCRIPTOR_ARRAY: Self = _

Support for arrays of texture descriptors

Source

pub const SAMPLER_MIRROR_CLAMP_EDGE: Self = _

Support for

Source

pub const SAMPLED_TEXTURE_DESCRIPTOR_INDEXING: Self = _

Allow indexing sampled texture descriptor arrays with dynamically non-uniform data

Source

pub const STORAGE_TEXTURE_DESCRIPTOR_INDEXING: Self = _

Allow indexing storage texture descriptor arrays with dynamically non-uniform data

Source

pub const UNSIZED_DESCRIPTOR_ARRAY: Self = _

Allow descriptor arrays to be unsized in shaders

Source

pub const DESCRIPTOR_INDEXING_MASK: Self = _

Mask for all the features associated with descriptor indexing.

Source

pub const DRAW_INDIRECT_COUNT: Self = _

Enable draw_indirect_count and draw_indexed_indirect_count

Source

pub const CONSERVATIVE_RASTERIZATION: Self = _

Support for conservative rasterization. Presence of this flag only indicates basic overestimation rasterization for triangles only. (no guarantee on underestimation, overestimation, handling of degenerate primitives, fragment shader coverage reporting and uncertainty ranges)

Source

pub const BUFFER_DESCRIPTOR_ARRAY: Self = _

Support for arrays of buffer descriptors

Source

pub const UNIFORM_BUFFER_DESCRIPTOR_INDEXING: Self = _

Allow indexing uniform buffer descriptor arrays with dynamically non-uniform data

Source

pub const STORAGE_BUFFER_DESCRIPTOR_INDEXING: Self = _

Allow indexing storage buffer descriptor arrays with dynamically non-uniform data

Source

pub const TRIANGLE_FAN: Self = _

Support triangle fan primitive topology.

Source

pub const SEPARATE_STENCIL_REF_VALUES: Self = _

Support separate stencil reference values for front and back sides.

Source

pub const INSTANCE_RATE: Self = _

Support manually specified vertex attribute rates (divisors).

Source

pub const SAMPLER_MIP_LOD_BIAS: Self = _

Support non-zero mipmap bias on samplers.

Source

pub const SAMPLER_BORDER_COLOR: Self = _

Support sampler wrap mode that clamps to border.

Source

pub const MUTABLE_COMPARISON_SAMPLER: Self = _

Can create comparison samplers in regular descriptor sets.

Source

pub const MUTABLE_UNNORMALIZED_SAMPLER: Self = _

Can create non-normalized samplers in regular descriptor sets.

Source

pub const NDC_Y_UP: Self = _

Make the NDC coordinate system pointing Y up, to match D3D and Metal.

Source

pub const TASK_SHADER: Self = _

Supports task shader stage.

Source

pub const MESH_SHADER: Self = _

Supports mesh shader stage.

Source

pub const MESH_SHADER_MASK: Self = _

Mask for all the features associated with mesh shader stages.

Source

pub const SAMPLER_REDUCTION: Self = _

Support sampler min/max reduction mode.

Source

pub const EXTERNAL_MEMORY: Self = _

Supports external memory import and export.

Source

pub const fn empty() -> Self

Returns an empty set of flags.

Source

pub const fn all() -> Self

Returns the set containing all flags.

Source

pub const fn bits(&self) -> u128

Returns the raw value of the flags currently stored.

Source

pub const fn from_bits(bits: u128) -> Option<Self>

Convert from underlying bit representation, unless that representation contains bits that do not correspond to a flag.

Source

pub const fn from_bits_truncate(bits: u128) -> Self

Convert from underlying bit representation, dropping any bits that do not correspond to flags.

Source

pub const unsafe fn from_bits_unchecked(bits: u128) -> Self

Convert from underlying bit representation, preserving all bits (even those not corresponding to a defined flag).

§Safety

The caller of the bitflags! macro can chose to allow or disallow extra bits for their bitflags type.

The caller of from_bits_unchecked() has to ensure that all bits correspond to a defined flag or that extra bits are valid for this bitflags type.

Source

pub const fn is_empty(&self) -> bool

Returns true if no flags are currently stored.

Source

pub const fn is_all(&self) -> bool

Returns true if all flags are currently set.

Source

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

Returns true if there are flags common to both self and other.

Source

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

Returns true if all of the flags in other are contained within self.

Source

pub fn insert(&mut self, other: Self)

Inserts the specified flags in-place.

Source

pub fn remove(&mut self, other: Self)

Removes the specified flags in-place.

Source

pub fn toggle(&mut self, other: Self)

Toggles the specified flags in-place.

Source

pub fn set(&mut self, other: Self, value: bool)

Inserts or removes the specified flags depending on the passed value.

Source

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

Returns the intersection between the flags in self and other.

Specifically, the returned set contains only the flags which are present in both self and other.

This is equivalent to using the & operator (e.g. ops::BitAnd), as in flags & other.

Source

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

Returns the union of between the flags in self and other.

Specifically, the returned set contains all flags which are present in either self or other, including any which are present in both (see Self::symmetric_difference if that is undesirable).

This is equivalent to using the | operator (e.g. ops::BitOr), as in flags | other.

Source

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

Returns the difference between the flags in self and other.

Specifically, the returned set contains all flags present in self, except for the ones present in other.

It is also conceptually equivalent to the “bit-clear” operation: flags & !other (and this syntax is also supported).

This is equivalent to using the - operator (e.g. ops::Sub), as in flags - other.

Source

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

Returns the symmetric difference between the flags in self and other.

Specifically, the returned set contains the flags present which are present in self or other, but that are not present in both. Equivalently, it contains the flags present in exactly one of the sets self and other.

This is equivalent to using the ^ operator (e.g. ops::BitXor), as in flags ^ other.

Source

pub const fn complement(self) -> Self

Returns the complement of this set of flags.

Specifically, the returned set contains all the flags which are not set in self, but which are allowed for this type.

Alternatively, it can be thought of as the set difference between Self::all() and self (e.g. Self::all() - self)

This is equivalent to using the ! operator (e.g. ops::Not), as in !flags.

Trait Implementations§

Source§

impl Binary for Features

Source§

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

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

impl BitAnd for Features

Source§

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

Returns the intersection between the two sets of flags.

Source§

type Output = Features

The resulting type after applying the & operator.
Source§

impl BitAndAssign for Features

Source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

Source§

impl BitOr for Features

Source§

fn bitor(self, other: Features) -> Self

Returns the union of the two sets of flags.

Source§

type Output = Features

The resulting type after applying the | operator.
Source§

impl BitOrAssign for Features

Source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

Source§

impl BitXor for Features

Source§

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

Returns the left flags, but with all the right flags toggled.

Source§

type Output = Features

The resulting type after applying the ^ operator.
Source§

impl BitXorAssign for Features

Source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

Source§

impl Clone for Features

Source§

fn clone(&self) -> Features

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 Features

Source§

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

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

impl Extend<Features> for Features

Source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
Source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
Source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
Source§

impl FromIterator<Features> for Features

Source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
Source§

impl Hash for Features

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 LowerHex for Features

Source§

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

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

impl Not for Features

Source§

fn not(self) -> Self

Returns the complement of this set of flags.

Source§

type Output = Features

The resulting type after applying the ! operator.
Source§

impl Octal for Features

Source§

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

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

impl Ord for Features

Source§

fn cmp(&self, other: &Features) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for Features

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for Features

Source§

fn partial_cmp(&self, other: &Features) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Sub for Features

Source§

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

Returns the set difference of the two sets of flags.

Source§

type Output = Features

The resulting type after applying the - operator.
Source§

impl SubAssign for Features

Source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

Source§

impl UpperHex for Features

Source§

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

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

impl Copy for Features

Source§

impl Eq for Features

Source§

impl StructuralPartialEq for Features

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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 T
where 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 T
where T: Clone,

Source§

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 T
where U: Into<T>,

Source§

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 T
where U: TryFrom<T>,

Source§

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.