1
- use alloc:: {
2
- borrow:: { Cow , ToOwned as _} ,
3
- collections:: BTreeMap ,
4
- ffi:: CString ,
5
- sync:: Arc ,
6
- vec:: Vec ,
7
- } ;
1
+ use alloc:: { borrow:: ToOwned as _, collections:: BTreeMap , ffi:: CString , sync:: Arc , vec:: Vec } ;
8
2
use core:: {
9
3
ffi:: CStr ,
10
4
mem:: { self , MaybeUninit } ,
@@ -832,6 +826,7 @@ impl super::Device {
832
826
fn create_shader_module_impl (
833
827
& self ,
834
828
spv : & [ u32 ] ,
829
+ label : & crate :: Label < ' _ > ,
835
830
) -> Result < vk:: ShaderModule , crate :: DeviceError > {
836
831
let vk_info = vk:: ShaderModuleCreateInfo :: default ( )
837
832
. flags ( vk:: ShaderModuleCreateFlags :: empty ( ) )
@@ -849,6 +844,11 @@ impl super::Device {
849
844
// VK_ERROR_INVALID_SHADER_NV
850
845
super :: map_host_device_oom_err ( err)
851
846
}
847
+
848
+ if let Some ( label) = label {
849
+ unsafe { self . shared . set_object_name ( raw, label) } ;
850
+ }
851
+
852
852
Ok ( raw)
853
853
}
854
854
@@ -924,7 +924,7 @@ impl super::Device {
924
924
naga:: back:: spv:: write_vec ( & module, & info, options, Some ( & pipeline_options) )
925
925
}
926
926
. map_err ( |e| crate :: PipelineError :: Linkage ( stage_flags, format ! ( "{e}" ) ) ) ?;
927
- self . create_shader_module_impl ( & spv) ?
927
+ self . create_shader_module_impl ( & spv, & None ) ?
928
928
}
929
929
} ;
930
930
@@ -1899,19 +1899,20 @@ impl crate::Device for super::Device {
1899
1899
desc : & crate :: ShaderModuleDescriptor ,
1900
1900
shader : crate :: ShaderInput ,
1901
1901
) -> Result < super :: ShaderModule , crate :: ShaderError > {
1902
- let spv = match shader {
1903
- crate :: ShaderInput :: Naga ( naga_shader) => {
1902
+ let shader_module = match shader {
1903
+ crate :: ShaderInput :: Naga ( naga_shader)
1904
1904
if self
1905
1905
. shared
1906
1906
. workarounds
1907
1907
. contains ( super :: Workarounds :: SEPARATE_ENTRY_POINTS )
1908
- || !naga_shader. module . overrides . is_empty ( )
1909
- {
1910
- return Ok ( super :: ShaderModule :: Intermediate {
1911
- naga_shader,
1912
- runtime_checks : desc. runtime_checks ,
1913
- } ) ;
1908
+ || !naga_shader. module . overrides . is_empty ( ) =>
1909
+ {
1910
+ super :: ShaderModule :: Intermediate {
1911
+ naga_shader,
1912
+ runtime_checks : desc. runtime_checks ,
1914
1913
}
1914
+ }
1915
+ crate :: ShaderInput :: Naga ( naga_shader) => {
1915
1916
let mut naga_options = self . naga_options . clone ( ) ;
1916
1917
naga_options. debug_info =
1917
1918
naga_shader
@@ -1930,32 +1931,27 @@ impl crate::Device for super::Device {
1930
1931
binding_array : naga:: proc:: BoundsCheckPolicy :: Unchecked ,
1931
1932
} ;
1932
1933
}
1933
- Cow :: Owned (
1934
- naga:: back:: spv:: write_vec (
1935
- & naga_shader. module ,
1936
- & naga_shader. info ,
1937
- & naga_options,
1938
- None ,
1939
- )
1940
- . map_err ( |e| crate :: ShaderError :: Compilation ( format ! ( "{e}" ) ) ) ?,
1934
+ let spv = naga:: back:: spv:: write_vec (
1935
+ & naga_shader. module ,
1936
+ & naga_shader. info ,
1937
+ & naga_options,
1938
+ None ,
1941
1939
)
1940
+ . map_err ( |e| crate :: ShaderError :: Compilation ( format ! ( "{e}" ) ) ) ?;
1941
+ super :: ShaderModule :: Raw ( self . create_shader_module_impl ( & spv, & desc. label ) ?)
1942
+ }
1943
+ crate :: ShaderInput :: SpirV ( data) => {
1944
+ super :: ShaderModule :: Raw ( self . create_shader_module_impl ( data, & desc. label ) ?)
1942
1945
}
1943
- crate :: ShaderInput :: SpirV ( data) => Cow :: Borrowed ( data) ,
1944
1946
crate :: ShaderInput :: Msl { .. }
1945
1947
| crate :: ShaderInput :: Dxil { .. }
1946
1948
| crate :: ShaderInput :: Hlsl { .. }
1947
1949
| crate :: ShaderInput :: Glsl { .. } => unreachable ! ( ) ,
1948
1950
} ;
1949
1951
1950
- let raw = self . create_shader_module_impl ( & spv) ?;
1951
-
1952
- if let Some ( label) = desc. label {
1953
- unsafe { self . shared . set_object_name ( raw, label) } ;
1954
- }
1955
-
1956
1952
self . counters . shader_modules . add ( 1 ) ;
1957
1953
1958
- Ok ( super :: ShaderModule :: Raw ( raw ) )
1954
+ Ok ( shader_module )
1959
1955
}
1960
1956
1961
1957
unsafe fn destroy_shader_module ( & self , module : super :: ShaderModule ) {
0 commit comments