feat(naga): add UnimplementedEnableExtension::Subgroups

This commit is contained in:
Erich Gubler
2025-04-03 15:11:10 -04:00
committed by Jim Blandy
parent b7711e56ad
commit 1b51f0aa40

View File

@@ -66,6 +66,7 @@ impl EnableExtension {
const F16: &'static str = "f16";
const CLIP_DISTANCES: &'static str = "clip_distances";
const DUAL_SOURCE_BLENDING: &'static str = "dual_source_blending";
const SUBGROUPS: &'static str = "subgroups";
/// Convert from a sentinel word in WGSL into its associated [`EnableExtension`], if possible.
pub(crate) fn from_ident(word: &str, span: Span) -> Result<Self> {
@@ -77,6 +78,7 @@ impl EnableExtension {
Self::DUAL_SOURCE_BLENDING => {
Self::Implemented(ImplementedEnableExtension::DualSourceBlending)
}
Self::SUBGROUPS => Self::Unimplemented(UnimplementedEnableExtension::Subgroups),
_ => return Err(Box::new(Error::UnknownEnableExtension(span, word))),
})
}
@@ -90,6 +92,7 @@ impl EnableExtension {
},
Self::Unimplemented(kind) => match kind {
UnimplementedEnableExtension::ClipDistances => Self::CLIP_DISTANCES,
UnimplementedEnableExtension::Subgroups => Self::SUBGROUPS,
},
}
}
@@ -121,12 +124,19 @@ pub enum UnimplementedEnableExtension {
///
/// [`enable clip_distances;`]: https://www.w3.org/TR/WGSL/#extension-clip_distances
ClipDistances,
/// Enables subgroup built-ins in all languages.
///
/// In the WGSL standard, this corresponds to [`enable subgroups;`].
///
/// [`enable subgroups;`]: https://www.w3.org/TR/WGSL/#extension-subgroups
Subgroups,
}
impl UnimplementedEnableExtension {
pub(crate) const fn tracking_issue_num(self) -> u16 {
match self {
Self::ClipDistances => 6236,
Self::Subgroups => 5555,
}
}
}