@@ -131,7 +131,6 @@ impl<'a> DerivedModule<'a> {
131131 | TypeInner :: Atomic { .. }
132132 | TypeInner :: AccelerationStructure { .. }
133133 | TypeInner :: RayQuery { .. } => ty. inner . clone ( ) ,
134-
135134 TypeInner :: Pointer { base, space } => TypeInner :: Pointer {
136135 base : self . import_type ( base) ,
137136 space : * space,
@@ -160,6 +159,17 @@ impl<'a> DerivedModule<'a> {
160159 base : self . import_type ( base) ,
161160 size : * size,
162161 } ,
162+ TypeInner :: CooperativeMatrix {
163+ columns,
164+ rows,
165+ scalar,
166+ role,
167+ } => TypeInner :: CooperativeMatrix {
168+ columns : * columns,
169+ rows : * rows,
170+ scalar : * scalar,
171+ role : * role,
172+ } ,
163173 } ,
164174 } ;
165175 let span = self . shader . as_ref ( ) . unwrap ( ) . types . get_span ( * h_type) ;
@@ -212,6 +222,7 @@ impl<'a> DerivedModule<'a> {
212222 binding : gv. binding ,
213223 ty : self . import_type ( & gv. ty ) ,
214224 init : gv. init . map ( |c| self . import_global_expression ( c) ) ,
225+ memory_decorations : gv. memory_decorations ,
215226 } ;
216227
217228 let span = self
@@ -319,7 +330,6 @@ impl<'a> DerivedModule<'a> {
319330 . iter ( )
320331 . map ( |stmt| {
321332 match stmt {
322- // remap function calls
323333 Statement :: Call {
324334 function,
325335 arguments,
@@ -329,8 +339,6 @@ impl<'a> DerivedModule<'a> {
329339 arguments : arguments. iter ( ) . map ( |expr| map_expr ! ( expr) ) . collect ( ) ,
330340 result : result. as_ref ( ) . map ( |result| map_expr ! ( result) ) ,
331341 } ,
332-
333- // recursively
334342 Statement :: Block ( b) => Statement :: Block ( map_block ! ( b) ) ,
335343 Statement :: If {
336344 condition,
@@ -361,8 +369,6 @@ impl<'a> DerivedModule<'a> {
361369 continuing : map_block ! ( continuing) ,
362370 break_if : map_expr_opt ! ( break_if) ,
363371 } ,
364-
365- // map expressions
366372 Statement :: Emit ( exprs) => {
367373 // iterate once to add expressions that should NOT be part of the emit statement
368374 for expr in exprs. clone ( ) {
@@ -513,12 +519,18 @@ impl<'a> DerivedModule<'a> {
513519 value : map_expr ! ( value) ,
514520 }
515521 }
516- // else just copy
517522 Statement :: Break
518523 | Statement :: Continue
519524 | Statement :: Kill
520525 | Statement :: MemoryBarrier ( _)
521526 | Statement :: ControlBarrier ( _) => stmt. clone ( ) ,
527+ Statement :: RayPipelineFunction ( ray_pipeline_function) => {
528+ Statement :: RayPipelineFunction ( * ray_pipeline_function)
529+ }
530+ Statement :: CooperativeStore { target, data } => Statement :: CooperativeStore {
531+ target : map_expr ! ( target) ,
532+ data : * data,
533+ } ,
522534 }
523535 } )
524536 . collect ( ) ;
@@ -722,12 +734,10 @@ impl<'a> DerivedModule<'a> {
722734 convert : * convert,
723735 } ,
724736 Expression :: ArrayLength ( expr) => Expression :: ArrayLength ( map_expr ! ( expr) ) ,
725-
726737 Expression :: LocalVariable ( _) | Expression :: FunctionArgument ( _) => {
727738 is_external = true ;
728739 expr. clone ( )
729740 }
730-
731741 Expression :: AtomicResult { ty, comparison } => Expression :: AtomicResult {
732742 ty : self . import_type ( ty) ,
733743 comparison : * comparison,
@@ -758,6 +768,22 @@ impl<'a> DerivedModule<'a> {
758768 Expression :: SubgroupOperationResult { ty } => Expression :: SubgroupOperationResult {
759769 ty : self . import_type ( ty) ,
760770 } ,
771+ Expression :: CooperativeLoad {
772+ columns,
773+ rows,
774+ role,
775+ data,
776+ } => Expression :: CooperativeLoad {
777+ columns : * columns,
778+ rows : * rows,
779+ role : * role,
780+ data : * data,
781+ } ,
782+ Expression :: CooperativeMultiplyAdd { a, b, c } => Expression :: CooperativeMultiplyAdd {
783+ a : map_expr ! ( a) ,
784+ b : map_expr ! ( b) ,
785+ c : map_expr ! ( c) ,
786+ } ,
761787 } ;
762788
763789 if !non_emitting_only || is_external {
@@ -910,6 +936,7 @@ impl<'a> DerivedModule<'a> {
910936 workgroup_size_overrides : ep. workgroup_size_overrides ,
911937 mesh_info : ep. mesh_info . clone ( ) ,
912938 task_payload : ep. task_payload ,
939+ incoming_ray_payload : ep. incoming_ray_payload ,
913940 } )
914941 . collect ( ) ;
915942
0 commit comments