mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +01:00
Add tracing events (#33189)
Signed-off-by: atbrakhi <atbrakhi@igalia.com>
This commit is contained in:
parent
37e1c3385e
commit
0f24b8c823
8 changed files with 34 additions and 0 deletions
3
Cargo.lock
generated
3
Cargo.lock
generated
|
@ -911,6 +911,7 @@ dependencies = [
|
|||
"style_traits",
|
||||
"surfman",
|
||||
"time 0.1.45",
|
||||
"tracing",
|
||||
"webrender",
|
||||
"webrender_api",
|
||||
"webrender_traits",
|
||||
|
@ -980,6 +981,7 @@ dependencies = [
|
|||
"servo_rand",
|
||||
"servo_url",
|
||||
"style_traits",
|
||||
"tracing",
|
||||
"webgpu",
|
||||
"webrender",
|
||||
"webrender_api",
|
||||
|
@ -3991,6 +3993,7 @@ dependencies = [
|
|||
"style",
|
||||
"style_traits",
|
||||
"surfman",
|
||||
"tracing",
|
||||
"webdriver_server",
|
||||
"webgpu",
|
||||
"webrender",
|
||||
|
|
|
@ -41,6 +41,7 @@ servo_geometry = { path = "../geometry" }
|
|||
servo_url = { path = "../url" }
|
||||
style_traits = { workspace = true }
|
||||
time = { workspace = true }
|
||||
tracing = { workspace = true }
|
||||
webrender = { workspace = true }
|
||||
webrender_api = { workspace = true }
|
||||
webrender_traits = { workspace = true }
|
||||
|
|
|
@ -34,6 +34,7 @@ use script_traits::{
|
|||
};
|
||||
use servo_geometry::{DeviceIndependentPixel, FramebufferUintLength};
|
||||
use style_traits::{CSSPixel, DevicePixel, PinchZoomFactor};
|
||||
use tracing::{span, Level};
|
||||
use webrender::{CaptureBits, RenderApi, Transaction};
|
||||
use webrender_api::units::{
|
||||
DeviceIntPoint, DeviceIntSize, DevicePoint, DeviceRect, LayoutPoint, LayoutRect, LayoutSize,
|
||||
|
@ -680,6 +681,7 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
|||
|
||||
/// Accept messages from content processes that need to be relayed to the WebRender
|
||||
/// instance in the parent process.
|
||||
#[tracing::instrument(skip(self))]
|
||||
fn handle_webrender_message(&mut self, msg: ForwardedToCompositorMsg) {
|
||||
match msg {
|
||||
ForwardedToCompositorMsg::Layout(ScriptToCompositorMsg::SendInitialTransaction(
|
||||
|
@ -767,6 +769,8 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
|||
display_list_descriptor,
|
||||
);
|
||||
|
||||
let span = span!(Level::TRACE, "ScriptToCompositorMsg::BuiltDisplayList");
|
||||
let _enter = span.enter();
|
||||
let pipeline_id = display_list_info.pipeline_id;
|
||||
let details = self.pipeline_details(pipeline_id.into());
|
||||
details.most_recent_display_list_epoch = Some(display_list_info.epoch);
|
||||
|
@ -2053,6 +2057,7 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
|||
/// Returns Ok if composition was performed or Err if it was not possible to composite for some
|
||||
/// reason. When the target is [CompositeTarget::SharedMemory], the image is read back from the
|
||||
/// GPU and returned as Ok(Some(png::Image)), otherwise we return Ok(None).
|
||||
#[tracing::instrument(skip(self))]
|
||||
fn composite_specific_target(
|
||||
&mut self,
|
||||
target: CompositeTarget,
|
||||
|
@ -2268,6 +2273,8 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
|||
},
|
||||
};
|
||||
|
||||
let span = span!(Level::TRACE, "ConstellationMsg::ReadyToPresent");
|
||||
let _enter = span.enter();
|
||||
// Notify embedder that servo is ready to present.
|
||||
// Embedder should call `present` to tell compositor to continue rendering.
|
||||
self.waiting_on_present = true;
|
||||
|
@ -2292,7 +2299,10 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
|||
.map(|info| info.framebuffer_id())
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip(self))]
|
||||
pub fn present(&mut self) {
|
||||
let span = span!(Level::TRACE, "Compositor Present Surface");
|
||||
let _enter = span.enter();
|
||||
if let Err(err) = self.rendering_context.present() {
|
||||
warn!("Failed to present surface: {:?}", err);
|
||||
}
|
||||
|
@ -2354,6 +2364,7 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
|||
);
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip(self))]
|
||||
pub fn receive_messages(&mut self) -> bool {
|
||||
// Check for new messages coming from the other threads in the system.
|
||||
let mut compositor_messages = vec![];
|
||||
|
@ -2380,6 +2391,7 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
|||
true
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip(self))]
|
||||
pub fn perform_updates(&mut self) -> bool {
|
||||
if self.shutdown_state == ShutdownState::FinishedShuttingDown {
|
||||
return false;
|
||||
|
|
|
@ -48,6 +48,7 @@ webgpu = { path = "../webgpu" }
|
|||
webrender = { workspace = true }
|
||||
webrender_api = { workspace = true }
|
||||
webrender_traits = { workspace = true }
|
||||
tracing = { workspace = true }
|
||||
webxr-api = { git = "https://github.com/servo/webxr", features = ["ipc"] }
|
||||
|
||||
[target.'cfg(any(target_os="macos", all(not(target_os = "windows"), not(target_os = "ios"), not(target_os="android"), not(target_arch="arm"), not(target_arch="aarch64"))))'.dependencies]
|
||||
|
|
|
@ -152,6 +152,7 @@ use servo_config::{opts, pref};
|
|||
use servo_rand::{random, Rng, ServoRng, SliceRandom};
|
||||
use servo_url::{Host, ImmutableOrigin, ServoUrl};
|
||||
use style_traits::CSSPixel;
|
||||
use tracing::{span, Level};
|
||||
use webgpu::{self, WebGPU, WebGPURequest, WebGPUResponse};
|
||||
use webrender::{RenderApi, RenderApiSender};
|
||||
use webrender_api::DocumentId;
|
||||
|
@ -1331,6 +1332,7 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
#[tracing::instrument(skip(self))]
|
||||
fn handle_request_from_compositor(&mut self, message: FromCompositorMsg) {
|
||||
trace_msg_from_compositor!(message, "{message:?}");
|
||||
match message {
|
||||
|
@ -1543,6 +1545,8 @@ where
|
|||
self.set_webview_throttled(webview_id, throttled);
|
||||
},
|
||||
FromCompositorMsg::ReadyToPresent(webview_ids) => {
|
||||
let span = span!(Level::TRACE, "FromCompositorMsg::ReadyToPresent");
|
||||
let _enter = span.enter();
|
||||
self.embedder_proxy
|
||||
.send((None, EmbedderMsg::ReadyToPresent(webview_ids)));
|
||||
},
|
||||
|
|
|
@ -81,6 +81,7 @@ webgpu = { path = "../webgpu" }
|
|||
webrender = { workspace = true }
|
||||
webrender_api = { workspace = true }
|
||||
webrender_traits = { workspace = true }
|
||||
tracing = { workspace = true }
|
||||
webxr = { git = "https://github.com/servo/webxr" }
|
||||
webxr-api = { git = "https://github.com/servo/webxr" }
|
||||
|
||||
|
|
|
@ -225,6 +225,7 @@ impl<Window> Servo<Window>
|
|||
where
|
||||
Window: WindowMethods + 'static + ?Sized,
|
||||
{
|
||||
#[tracing::instrument(skip(embedder, window))]
|
||||
pub fn new(
|
||||
mut embedder: Box<dyn EmbedderMethods>,
|
||||
window: Rc<Window>,
|
||||
|
|
|
@ -145,6 +145,17 @@ pub enum ForwardedToCompositorMsg {
|
|||
Canvas(CanvasToCompositorMsg),
|
||||
}
|
||||
|
||||
impl Debug for ForwardedToCompositorMsg {
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error> {
|
||||
match self {
|
||||
ForwardedToCompositorMsg::Layout(_) => write!(f, "Layout(ScriptToCompositorMsg)"),
|
||||
ForwardedToCompositorMsg::Net(_) => write!(f, "Net(NetToCompositorMsg)"),
|
||||
ForwardedToCompositorMsg::Font(_) => write!(f, "Font(FontToCompositorMsg)"),
|
||||
ForwardedToCompositorMsg::Canvas(_) => write!(f, "Canvas(CanvasToCompositorMsg)"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Debug for CompositorMsg {
|
||||
fn fmt(&self, f: &mut Formatter) -> Result<(), Error> {
|
||||
match *self {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue