Bug 1504124 - Update webrender to commit f8213800c600c8058556e962dd4f28dbc88a5931 (WR PR 3265). r=kats
authorWR Updater Bot <graphics-team@mozilla.staktrace.com>
Sun, 04 Nov 2018 07:41:18 +0000
changeset 500769 7339507cb663bf7db8692b255715f8772bf07e3f
parent 500768 5fb87d2312ea4881026ecaac6488fbdc2e4a7725
child 500770 40dcef5ee51bcee7ceac80e806e5ff46747b467b
push id10290
push userffxbld-merge
push dateMon, 03 Dec 2018 16:23:23 +0000
treeherdermozilla-beta@700bed2445e6 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerskats
bugs1504124
milestone65.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1504124 - Update webrender to commit f8213800c600c8058556e962dd4f28dbc88a5931 (WR PR 3265). r=kats Differential Revision: https://phabricator.services.mozilla.com/D10829
gfx/webrender/src/renderer.rs
gfx/webrender_api/src/api.rs
gfx/webrender_bindings/revision.txt
--- a/gfx/webrender/src/renderer.rs
+++ b/gfx/webrender/src/renderer.rs
@@ -2150,16 +2150,23 @@ impl Renderer {
                     // within the same update we need to cancel the frame because we
                     // might have deleted the resources in use in the frame due to a
                     // memory pressure event.
                     if memory_pressure {
                         self.active_documents.clear();
                     }
                 }
                 ResultMsg::AppendNotificationRequests(mut notifications) => {
+                    if self.pending_texture_updates.is_empty() {
+                        drain_filter(
+                            &mut notifications,
+                            |n| { n.when() == Checkpoint::FrameTexturesUpdated },
+                            |n| { n.notify(); },
+                        );
+                    }
                     self.notifications.append(&mut notifications);
                 }
                 ResultMsg::RefreshShader(path) => {
                     self.pending_shader_updates.push(path);
                 }
                 ResultMsg::DebugOutput(output) => match output {
                     DebugOutput::FetchDocuments(string) |
                     DebugOutput::FetchClipScrollTree(string) => {
@@ -2874,16 +2881,22 @@ impl Renderer {
                     }
                     TextureUpdateOp::Free => {
                         let texture = self.texture_resolver.texture_cache_map.remove(&update.id).unwrap();
                         self.device.delete_texture(texture);
                     }
                 }
             }
         }
+
+        drain_filter(
+            &mut self.notifications,
+            |n| { n.when() == Checkpoint::FrameTexturesUpdated },
+            |n| { n.notify(); },
+        );
     }
 
     pub(crate) fn draw_instanced_batch<T>(
         &mut self,
         data: &[T],
         vertex_array_kind: VertexArrayKind,
         textures: &BatchTextures,
         stats: &mut RendererStats,
--- a/gfx/webrender_api/src/api.rs
+++ b/gfx/webrender_api/src/api.rs
@@ -1274,16 +1274,17 @@ pub trait RenderNotifier: Send {
     fn shut_down(&self) {}
 }
 
 #[repr(u32)]
 #[derive(Copy, Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
 pub enum Checkpoint {
     SceneBuilt,
     FrameBuilt,
+    FrameTexturesUpdated,
     FrameRendered,
     /// NotificationRequests get notified with this if they get dropped without having been
     /// notified. This provides the guarantee that if a request is created it will get notified.
     TransactionDropped,
 }
 
 pub trait NotificationHandler : Send + Sync {
     fn notify(&self, when: Checkpoint);
--- a/gfx/webrender_bindings/revision.txt
+++ b/gfx/webrender_bindings/revision.txt
@@ -1,1 +1,1 @@
-3aec3bdaa672e38b3ba1c690668debe2c09aebfe
+f8213800c600c8058556e962dd4f28dbc88a5931