spirv: re-order the SimBackend parameters to be more consistent

This commit is contained in:
2022-07-27 12:47:51 -07:00
parent 6b51fcea02
commit 7698e0e5ba
3 changed files with 14 additions and 8 deletions

View File

@@ -13,14 +13,14 @@ impl<R: Real, M: Material<R>> SimBackend<R, M> for CpuBackend {
}
fn step_n(
&self,
num_steps: u32,
meta: SimMeta<R>,
mat: &[M],
stim_e: &[Vec3<R>],
stim_h: &[Vec3<R>],
mat: &[M],
e: &mut [Vec3<R>],
h: &mut [Vec3<R>],
m: &mut [Vec3<R>],
num_steps: u32,
) {
for _ in 0..num_steps {
// step E field

View File

@@ -63,14 +63,14 @@ impl<R: Copy, M: Send + Sync + HasEntryPoints<R>> SimBackend<R, M> for WgpuBacke
fn step_n(
&self,
num_steps: u32,
meta: SimMeta<R>,
mat: &[M],
stim_cpu_e: &[Vec3<R>],
stim_cpu_h: &[Vec3<R>],
mat: &[M],
e: &mut [Vec3<R>],
h: &mut [Vec3<R>],
m: &mut [Vec3<R>],
num_steps: u32,
) {
let field_bytes = meta.dim.product_sum() as usize * std::mem::size_of::<Vec3<f32>>();

View File

@@ -16,18 +16,24 @@ mod gpu;
pub use cpu::CpuBackend;
pub use gpu::WgpuBackend;
/// while the SpirvSim type owns all the stateful data,
/// it dispatches to a pluggable backend for advancing that state.
///
/// this backend type abstracts over the specific compute used to advance the state.
/// it could advance the state locally, on the CPU,
/// or it could dispatch to a SPIR-V device, like a GPU.
pub trait SimBackend<R, M> {
fn new(volume: u64) -> Self;
fn step_n(
&self,
num_steps: u32,
meta: SimMeta<R>,
mat: &[M],
stim_e: &[Vec3<R>],
stim_h: &[Vec3<R>],
mat: &[M],
e: &mut [Vec3<R>],
h: &mut [Vec3<R>],
m: &mut [Vec3<R>],
num_steps: u32,
);
}
@@ -137,14 +143,14 @@ where
let (stim_e, stim_h) = self.eval_stimulus(stim);
let backend = &**self.backend.as_ref().unwrap();
backend.step_n(
num_steps,
self.meta,
self.mat.as_slice(),
stim_e.as_slice().unwrap(),
stim_h.as_slice().unwrap(),
self.mat.as_slice(),
self.e.as_mut_slice(),
self.h.as_mut_slice(),
self.m.as_mut_slice(),
num_steps,
);
self.step_no += num_steps as u64;
}