Introduce presentation metrics and send them to comet

This commit is contained in:
Héctor Ramón Jiménez 2025-04-09 21:50:21 +02:00
parent 6508ad67c1
commit 015f5283a8
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
8 changed files with 210 additions and 42 deletions

View file

@ -7,6 +7,15 @@ pub use internal::Span;
use std::io;
#[derive(Debug, Clone, Copy)]
pub enum Primitive {
Quad,
Triangle,
Shader,
Image,
Text,
}
pub fn init(name: &str) {
internal::init(name);
}
@ -51,6 +60,14 @@ pub fn draw(window: window::Id) -> Span {
internal::draw(window)
}
pub fn prepare(primitive: Primitive) -> Span {
internal::prepare(primitive)
}
pub fn render(primitive: Primitive) -> Span {
internal::render(primitive)
}
pub fn present(window: window::Id) -> Span {
internal::present(window)
}
@ -65,6 +82,7 @@ pub fn skip_next_timing() {
#[cfg(all(feature = "enable", not(target_arch = "wasm32")))]
mod internal {
use crate::Primitive;
use crate::core::theme;
use crate::core::time::Instant;
use crate::core::window;
@ -171,6 +189,14 @@ mod internal {
span(span::Stage::Draw(window))
}
pub fn prepare(primitive: Primitive) -> Span {
span(span::Stage::Prepare(to_primitive(primitive)))
}
pub fn render(primitive: Primitive) -> Span {
span(span::Stage::Render(to_primitive(primitive)))
}
pub fn present(window: window::Id) -> Span {
span(span::Stage::Present(window))
}
@ -192,6 +218,16 @@ mod internal {
}
}
fn to_primitive(primitive: Primitive) -> span::Primitive {
match primitive {
Primitive::Quad => span::Primitive::Quad,
Primitive::Triangle => span::Primitive::Triangle,
Primitive::Shader => span::Primitive::Shader,
Primitive::Text => span::Primitive::Text,
Primitive::Image => span::Primitive::Image,
}
}
#[derive(Debug)]
pub struct Span {
span: span::Stage,
@ -222,6 +258,7 @@ mod internal {
#[cfg(any(not(feature = "enable"), target_arch = "wasm32"))]
mod internal {
use crate::Primitive;
use crate::core::theme;
use crate::core::window;
@ -263,6 +300,14 @@ mod internal {
Span
}
pub fn prepare(_primitive: Primitive) -> Span {
Span
}
pub fn render(_primitive: Primitive) -> Span {
Span
}
pub fn present(_window: window::Id) -> Span {
Span
}