@@ -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 ) ]
1212pub 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
2923impl 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