@@ -20,27 +20,48 @@ macro_rules! pipelines {
2020 ( @dispatcher $v: ident $i: expr; ) => ( { } ) ;
2121
2222 ( @dispatcher $v: ident $i: expr; pre_sort $( $entries: ident) * ) => {
23- $v. push( ( |s, e, _q, b, d, n| {
24- e. write_timestamp( & b. profiler. query_set, $i) ;
25- s. pre_sort. dispatch( e, d, n) ;
26- e. write_timestamp( & b. profiler. query_set, $i + 1 ) ;
27- } ) as Dispatcher ) ;
28-
29- $v. push( ( |s, e, q, b, _d, n| {
30- e. write_timestamp( & b. profiler. query_set, $i + 2 ) ;
31- s. sorter. sort( e, q, & b. sort. sort_buffers, Some ( n) ) ;
32- e. write_timestamp( & b. profiler. query_set, $i + 3 ) ;
33- } ) as Dispatcher ) ;
23+ :: cfg_if:: cfg_if! {
24+ if #[ cfg( not( target_arch = "wasm32" ) ) ] {
25+ $v. push( ( |s, e, _q, b, d, n| {
26+ e. write_timestamp( & b. profiler. query_set, $i) ;
27+ s. pre_sort. dispatch( e, d, n) ;
28+ e. write_timestamp( & b. profiler. query_set, $i + 1 ) ;
29+ } ) as Dispatcher ) ;
30+
31+ $v. push( ( |s, e, q, b, _d, n| {
32+ e. write_timestamp( & b. profiler. query_set, $i + 2 ) ;
33+ s. sorter. sort( e, q, & b. sort. sort_buffers, Some ( n) ) ;
34+ e. write_timestamp( & b. profiler. query_set, $i + 3 ) ;
35+ } ) as Dispatcher ) ;
36+ } else {
37+ $v. push( ( |s, e, _q, _b, d, n| {
38+ s. pre_sort. dispatch( e, d, n) ;
39+ } ) as Dispatcher ) ;
40+
41+ $v. push( ( |s, e, q, b, _d, n| {
42+ s. sorter. sort( e, q, & b. sort. sort_buffers, Some ( n) ) ;
43+ } ) as Dispatcher ) ;
44+ }
45+ }
3446
3547 pipelines!( @dispatcher $v $i + 4 ; $( $entries) * ) ;
3648 } ;
3749
3850 ( @dispatcher $v: ident $i: expr; $entry: ident $( $entries: ident) * ) => {
39- $v. push( ( |s, e, _q, b, d, n| {
40- e. write_timestamp( & b. profiler. query_set, $i) ;
41- s. $entry. dispatch( e, d, n) ;
42- e. write_timestamp( & b. profiler. query_set, $i + 1 ) ;
43- } ) as Dispatcher ) ;
51+ :: cfg_if:: cfg_if! {
52+ if #[ cfg( not( target_arch = "wasm32" ) ) ] {
53+ $v. push( ( |s, e, _q, b, d, n| {
54+ e. write_timestamp( & b. profiler. query_set, $i) ;
55+ s. $entry. dispatch( e, d, n) ;
56+ e. write_timestamp( & b. profiler. query_set, $i + 1 ) ;
57+ } ) as Dispatcher ) ;
58+ } else {
59+ $v. push( ( |s, e, _q, _b, d, n| {
60+ s. $entry. dispatch( e, d, n) ;
61+ } ) as Dispatcher ) ;
62+ }
63+ }
64+
4465 pipelines!( @dispatcher $v $i + 2 ; $( $entries) * ) ;
4566 } ;
4667
@@ -242,6 +263,7 @@ macro_rules! pipelines {
242263 dispatchers. into_iter( )
243264 }
244265
266+ #[ cfg( not( target_arch = "wasm32" ) ) ]
245267 pub fn dispatch_all(
246268 & self ,
247269 device: & wgpu:: Device ,
@@ -280,6 +302,22 @@ macro_rules! pipelines {
280302 readback_buffer
281303 }
282304
305+ #[ cfg( target_arch = "wasm32" ) ]
306+ pub fn dispatch_all(
307+ & self ,
308+ device: & wgpu:: Device ,
309+ encoder: & mut wgpu:: CommandEncoder ,
310+ queue: & wgpu:: Queue ,
311+ buffers: & Buffers ,
312+ descriptor: & wgpu:: ComputePassDescriptor <' _>,
313+ num_particles: u32 ,
314+ ) {
315+ for dispatch in Self :: iter( ) {
316+ dispatch( self , encoder, queue, buffers, descriptor, num_particles) ;
317+ }
318+ }
319+
320+ #[ cfg( not( target_arch = "wasm32" ) ) ]
283321 pub fn profile( & self , queue: & wgpu:: Queue , readback_buffer: wgpu:: Buffer , set_profiler: impl FnOnce ( ComputeShaderPerformance ) + Send + Sync + ' static ) {
284322 let period = queue. get_timestamp_period( ) ; // ns/tick
285323
0 commit comments