mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-22 02:01:55 +07:00
render_helpers: Add Smithay Tracy GPU spans
This commit is contained in:
Generated
+1
@@ -3429,6 +3429,7 @@ dependencies = [
|
||||
"tempfile",
|
||||
"thiserror 2.0.17",
|
||||
"tracing",
|
||||
"tracy-client",
|
||||
"udev",
|
||||
"wayland-backend",
|
||||
"wayland-client",
|
||||
|
||||
+1
-1
@@ -138,7 +138,7 @@ systemd = ["dbus"]
|
||||
# Enables screencasting support through xdg-desktop-portal-gnome.
|
||||
xdp-gnome-screencast = ["dbus", "pipewire"]
|
||||
# Enables the Tracy profiler instrumentation.
|
||||
profile-with-tracy = ["profiling/profile-with-tracy", "tracy-client/default"]
|
||||
profile-with-tracy = ["profiling/profile-with-tracy", "tracy-client/default", "smithay/tracy_gpu_profiling"]
|
||||
# Enables the on-demand Tracy profiler instrumentation.
|
||||
profile-with-tracy-ondemand = ["profile-with-tracy", "tracy-client/ondemand", "tracy-client/manual-lifetime"]
|
||||
# Enables Tracy allocation profiling.
|
||||
|
||||
@@ -8,6 +8,7 @@ use niri_config::{
|
||||
use smithay::backend::renderer::element::{Element, Id, Kind, RenderElement, UnderlyingStorage};
|
||||
use smithay::backend::renderer::gles::{GlesError, GlesFrame, GlesRenderer, Uniform};
|
||||
use smithay::backend::renderer::utils::{CommitCounter, DamageSet, OpaqueRegions};
|
||||
use smithay::gpu_span_location;
|
||||
use smithay::utils::{Buffer, Logical, Physical, Point, Rectangle, Scale, Size, Transform};
|
||||
|
||||
use super::renderer::NiriRenderer;
|
||||
@@ -286,7 +287,16 @@ impl RenderElement<GlesRenderer> for BorderRenderElement {
|
||||
opaque_regions: &[Rectangle<i32, Physical>],
|
||||
) -> Result<(), GlesError> {
|
||||
let _span = tracy_client::span!("BorderRenderElement::draw");
|
||||
RenderElement::<GlesRenderer>::draw(&self.inner, frame, src, dst, damage, opaque_regions)
|
||||
frame.with_gpu_span(gpu_span_location!("BorderRenderElement::draw"), |frame| {
|
||||
RenderElement::<GlesRenderer>::draw(
|
||||
&self.inner,
|
||||
frame,
|
||||
src,
|
||||
dst,
|
||||
damage,
|
||||
opaque_regions,
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
fn underlying_storage(&self, renderer: &mut GlesRenderer) -> Option<UnderlyingStorage<'_>> {
|
||||
|
||||
@@ -7,6 +7,7 @@ use smithay::backend::renderer::element::{Element, Id, Kind, RenderElement, Unde
|
||||
use smithay::backend::renderer::gles::{GlesError, GlesFrame, GlesRenderer, GlesTexture, Uniform};
|
||||
use smithay::backend::renderer::utils::{CommitCounter, DamageSet, OpaqueRegions};
|
||||
use smithay::backend::renderer::Texture as _;
|
||||
use smithay::gpu_span_location;
|
||||
use smithay::utils::{Buffer, Logical, Physical, Rectangle, Scale, Size, Transform};
|
||||
|
||||
use super::renderer::{AsGlesFrame, NiriRenderer};
|
||||
@@ -172,8 +173,9 @@ impl RenderElement<GlesRenderer> for ResizeRenderElement {
|
||||
opaque_regions: &[Rectangle<i32, Physical>],
|
||||
) -> Result<(), GlesError> {
|
||||
let _span = tracy_client::span!("ResizeRenderElement::draw");
|
||||
RenderElement::<GlesRenderer>::draw(&self.0, frame, src, dst, damage, opaque_regions)?;
|
||||
Ok(())
|
||||
frame.with_gpu_span(gpu_span_location!("ResizeRenderElement::draw"), |frame| {
|
||||
RenderElement::<GlesRenderer>::draw(&self.0, frame, src, dst, damage, opaque_regions)
|
||||
})
|
||||
}
|
||||
|
||||
fn underlying_storage(&self, renderer: &mut GlesRenderer) -> Option<UnderlyingStorage<'_>> {
|
||||
|
||||
@@ -375,7 +375,8 @@ impl RenderElement<GlesRenderer> for ShaderRenderElement {
|
||||
let has_tint = frame.debug_flags().contains(DebugFlags::TINT);
|
||||
|
||||
// render
|
||||
frame.with_context(move |gl| -> Result<(), GlesError> {
|
||||
let span_loc = smithay::gpu_span_location!("draw shader");
|
||||
frame.with_profiled_context(span_loc, move |gl| -> Result<(), GlesError> {
|
||||
let program = if has_debug {
|
||||
&shader.0.debug
|
||||
} else {
|
||||
|
||||
@@ -6,6 +6,7 @@ use niri_config::{Color, CornerRadius};
|
||||
use smithay::backend::renderer::element::{Element, Id, Kind, RenderElement, UnderlyingStorage};
|
||||
use smithay::backend::renderer::gles::{GlesError, GlesFrame, GlesRenderer, Uniform};
|
||||
use smithay::backend::renderer::utils::{CommitCounter, DamageSet, OpaqueRegions};
|
||||
use smithay::gpu_span_location;
|
||||
use smithay::utils::{Buffer, Logical, Physical, Point, Rectangle, Scale, Size, Transform};
|
||||
|
||||
use super::renderer::NiriRenderer;
|
||||
@@ -247,7 +248,16 @@ impl RenderElement<GlesRenderer> for ShadowRenderElement {
|
||||
opaque_regions: &[Rectangle<i32, Physical>],
|
||||
) -> Result<(), GlesError> {
|
||||
let _span = tracy_client::span!("ShadowRenderElement::draw");
|
||||
RenderElement::<GlesRenderer>::draw(&self.inner, frame, src, dst, damage, opaque_regions)
|
||||
frame.with_gpu_span(gpu_span_location!("ShadowRenderElement::draw"), |frame| {
|
||||
RenderElement::<GlesRenderer>::draw(
|
||||
&self.inner,
|
||||
frame,
|
||||
src,
|
||||
dst,
|
||||
damage,
|
||||
opaque_regions,
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
fn underlying_storage(&self, renderer: &mut GlesRenderer) -> Option<UnderlyingStorage<'_>> {
|
||||
|
||||
Reference in New Issue
Block a user