From 2e79b4c378a7faa3c63c2638736ea3b57f4b6246 Mon Sep 17 00:00:00 2001 From: Nicolas Silva Date: Tue, 10 Mar 2020 17:12:05 +0000 Subject: [PATCH 1/3] Bug 1618132 - Avoid redundant hit test tree builds. r=gw build_frame is called by update_document which calls rebuild_hit_tester if the hit test tree is invalidated. The advantage of doing it there is that it is after the frame has been submitted to the renderer so we are out of the critical path and the work can overlap with draw call submission. So we don't need to do the work in build_frame, and since we don't currently set the validity flag there we are often re-building the hit test tree a second time after frame building. Differential Revision: https://phabricator.services.mozilla.com/D64328 [ghsync] From https://hg.mozilla.org/mozilla-central/rev/a2ddfcc2a7d4815dfe479d9138a91eb70fab5a10 --- webrender/src/render_backend.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/webrender/src/render_backend.rs b/webrender/src/render_backend.rs index 420e0a069a..0064764290 100644 --- a/webrender/src/render_backend.rs +++ b/webrender/src/render_backend.rs @@ -581,10 +581,6 @@ impl Document { tile_cache_logger, ); - let hit_tester = Arc::new(self.scene.create_hit_tester(&self.data_stores.clip)); - self.hit_tester = Some(Arc::clone(&hit_tester)); - self.shared_hit_tester.update(hit_tester); - frame }; From 5229910197695bd400a952045c9a42ec7073ebbf Mon Sep 17 00:00:00 2001 From: Bogdan Tara Date: Tue, 10 Mar 2020 17:12:14 +0000 Subject: [PATCH 2/3] Backed out changeset a2ddfcc2a7d4 (bug 1618132) for mochitests failures complaining about hittest tests CLOSED TREE [ghsync] From https://hg.mozilla.org/mozilla-central/rev/6b61e86e08037ba077a5f149fcaad73c6fc1ea42 --- webrender/src/render_backend.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/webrender/src/render_backend.rs b/webrender/src/render_backend.rs index 0064764290..420e0a069a 100644 --- a/webrender/src/render_backend.rs +++ b/webrender/src/render_backend.rs @@ -581,6 +581,10 @@ impl Document { tile_cache_logger, ); + let hit_tester = Arc::new(self.scene.create_hit_tester(&self.data_stores.clip)); + self.hit_tester = Some(Arc::clone(&hit_tester)); + self.shared_hit_tester.update(hit_tester); + frame }; From daabdde1b509d9ec9e7b24ca537d38cb91fae26a Mon Sep 17 00:00:00 2001 From: Nicolas Silva Date: Tue, 10 Mar 2020 21:50:53 +0000 Subject: [PATCH 3/3] Bug 1618132 - Avoid redundant hit test tree builds. r=gw build_frame is called by update_document which calls rebuild_hit_tester if the hit test tree is invalidated. The advantage of doing it there is that it is after the frame has been submitted to the renderer so we are out of the critical path and the work can overlap with draw call submission. So we don't need to do the work in build_frame, and since we don't currently set the validity flag there we are often re-building the hit test tree a second time after frame building. Differential Revision: https://phabricator.services.mozilla.com/D64328 [ghsync] From https://hg.mozilla.org/mozilla-central/rev/2c6a51317166bb8b3c90781b3bc7739448c72a0b --- webrender/src/render_backend.rs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/webrender/src/render_backend.rs b/webrender/src/render_backend.rs index 420e0a069a..c3887efc4a 100644 --- a/webrender/src/render_backend.rs +++ b/webrender/src/render_backend.rs @@ -581,15 +581,10 @@ impl Document { tile_cache_logger, ); - let hit_tester = Arc::new(self.scene.create_hit_tester(&self.data_stores.clip)); - self.hit_tester = Some(Arc::clone(&hit_tester)); - self.shared_hit_tester.update(hit_tester); - frame }; self.frame_is_valid = true; - self.hit_tester_is_valid = true; let is_new_scene = self.has_built_scene; self.has_built_scene = false;