Skip to content

Commit 06ea963

Browse files
refactor(wgsl-in): factor out wgpu-specific fields of EnableExtensions to new wgpu: WgpuEnableExtensions field
1 parent 7fdd76f commit 06ea963

1 file changed

Lines changed: 41 additions & 20 deletions

File tree

naga/src/front/wgsl/parse/directive/enable_extension.rs

Lines changed: 41 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,63 +10,54 @@ use alloc::boxed::Box;
1010
/// Tracks the status of every enable-extension known to Naga.
1111
#[derive(Clone, Debug, Eq, PartialEq)]
1212
pub struct EnableExtensions {
13-
/// Whether `enable wgpu_mesh_shader;` was written earlier in the shader module.
14-
wgpu_mesh_shader: bool,
15-
/// Whether `enable wgpu_ray_query;` was written earlier in the shader module.
16-
wgpu_ray_query: bool,
17-
/// Whether `enable wgpu_ray_query_vertex_return;` was written earlier in the shader module.
18-
wgpu_ray_query_vertex_return: bool,
1913
/// Whether `enable dual_source_blending;` was written earlier in the shader module.
2014
dual_source_blending: bool,
2115
/// Whether `enable f16;` was written earlier in the shader module.
2216
f16: bool,
2317
/// Whether `enable clip_distances;` was written earlier in the shader module.
2418
clip_distances: bool,
25-
/// Whether `enable wgpu_cooperative_matrix;` was written earlier in the shader module.
26-
wgpu_cooperative_matrix: bool,
19+
/// Native-only extensions.
20+
wgpu: WgpuEnableExtensions,
2721
}
2822

2923
impl EnableExtensions {
3024
pub(crate) const fn empty() -> Self {
3125
Self {
32-
wgpu_mesh_shader: false,
33-
wgpu_ray_query: false,
34-
wgpu_ray_query_vertex_return: false,
26+
wgpu: WgpuEnableExtensions::empty(),
3527
f16: false,
3628
dual_source_blending: false,
3729
clip_distances: false,
38-
wgpu_cooperative_matrix: false,
3930
}
4031
}
4132

4233
/// Add an enable-extension to the set requested by a module.
4334
pub(crate) fn add(&mut self, ext: ImplementedEnableExtension) {
4435
let field = match ext {
45-
ImplementedEnableExtension::WgpuMeshShader => &mut self.wgpu_mesh_shader,
46-
ImplementedEnableExtension::WgpuRayQuery => &mut self.wgpu_ray_query,
36+
ImplementedEnableExtension::WgpuMeshShader => &mut self.wgpu.mesh_shader,
37+
ImplementedEnableExtension::WgpuRayQuery => &mut self.wgpu.ray_query,
4738
ImplementedEnableExtension::WgpuRayQueryVertexReturn => {
48-
&mut self.wgpu_ray_query_vertex_return
39+
&mut self.wgpu.ray_query_vertex_return
4940
}
5041
ImplementedEnableExtension::DualSourceBlending => &mut self.dual_source_blending,
5142
ImplementedEnableExtension::F16 => &mut self.f16,
5243
ImplementedEnableExtension::ClipDistances => &mut self.clip_distances,
53-
ImplementedEnableExtension::WgpuCooperativeMatrix => &mut self.wgpu_cooperative_matrix,
44+
ImplementedEnableExtension::WgpuCooperativeMatrix => &mut self.wgpu.cooperative_matrix,
5445
};
5546
*field = true;
5647
}
5748

5849
/// Query whether an enable-extension tracked here has been requested.
5950
pub(crate) const fn contains(&self, ext: ImplementedEnableExtension) -> bool {
6051
match ext {
61-
ImplementedEnableExtension::WgpuMeshShader => self.wgpu_mesh_shader,
62-
ImplementedEnableExtension::WgpuRayQuery => self.wgpu_ray_query,
52+
ImplementedEnableExtension::WgpuMeshShader => self.wgpu.mesh_shader,
53+
ImplementedEnableExtension::WgpuRayQuery => self.wgpu.ray_query,
6354
ImplementedEnableExtension::WgpuRayQueryVertexReturn => {
64-
self.wgpu_ray_query_vertex_return
55+
self.wgpu.ray_query_vertex_return
6556
}
6657
ImplementedEnableExtension::DualSourceBlending => self.dual_source_blending,
6758
ImplementedEnableExtension::F16 => self.f16,
6859
ImplementedEnableExtension::ClipDistances => self.clip_distances,
69-
ImplementedEnableExtension::WgpuCooperativeMatrix => self.wgpu_cooperative_matrix,
60+
ImplementedEnableExtension::WgpuCooperativeMatrix => self.wgpu.cooperative_matrix,
7061
}
7162
}
7263
}
@@ -77,6 +68,36 @@ impl Default for EnableExtensions {
7768
}
7869
}
7970

71+
/// Native-only extensions under [`EnableExtensions::wgpu`].
72+
#[derive(Clone, Debug, Eq, PartialEq)]
73+
pub struct WgpuEnableExtensions {
74+
/// Whether `enable wgpu_mesh_shader;` was written earlier in the shader module.
75+
mesh_shader: bool,
76+
/// Whether `enable wgpu_ray_query;` was written earlier in the shader module.
77+
ray_query: bool,
78+
/// Whether `enable wgpu_ray_query_vertex_return;` was written earlier in the shader module.
79+
ray_query_vertex_return: bool,
80+
/// Whether `enable wgpu_cooperative_matrix;` was written earlier in the shader module.
81+
cooperative_matrix: bool,
82+
}
83+
84+
impl WgpuEnableExtensions {
85+
pub(crate) const fn empty() -> Self {
86+
Self {
87+
mesh_shader: false,
88+
ray_query: false,
89+
ray_query_vertex_return: false,
90+
cooperative_matrix: false,
91+
}
92+
}
93+
}
94+
95+
impl Default for WgpuEnableExtensions {
96+
fn default() -> Self {
97+
Self::empty()
98+
}
99+
}
100+
80101
/// An enable-extension not guaranteed to be present in all environments.
81102
///
82103
/// WGSL spec.: <https://www.w3.org/TR/WGSL/#enable-extensions-sec>

0 commit comments

Comments
 (0)