Skip to content
This repository was archived by the owner on Jul 9, 2025. It is now read-only.

Commit bfc2b52

Browse files
committed
Bug 1589119 - Add profile counters for rendered and total number of picture cache tiles. r=gw
Differential Revision: https://phabricator.services.mozilla.com/D49438 --HG-- extra : moz-landing-system : lando
1 parent 20956de commit bfc2b52

2 files changed

Lines changed: 26 additions & 0 deletions

File tree

gfx/wr/webrender/src/profiler.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ pub mod expected {
3434
pub const USED_TARGETS: Range<u64> = 1..4;
3535
pub const COLOR_TARGETS: Range<u64> = 1..4;
3636
pub const ALPHA_TARGETS: Range<u64> = 0..2;
37+
pub const RENDERED_PICTURE_CACHE_TILES: Range<u64> = 0..5;
38+
pub const TOTAL_PICTURE_CACHE_TILES: Range<u64> = 0..15;
3739
pub const CREATED_TARGETS: Range<u64> = 0..3;
3840
pub const CHANGED_TARGETS: Range<u64> = 0..3;
3941
pub const TEXTURE_DATA_UPLOADED: Range<u64> = 0..10;
@@ -788,6 +790,8 @@ pub struct RendererProfileCounters {
788790
pub color_targets: AverageIntProfileCounter,
789791
pub alpha_targets: AverageIntProfileCounter,
790792
pub texture_data_uploaded: AverageIntProfileCounter,
793+
pub rendered_picture_cache_tiles: AverageIntProfileCounter,
794+
pub total_picture_cache_tiles: AverageIntProfileCounter,
791795
}
792796

793797
pub struct RendererProfileTimers {
@@ -826,6 +830,14 @@ impl RendererProfileCounters {
826830
"Texture data, kb",
827831
None, Some(expected::TEXTURE_DATA_UPLOADED),
828832
),
833+
rendered_picture_cache_tiles: AverageIntProfileCounter::new(
834+
"Rendered tiles",
835+
None, Some(expected::RENDERED_PICTURE_CACHE_TILES),
836+
),
837+
total_picture_cache_tiles: AverageIntProfileCounter::new(
838+
"Total tiles",
839+
None, Some(expected::TOTAL_PICTURE_CACHE_TILES),
840+
),
829841
}
830842
}
831843

@@ -835,6 +847,8 @@ impl RendererProfileCounters {
835847
self.color_targets.reset();
836848
self.alpha_targets.reset();
837849
self.texture_data_uploaded.reset();
850+
self.rendered_picture_cache_tiles.reset();
851+
self.total_picture_cache_tiles.reset();
838852
}
839853
}
840854

@@ -1421,6 +1435,7 @@ impl Profiler {
14211435
&renderer_profile.alpha_targets,
14221436
&renderer_profile.draw_calls,
14231437
&renderer_profile.vertices,
1438+
&renderer_profile.rendered_picture_cache_tiles,
14241439
&renderer_profile.texture_data_uploaded,
14251440
&self.ipc_time,
14261441
&self.backend_time,
@@ -1450,6 +1465,8 @@ impl Profiler {
14501465
&renderer_profile.frame_counter,
14511466
&renderer_profile.color_targets,
14521467
&renderer_profile.alpha_targets,
1468+
&renderer_profile.rendered_picture_cache_tiles,
1469+
&renderer_profile.total_picture_cache_tiles,
14531470
&renderer_profile.texture_data_uploaded,
14541471
],
14551472
None,
@@ -1621,6 +1638,8 @@ impl Profiler {
16211638
&renderer_profile.alpha_targets,
16221639
&renderer_profile.draw_calls,
16231640
&renderer_profile.vertices,
1641+
&renderer_profile.rendered_picture_cache_tiles,
1642+
&renderer_profile.total_picture_cache_tiles,
16241643
],
16251644
&[
16261645
&backend_profile.resources.gpu_cache.allocated_rows,

gfx/wr/webrender/src/renderer.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3640,6 +3640,7 @@ impl Renderer {
36403640
render_tasks: &RenderTaskGraph,
36413641
stats: &mut RendererStats,
36423642
) {
3643+
self.profile_counters.rendered_picture_cache_tiles.inc();
36433644
self.profile_counters.color_targets.inc();
36443645
let _gm = self.gpu_profile.start_marker("picture cache target");
36453646
let framebuffer_kind = FramebufferKind::Other;
@@ -4065,6 +4066,12 @@ impl Renderer {
40654066
&mut self.renderer_errors
40664067
);
40674068

4069+
// We are only interested in tiles backed with actual cached pixels so we don't
4070+
// count clear tiles here.
4071+
let num_tiles = composite_state.opaque_tiles.len()
4072+
+ composite_state.alpha_tiles.len();
4073+
self.profile_counters.total_picture_cache_tiles.set(num_tiles);
4074+
40684075
// Draw opaque tiles first, front-to-back to get maxmum
40694076
// z-reject efficiency.
40704077
if !composite_state.opaque_tiles.is_empty() {

0 commit comments

Comments
 (0)