use crate::buffer::Arena;
pub fn run_rng_normal(
arena: &Arena,
queue: &wgpu::Queue,
dst_byte_off: usize,
len: usize,
mean: f32,
scale: f32,
key: u64,
op_seed: Option<f32>,
opts: rlx_ir::RngOptions,
) {
if len == 0 {
return;
}
assert_eq!(
dst_byte_off % 4,
0,
"rng_host: dst_byte_off must be f32-aligned"
);
let mut host = vec![0f32; len];
rlx_ir::fill_normal_like(&mut host, mean, scale, opts, key, op_seed);
arena.write_bytes_range(queue, dst_byte_off, bytemuck::cast_slice(&host));
}
pub fn run_rng_uniform(
arena: &Arena,
queue: &wgpu::Queue,
dst_byte_off: usize,
len: usize,
low: f32,
high: f32,
key: u64,
op_seed: Option<f32>,
opts: rlx_ir::RngOptions,
) {
if len == 0 {
return;
}
assert_eq!(
dst_byte_off % 4,
0,
"rng_host: dst_byte_off must be f32-aligned"
);
let mut host = vec![0f32; len];
rlx_ir::fill_uniform_like(&mut host, low, high, opts, key, op_seed);
arena.write_bytes_range(queue, dst_byte_off, bytemuck::cast_slice(&host));
}