use morok_dtype::DType;
pub use morok_device::device::{ProgramSpec, Variable};
pub use morok_dtype::DeviceSpec;
#[derive(Debug, Clone)]
pub struct RenderedKernel {
pub code: String,
pub name: String,
pub buffer_args: Vec<BufferArg>,
pub var_names: Vec<String>,
pub global_size: Option<[usize; 3]>,
pub local_size: Option<[usize; 3]>,
}
#[derive(Debug, Clone)]
pub struct BufferArg {
pub index: usize,
pub name: String,
pub dtype: DType,
pub is_output: bool,
}
impl RenderedKernel {
pub fn new(code: String, name: String) -> Self {
Self { code, name, buffer_args: Vec::new(), var_names: Vec::new(), global_size: None, local_size: None }
}
pub fn add_buffer_arg(&mut self, arg: BufferArg) {
self.buffer_args.push(arg);
}
pub fn set_work_sizes(&mut self, global: [usize; 3], local: [usize; 3]) {
self.global_size = Some(global);
self.local_size = Some(local);
}
}