pub struct Features {Show 37 fields
pub timestamps: bool,
pub multi_draw_indirect: bool,
pub draw_indirect_first_instance: bool,
pub draw_indirect_count: bool,
pub bindless: bool,
pub subgroups: bool,
pub subgroups_webgpu: bool,
pub subgroup_stages: u32,
pub subgroup_ops: u32,
pub subgroup_size_control: bool,
pub subgroup_extended_types: bool,
pub draw_parameters: bool,
pub shader_f16: bool,
pub shader_f64: bool,
pub shader_i16: bool,
pub shader_i64: bool,
pub shader_i8: bool,
pub storage_16bit: bool,
pub uniform_16bit: bool,
pub push_constant_16bit: bool,
pub uniform_standard_layout: bool,
pub demote: bool,
pub clip_distances: bool,
pub primitive_index: bool,
pub sample_shading: bool,
pub storage_8bit: bool,
pub texture_bc: bool,
pub anisotropy: bool,
pub depth_clamp: bool,
pub vertex_stores: bool,
pub fragment_stores: bool,
pub storage_write_without_format: bool,
pub buffer_address: bool,
pub swapchain: bool,
pub mesh_shader: bool,
pub ray_query: bool,
pub ray_pipeline: bool,
}Expand description
what a device can do beyond the Basis level
Fields§
§timestamps: boolGPU timestamps on the queue (Timestamps)
multi_draw_indirect: booldraw_indexed_indirect_multi (several draws from one buffer)
draw_indirect_first_instance: boola first instance other than 0 in indirect draws
draw_indirect_count: booldraw_indexed_indirect_count
bindless: boolBindless tables (descriptor indexing, update after bind)
subgroups: boolsubgroup operations (basic, vote, ballot, arithmetic, shuffle) in compute shaders
subgroups_webgpu: boolwhat WebGPU’s subgroups feature needs (lib/wgsl’s enable subgroups): the operations
of subgroups plus relative shuffles and quad operations, in compute and fragment shaders
subgroup_stages: u32the stages with subgroup operations (subgroup_stage::) and the operations (subgroup_op::), as the device reports them
subgroup_ops: u32§subgroup_size_control: boolDevice::create_compute_pipeline_sized: a required subgroup size (WGSL @subgroup_size; Limits::subgroup_min_size ..= subgroup_max_size)
subgroup_extended_types: boolsubgroup operations on f16 values too
draw_parameters: boolthe base vertex / base instance / draw index builtins
shader_f16: bool§shader_f64: bool§shader_i16: bool§shader_i64: bool§shader_i8: bool§storage_16bit: bool16 / 8 bit values in storage buffers
uniform_16bit: bool16-bit values in uniform buffers and push constants too (WGSL f16 there)
push_constant_16bit: bool§uniform_standard_layout: booluniform buffers in the storage layout (uniformBufferStandardLayout: a WGSL uniform buffer whose layout is not std140, e.g. mat2x2f)
demote: boolOpDemoteToHelperInvocation (lib/wgsl’s discard at the level Voll)
clip_distances: boolWGSL @builtin(clip_distances), @builtin(primitive_index) (geometryShader), @interpolate(.., sample) / @builtin(sample_index) (sampleRateShading)
primitive_index: bool§sample_shading: bool§storage_8bit: bool§texture_bc: boolBC1 .. BC7 compressed textures
anisotropy: bool§depth_clamp: bool§vertex_stores: boolstorage writes in vertex / fragment shaders
fragment_stores: bool§storage_write_without_format: boolstorage textures without a format in the shader
buffer_address: boolshader access to buffers by address
swapchain: boolpresentation to windows (Swapchain)
mesh_shader: boolpresent on the adapter, not enabled yet: mesh shaders, ray queries, ray-tracing pipelines
ray_query: bool§ray_pipeline: bool