use crate::cuda::logup_zerocheck::BlockCtx;
pub(super) fn build_block_ctxs(
blocks_per_air: impl IntoIterator<Item = u32>,
) -> (Vec<BlockCtx>, Vec<u32>) {
let mut block_ctxs: Vec<BlockCtx> = Vec::new();
let mut air_offsets: Vec<u32> = vec![0];
for (air_idx, n_blocks) in blocks_per_air.into_iter().enumerate() {
for local_idx in 0..n_blocks {
block_ctxs.push(BlockCtx {
local_block_idx_x: local_idx,
air_idx: air_idx as u32,
});
}
air_offsets.push(block_ctxs.len() as u32);
}
(block_ctxs, air_offsets)
}