Skip to main content

embedded_3dgfx/
telemetry.rs

1/// Re-export BSP telemetry from the bsp module for ergonomic imports.
2#[cfg(feature = "raycast")]
3pub use crate::bsp::BspTelemetry;
4
5#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
6pub struct RecordTelemetry {
7    pub meshes_total: usize,
8    pub meshes_visible: usize,
9    pub unique_textures: usize,
10    pub draw_commands: usize,
11    pub fallback_used: bool,
12    pub degradation_steps_applied: usize,
13    pub dropped_meshes: usize,
14}
15
16#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
17pub struct ExecuteTelemetry {
18    pub commands_total: usize,
19    pub draw_commands: usize,
20    pub clear_color_commands: usize,
21    pub clear_depth_commands: usize,
22}
23
24#[cfg(test)]
25mod tests {
26    use super::{ExecuteTelemetry, RecordTelemetry};
27
28    #[test]
29    fn record_telemetry_defaults_to_zero_and_false() {
30        let t = RecordTelemetry::default();
31        assert_eq!(t.meshes_total, 0);
32        assert_eq!(t.meshes_visible, 0);
33        assert_eq!(t.unique_textures, 0);
34        assert_eq!(t.draw_commands, 0);
35        assert!(!t.fallback_used);
36        assert_eq!(t.degradation_steps_applied, 0);
37        assert_eq!(t.dropped_meshes, 0);
38    }
39
40    #[test]
41    fn execute_telemetry_defaults_to_zero() {
42        let t = ExecuteTelemetry::default();
43        assert_eq!(t.commands_total, 0);
44        assert_eq!(t.draw_commands, 0);
45        assert_eq!(t.clear_color_commands, 0);
46        assert_eq!(t.clear_depth_commands, 0);
47    }
48}