From 1b51f0aa4019d6696764bc30db681ed4520664e8 Mon Sep 17 00:00:00 2001 From: Erich Gubler Date: Thu, 3 Apr 2025 15:11:10 -0400 Subject: [PATCH] feat(naga): add `UnimplementedEnableExtension::Subgroups` --- .../src/front/wgsl/parse/directive/enable_extension.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/naga/src/front/wgsl/parse/directive/enable_extension.rs b/naga/src/front/wgsl/parse/directive/enable_extension.rs index 3bb50a4b7b..45b359a556 100644 --- a/naga/src/front/wgsl/parse/directive/enable_extension.rs +++ b/naga/src/front/wgsl/parse/directive/enable_extension.rs @@ -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 { @@ -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, } } }