use crate::spec::types::Convention;
#[derive(Debug, Clone)]
pub struct ConformDispatchConfig {
pub workgroup_size: u32,
pub workgroup_count: u32,
pub convention: Convention,
pub lookup_data: Option<Vec<u8>>,
pub buffer_init: crate::spec::types::BufferInitPolicy,
}
impl ConformDispatchConfig {
#[must_use]
#[inline]
pub fn to_core(&self) -> vyre::DispatchConfig {
let mut config = vyre::DispatchConfig::default();
config.profile = Some(format!(
"conform:wg_size={};wg_count={};convention={:?};buffer_init={:?};lookup_bytes={}",
self.workgroup_size,
self.workgroup_count,
self.convention,
self.buffer_init,
self.lookup_data.as_ref().map_or(0, Vec::len)
));
config
}
}
impl Default for ConformDispatchConfig {
fn default() -> Self {
Self {
workgroup_size: 1,
workgroup_count: 1,
convention: Convention::V1,
lookup_data: None,
buffer_init: crate::spec::types::BufferInitPolicy::Zero,
}
}
}
#[inline]
pub fn run_with_all_init_policies<F>(mut op: F)
where
F: FnMut(crate::spec::types::BufferInitPolicy),
{
op(crate::spec::types::BufferInitPolicy::Zero);
op(crate::spec::types::BufferInitPolicy::Poison);
}