renderling/
draw.rs

1//! Handles queueing draw calls.
2//!
3//! [`DrawCalls`] is used to maintain the list of all staged
4//! [`PrimitiveDescriptor`](crate::primitive::shader::PrimitiveDescriptor)s.
5//! It also performs frustum culling and issues draw calls during
6//! [`Stage::render`](crate::stage::Stage::render).
7use crabslab::SlabItem;
8
9#[cfg(cpu)]
10mod cpu;
11#[cfg(cpu)]
12pub use cpu::*;
13
14/// Argument buffer layout for draw_indirect commands.
15#[repr(C)]
16#[cfg_attr(cpu, derive(Debug, bytemuck::Pod, bytemuck::Zeroable))]
17#[derive(Clone, Copy, Default, SlabItem)]
18pub struct DrawIndirectArgs {
19    pub vertex_count: u32,
20    pub instance_count: u32,
21    pub first_vertex: u32,
22    pub first_instance: u32,
23}