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",
|
"tempfile",
|
||||||
"thiserror 2.0.17",
|
"thiserror 2.0.17",
|
||||||
"tracing",
|
"tracing",
|
||||||
|
"tracy-client",
|
||||||
"udev",
|
"udev",
|
||||||
"wayland-backend",
|
"wayland-backend",
|
||||||
"wayland-client",
|
"wayland-client",
|
||||||
|
|||||||
+1
-1
@@ -138,7 +138,7 @@ systemd = ["dbus"]
|
|||||||
# Enables screencasting support through xdg-desktop-portal-gnome.
|
# Enables screencasting support through xdg-desktop-portal-gnome.
|
||||||
xdp-gnome-screencast = ["dbus", "pipewire"]
|
xdp-gnome-screencast = ["dbus", "pipewire"]
|
||||||
# Enables the Tracy profiler instrumentation.
|
# 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.
|
# Enables the on-demand Tracy profiler instrumentation.
|
||||||
profile-with-tracy-ondemand = ["profile-with-tracy", "tracy-client/ondemand", "tracy-client/manual-lifetime"]
|
profile-with-tracy-ondemand = ["profile-with-tracy", "tracy-client/ondemand", "tracy-client/manual-lifetime"]
|
||||||
# Enables Tracy allocation profiling.
|
# 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::element::{Element, Id, Kind, RenderElement, UnderlyingStorage};
|
||||||
use smithay::backend::renderer::gles::{GlesError, GlesFrame, GlesRenderer, Uniform};
|
use smithay::backend::renderer::gles::{GlesError, GlesFrame, GlesRenderer, Uniform};
|
||||||
use smithay::backend::renderer::utils::{CommitCounter, DamageSet, OpaqueRegions};
|
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 smithay::utils::{Buffer, Logical, Physical, Point, Rectangle, Scale, Size, Transform};
|
||||||
|
|
||||||
use super::renderer::NiriRenderer;
|
use super::renderer::NiriRenderer;
|
||||||
@@ -286,7 +287,16 @@ impl RenderElement<GlesRenderer> for BorderRenderElement {
|
|||||||
opaque_regions: &[Rectangle<i32, Physical>],
|
opaque_regions: &[Rectangle<i32, Physical>],
|
||||||
) -> Result<(), GlesError> {
|
) -> Result<(), GlesError> {
|
||||||
let _span = tracy_client::span!("BorderRenderElement::draw");
|
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<'_>> {
|
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::gles::{GlesError, GlesFrame, GlesRenderer, GlesTexture, Uniform};
|
||||||
use smithay::backend::renderer::utils::{CommitCounter, DamageSet, OpaqueRegions};
|
use smithay::backend::renderer::utils::{CommitCounter, DamageSet, OpaqueRegions};
|
||||||
use smithay::backend::renderer::Texture as _;
|
use smithay::backend::renderer::Texture as _;
|
||||||
|
use smithay::gpu_span_location;
|
||||||
use smithay::utils::{Buffer, Logical, Physical, Rectangle, Scale, Size, Transform};
|
use smithay::utils::{Buffer, Logical, Physical, Rectangle, Scale, Size, Transform};
|
||||||
|
|
||||||
use super::renderer::{AsGlesFrame, NiriRenderer};
|
use super::renderer::{AsGlesFrame, NiriRenderer};
|
||||||
@@ -172,8 +173,9 @@ impl RenderElement<GlesRenderer> for ResizeRenderElement {
|
|||||||
opaque_regions: &[Rectangle<i32, Physical>],
|
opaque_regions: &[Rectangle<i32, Physical>],
|
||||||
) -> Result<(), GlesError> {
|
) -> Result<(), GlesError> {
|
||||||
let _span = tracy_client::span!("ResizeRenderElement::draw");
|
let _span = tracy_client::span!("ResizeRenderElement::draw");
|
||||||
RenderElement::<GlesRenderer>::draw(&self.0, frame, src, dst, damage, opaque_regions)?;
|
frame.with_gpu_span(gpu_span_location!("ResizeRenderElement::draw"), |frame| {
|
||||||
Ok(())
|
RenderElement::<GlesRenderer>::draw(&self.0, frame, src, dst, damage, opaque_regions)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn underlying_storage(&self, renderer: &mut GlesRenderer) -> Option<UnderlyingStorage<'_>> {
|
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);
|
let has_tint = frame.debug_flags().contains(DebugFlags::TINT);
|
||||||
|
|
||||||
// render
|
// 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 {
|
let program = if has_debug {
|
||||||
&shader.0.debug
|
&shader.0.debug
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ use niri_config::{Color, CornerRadius};
|
|||||||
use smithay::backend::renderer::element::{Element, Id, Kind, RenderElement, UnderlyingStorage};
|
use smithay::backend::renderer::element::{Element, Id, Kind, RenderElement, UnderlyingStorage};
|
||||||
use smithay::backend::renderer::gles::{GlesError, GlesFrame, GlesRenderer, Uniform};
|
use smithay::backend::renderer::gles::{GlesError, GlesFrame, GlesRenderer, Uniform};
|
||||||
use smithay::backend::renderer::utils::{CommitCounter, DamageSet, OpaqueRegions};
|
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 smithay::utils::{Buffer, Logical, Physical, Point, Rectangle, Scale, Size, Transform};
|
||||||
|
|
||||||
use super::renderer::NiriRenderer;
|
use super::renderer::NiriRenderer;
|
||||||
@@ -247,7 +248,16 @@ impl RenderElement<GlesRenderer> for ShadowRenderElement {
|
|||||||
opaque_regions: &[Rectangle<i32, Physical>],
|
opaque_regions: &[Rectangle<i32, Physical>],
|
||||||
) -> Result<(), GlesError> {
|
) -> Result<(), GlesError> {
|
||||||
let _span = tracy_client::span!("ShadowRenderElement::draw");
|
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<'_>> {
|
fn underlying_storage(&self, renderer: &mut GlesRenderer) -> Option<UnderlyingStorage<'_>> {
|
||||||
|
|||||||
Reference in New Issue
Block a user