all: use tracy for tracing
This commit is contained in:
parent
50186e764e
commit
ccad3cf0fb
56 changed files with 647 additions and 171 deletions
|
|
@ -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(())
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue