@@ -1429,7 +1429,7 @@ impl<A: HalApi> Device<A> {
14291429 self : & Arc < Self > ,
14301430 desc : & pipeline:: ShaderModuleDescriptor < ' a > ,
14311431 source : pipeline:: ShaderModuleSource < ' a > ,
1432- ) -> Result < pipeline:: ShaderModule < A > , pipeline:: CreateShaderModuleError > {
1432+ ) -> Result < Arc < pipeline:: ShaderModule < A > > , pipeline:: CreateShaderModuleError > {
14331433 self . check_is_valid ( ) ?;
14341434
14351435 let ( module, source) = match source {
@@ -1546,20 +1546,24 @@ impl<A: HalApi> Device<A> {
15461546 }
15471547 } ;
15481548
1549- Ok ( pipeline:: ShaderModule {
1549+ let module = pipeline:: ShaderModule {
15501550 raw : Some ( raw) ,
15511551 device : self . clone ( ) ,
15521552 interface : Some ( interface) ,
15531553 label : desc. label . to_string ( ) ,
1554- } )
1554+ } ;
1555+
1556+ let module = Arc :: new ( module) ;
1557+
1558+ Ok ( module)
15551559 }
15561560
15571561 #[ allow( unused_unsafe) ]
15581562 pub ( crate ) unsafe fn create_shader_module_spirv < ' a > (
15591563 self : & Arc < Self > ,
15601564 desc : & pipeline:: ShaderModuleDescriptor < ' a > ,
15611565 source : & ' a [ u32 ] ,
1562- ) -> Result < pipeline:: ShaderModule < A > , pipeline:: CreateShaderModuleError > {
1566+ ) -> Result < Arc < pipeline:: ShaderModule < A > > , pipeline:: CreateShaderModuleError > {
15631567 self . check_is_valid ( ) ?;
15641568
15651569 self . require_features ( wgt:: Features :: SPIRV_SHADER_PASSTHROUGH ) ?;
@@ -1588,12 +1592,16 @@ impl<A: HalApi> Device<A> {
15881592 }
15891593 } ;
15901594
1591- Ok ( pipeline:: ShaderModule {
1595+ let module = pipeline:: ShaderModule {
15921596 raw : Some ( raw) ,
15931597 device : self . clone ( ) ,
15941598 interface : None ,
15951599 label : desc. label . to_string ( ) ,
1596- } )
1600+ } ;
1601+
1602+ let module = Arc :: new ( module) ;
1603+
1604+ Ok ( module)
15971605 }
15981606
15991607 pub ( crate ) fn create_command_encoder (
0 commit comments