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 } ;
82use core:: {
93 ffi:: CStr ,
104 mem:: { self , MaybeUninit } ,
@@ -832,6 +826,7 @@ impl super::Device {
832826 fn create_shader_module_impl (
833827 & self ,
834828 spv : & [ u32 ] ,
829+ label : & crate :: Label < ' _ > ,
835830 ) -> Result < vk:: ShaderModule , crate :: DeviceError > {
836831 let vk_info = vk:: ShaderModuleCreateInfo :: default ( )
837832 . flags ( vk:: ShaderModuleCreateFlags :: empty ( ) )
@@ -849,6 +844,11 @@ impl super::Device {
849844 // VK_ERROR_INVALID_SHADER_NV
850845 super :: map_host_device_oom_err ( err)
851846 }
847+
848+ if let Some ( label) = label {
849+ unsafe { self . shared . set_object_name ( raw, label) } ;
850+ }
851+
852852 Ok ( raw)
853853 }
854854
@@ -924,7 +924,7 @@ impl super::Device {
924924 naga:: back:: spv:: write_vec ( & module, & info, options, Some ( & pipeline_options) )
925925 }
926926 . 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 ) ?
928928 }
929929 } ;
930930
@@ -1899,19 +1899,20 @@ impl crate::Device for super::Device {
18991899 desc : & crate :: ShaderModuleDescriptor ,
19001900 shader : crate :: ShaderInput ,
19011901 ) -> 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)
19041904 if self
19051905 . shared
19061906 . workarounds
19071907 . 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 ,
19141913 }
1914+ }
1915+ crate :: ShaderInput :: Naga ( naga_shader) => {
19151916 let mut naga_options = self . naga_options . clone ( ) ;
19161917 naga_options. debug_info =
19171918 naga_shader
@@ -1930,32 +1931,27 @@ impl crate::Device for super::Device {
19301931 binding_array : naga:: proc:: BoundsCheckPolicy :: Unchecked ,
19311932 } ;
19321933 }
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 ,
19411939 )
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 ) ?)
19421945 }
1943- crate :: ShaderInput :: SpirV ( data) => Cow :: Borrowed ( data) ,
19441946 crate :: ShaderInput :: Msl { .. }
19451947 | crate :: ShaderInput :: Dxil { .. }
19461948 | crate :: ShaderInput :: Hlsl { .. }
19471949 | crate :: ShaderInput :: Glsl { .. } => unreachable ! ( ) ,
19481950 } ;
19491951
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-
19561952 self . counters . shader_modules . add ( 1 ) ;
19571953
1958- Ok ( super :: ShaderModule :: Raw ( raw ) )
1954+ Ok ( shader_module )
19591955 }
19601956
19611957 unsafe fn destroy_shader_module ( & self , module : super :: ShaderModule ) {
0 commit comments