enki-anu 0.1.1

BorrowEngine, task recording, and pipeline synthesis for the Enki runtime
Documentation
use crate::nam_args_api::IngressContext;
use ash::vk;

pub struct ComputeTask<'a> {
    pub pipeline: vk::Pipeline,
    pub layout: vk::PipelineLayout,
    pub grid_size: (u32, u32, u32),
    pub local_size: (u32, u32, u32),
    pub args_ctx: IngressContext<'a>,
    pub stack_bda: u64,
    pub _stack_buffer: Option<apsu::GpuStackBuffer>,
}

pub struct PresentBufferTask {
    pub buffer_id: u32,
    pub buffer: vk::Buffer,
    pub offset: u64,
    pub width: u32,
    pub height: u32,
}

pub enum RawTask<'a> {
    Compute(ComputeTask<'a>),
    PresentBuffer(PresentBufferTask),
    WriteTimestamp {
        query_index: u32,
        stage: vk::PipelineStageFlags2,
    },
}

impl<'a> Default for ComputeTask<'a> {
    fn default() -> Self {
        Self {
            pipeline: vk::Pipeline::null(),
            layout: vk::PipelineLayout::null(),
            grid_size: (1, 1, 1),
            local_size: (1, 1, 1),
            args_ctx: IngressContext::new(),
            stack_bda: 0,
            _stack_buffer: None,
        }
    }
}