Skip to main content

enki_anu/recording/
task.rs

1use crate::nam_args_api::IngressContext;
2use ash::vk;
3
4pub struct ComputeTask<'a> {
5    pub pipeline: vk::Pipeline,
6    pub layout: vk::PipelineLayout,
7    pub grid_size: (u32, u32, u32),
8    pub local_size: (u32, u32, u32),
9    pub args_ctx: IngressContext<'a>,
10    pub stack_bda: u64,
11    pub _stack_buffer: Option<apsu::GpuStackBuffer>,
12}
13
14pub struct PresentBufferTask {
15    pub buffer_id: u32,
16    pub buffer: vk::Buffer,
17    pub offset: u64,
18    pub width: u32,
19    pub height: u32,
20}
21
22pub enum RawTask<'a> {
23    Compute(ComputeTask<'a>),
24    PresentBuffer(PresentBufferTask),
25    WriteTimestamp {
26        query_index: u32,
27        stage: vk::PipelineStageFlags2,
28    },
29}
30
31impl<'a> Default for ComputeTask<'a> {
32    fn default() -> Self {
33        Self {
34            pipeline: vk::Pipeline::null(),
35            layout: vk::PipelineLayout::null(),
36            grid_size: (1, 1, 1),
37            local_size: (1, 1, 1),
38            args_ctx: IngressContext::new(),
39            stack_bda: 0,
40            _stack_buffer: None,
41        }
42    }
43}