diff --git a/crates/coremem/src/diagnostics.rs b/crates/coremem/src/diagnostics.rs index 3a56807..59455fa 100644 --- a/crates/coremem/src/diagnostics.rs +++ b/crates/coremem/src/diagnostics.rs @@ -50,7 +50,7 @@ impl Diagnostics { render_time, block_time, render_prep_time, - overall_time - step_time - stim_time - block_time - render_prep_time, + overall_time - step_time /*- stim_time*/ - block_time - render_prep_time, ) } } diff --git a/crates/coremem/src/driver.rs b/crates/coremem/src/driver.rs index d01990c..7b554ff 100644 --- a/crates/coremem/src/driver.rs +++ b/crates/coremem/src/driver.rs @@ -31,7 +31,9 @@ pub struct Driver { } impl Driver { - pub fn new(state: S) -> Self { + pub fn new(mut state: S) -> Self { + let diag = SyncDiagnostics::new(); + state.use_diagnostics(diag.clone()); Self { state, renderer: Arc::new(MultiRenderer::new()), @@ -45,7 +47,7 @@ impl Driver { ], stimuli: StimuliAdapter::new(), sim_end_time: None, - diag: SyncDiagnostics::new(), + diag, last_diag_time: Instant::now(), } } @@ -125,6 +127,7 @@ impl Deserialize<'a> + 'stati let ser = render::SerializerRenderer::new(state_file); let loaded = ser.try_load().map(|s| { self.state = s.state; + self.state.use_diagnostics(self.diag.clone()); }).is_some(); self.add_renderer(ser, state_file, snapshot_frequency, None); loaded diff --git a/crates/coremem/src/sim/mod.rs b/crates/coremem/src/sim/mod.rs index cc02f18..ddce16b 100644 --- a/crates/coremem/src/sim/mod.rs +++ b/crates/coremem/src/sim/mod.rs @@ -1,3 +1,4 @@ +use crate::diagnostics::SyncDiagnostics; use crate::geom::{Coord, Cube, Index, InvertedRegion, Region}; use crate::cross::mat::{FullyGenericMaterial, Material, Vacuum}; use crate::cross::real::Real; @@ -209,6 +210,9 @@ pub trait AbstractSim: Sync { /// Take a "snapshot" of the simulation, dropping all material-specific information. fn to_static(&self) -> StaticSim; fn to_generic(&self) -> GenericSim; + fn use_diagnostics(&mut self, _diag: SyncDiagnostics) { + // optional + } //--- HELPER METHODS below (derived) ---// diff --git a/crates/coremem/src/sim/spirv/mod.rs b/crates/coremem/src/sim/spirv/mod.rs index 6af778c..7f750ee 100644 --- a/crates/coremem/src/sim/spirv/mod.rs +++ b/crates/coremem/src/sim/spirv/mod.rs @@ -152,6 +152,10 @@ where diag: self.diag.clone(), } } + + fn use_diagnostics(&mut self, diag: SyncDiagnostics) { + self.diag = diag; + } } impl SpirvSim