1
0
Fork 0
forked from wry/wry

all: use tracy for tracing

This commit is contained in:
Julian Orth 2024-09-15 18:08:54 +02:00
parent 50186e764e
commit ccad3cf0fb
56 changed files with 647 additions and 171 deletions

View file

@ -163,8 +163,14 @@ impl Debug for MetalBackend {
impl MetalBackend {
async fn run(self: Rc<Self>) -> Result<(), MetalError> {
let _monitor = self.state.eng.spawn(self.clone().monitor_devices());
let _events = self.state.eng.spawn(self.clone().handle_libinput_events());
let _monitor = self
.state
.eng
.spawn("monitor devices", self.clone().monitor_devices());
let _events = self.state.eng.spawn(
"handle libinput events",
self.clone().handle_libinput_events(),
);
if let Err(e) = self.enumerate_devices() {
return Err(MetalError::Enumerate(Box::new(e)));
}
@ -175,7 +181,7 @@ impl MetalBackend {
impl Backend for MetalBackend {
fn run(self: Rc<Self>) -> SpawnedFuture<Result<(), Box<dyn Error>>> {
let slf = self.clone();
self.state.eng.spawn(async move {
self.state.eng.spawn("metal backend", async move {
slf.run().await?;
Ok(())
})

View file

@ -13,6 +13,7 @@ use {
},
theme::Color,
time::Time,
tracy::FrameName,
tree::OutputNode,
utils::{errorfmt::ErrorFmt, oserror::OsError, transform_ext::TransformExt},
video::{
@ -90,6 +91,8 @@ impl MetalConnector {
}
pub async fn present_loop(self: Rc<Self>) {
#[cfg_attr(not(feature = "tracy"), expect(unused_variables))]
let frame_name = FrameName::get(&self.kernel_id().to_string());
let mut cur_sec = 0;
let mut max = 0;
loop {
@ -113,6 +116,7 @@ impl MetalConnector {
expected_sequence += 1;
}
}
frame!(frame_name);
if let Err(e) = self.present_once().await {
log::error!("Could not present: {}", ErrorFmt(e));
continue;
@ -293,6 +297,7 @@ impl MetalConnector {
cursor: Option<&CursorProgramming>,
new_fb: Option<&PresentFb>,
) -> Result<(), MetalError> {
zone!("program_connector");
let mut changes = self.master.change();
let mut try_async_flip = self.try_async_flip();
macro_rules! change {

View file

@ -1089,10 +1089,11 @@ fn create_connector(
presentation_is_zero_copy: Cell::new(false),
});
let futures = ConnectorFutures {
_present: backend
.state
.eng
.spawn2(Phase::Present, slf.clone().present_loop()),
_present: backend.state.eng.spawn2(
"present loop",
Phase::Present,
slf.clone().present_loop(),
),
};
Ok((slf, futures))
}
@ -1791,10 +1792,10 @@ impl MetalBackend {
}
}
let drm_handler = self
.state
.eng
.spawn(self.clone().handle_drm_events(slf.clone()));
let drm_handler = self.state.eng.spawn(
"handle drm events",
self.clone().handle_drm_events(slf.clone()),
);
slf.dev.handle_events.handle_events.set(Some(drm_handler));
Ok(slf)

View file

@ -249,7 +249,7 @@ pub async fn create(state: &Rc<State>) -> Result<Rc<XBackend>, XBackendError> {
impl Backend for XBackend {
fn run(self: Rc<Self>) -> SpawnedFuture<Result<(), Box<dyn Error>>> {
let slf = self.clone();
self.state.eng.spawn(async move {
self.state.eng.spawn("x backend", async move {
slf.run().await?;
Ok(())
})
@ -280,12 +280,19 @@ impl XBackend {
async fn run(self: Rc<Self>) -> Result<(), XBackendError> {
self.query_devices(INPUT_DEVICE_ALL_MASTER).await?;
let _events = self.state.eng.spawn(self.clone().event_handler());
let _grab = self.state.eng.spawn(self.clone().grab_handler());
let _present = self
let _events = self
.state
.eng
.spawn2(Phase::Present, self.clone().present_handler());
.spawn("x event handler", self.clone().event_handler());
let _grab = self
.state
.eng
.spawn("grab handler", self.clone().grab_handler());
let _present = self.state.eng.spawn2(
"present handler",
Phase::Present,
self.clone().present_handler(),
);
self.state.set_render_ctx(Some(self.ctx.clone()));
self.state