Bug 1509497 - Update webrender to commit b4f7e431d56d35051085b4f9486f1cee3dd7339b (WR PR #3341). r=kats
authorWR Updater Bot <graphics-team@mozilla.staktrace.com>
Fri, 23 Nov 2018 14:40:09 +0000
changeset 504249 ab0838a6a61bbcba9b45a622ee16b4ea744ec712
parent 504248 6131e43da79b3d3b1e58f3bd1bb97d89e0bb7474
child 504250 39c6967a31f420efee4ad0ba0ddc224219aca8a9
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
bugs1509497
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 1509497 - Update webrender to commit b4f7e431d56d35051085b4f9486f1cee3dd7339b (WR PR #3341). r=kats https://github.com/servo/webrender/pull/3341 Differential Revision: https://phabricator.services.mozilla.com/D12753
gfx/webrender_bindings/revision.txt
gfx/wr/webrender_api/src/display_list.rs
--- a/gfx/webrender_bindings/revision.txt
+++ b/gfx/webrender_bindings/revision.txt
@@ -1,1 +1,1 @@
-9a903a2c6912d2651faddadf81e76bf743657d72
+b4f7e431d56d35051085b4f9486f1cee3dd7339b
--- a/gfx/wr/webrender_api/src/display_list.rs
+++ b/gfx/wr/webrender_api/src/display_list.rs
@@ -997,23 +997,23 @@ impl DisplayListBuilder {
             &DisplayItem {
                 item,
                 clip_and_scroll: scrollinfo,
                 info: *info,
             },
         )
     }
 
-    fn push_new_empty_item(&mut self, item: SpecificDisplayItem) {
+    fn push_new_empty_item(&mut self, item: SpecificDisplayItem, clip_and_scroll: &ClipAndScrollInfo) {
         let info = LayoutPrimitiveInfo::new(LayoutRect::zero());
         serialize_fast(
             &mut self.data,
             &DisplayItem {
                 item,
-                clip_and_scroll: *self.clip_stack.last().unwrap(),
+                clip_and_scroll: *clip_and_scroll,
                 info,
             }
         )
     }
 
     fn push_iter_impl<I>(data: &mut Vec<u8>, iter_source: I)
     where
         I: IntoIterator,
@@ -1274,17 +1274,18 @@ impl DisplayListBuilder {
                 id,
             },
         });
         self.push_item(item, info);
         id
     }
 
     pub fn pop_reference_frame(&mut self) {
-        self.push_new_empty_item(SpecificDisplayItem::PopReferenceFrame);
+        let clip_and_scroll = *self.clip_stack.last().unwrap();
+        self.push_new_empty_item(SpecificDisplayItem::PopReferenceFrame, &clip_and_scroll);
     }
 
     pub fn push_stacking_context(
         &mut self,
         info: &LayoutPrimitiveInfo,
         clip_node_id: Option<ClipId>,
         transform_style: TransformStyle,
         mix_blend_mode: MixBlendMode,
@@ -1300,24 +1301,26 @@ impl DisplayListBuilder {
             },
         });
 
         self.push_item(item, info);
         self.push_iter(filters);
     }
 
     pub fn pop_stacking_context(&mut self) {
-        self.push_new_empty_item(SpecificDisplayItem::PopStackingContext);
+        let clip_and_scroll = *self.clip_stack.last().unwrap();
+        self.push_new_empty_item(SpecificDisplayItem::PopStackingContext, &clip_and_scroll);
     }
 
     pub fn push_stops(&mut self, stops: &[GradientStop]) {
         if stops.is_empty() {
             return;
         }
-        self.push_new_empty_item(SpecificDisplayItem::SetGradientStops);
+        let clip_and_scroll = *self.clip_stack.last().unwrap();
+        self.push_new_empty_item(SpecificDisplayItem::SetGradientStops, &clip_and_scroll);
         self.push_iter(stops);
     }
 
     fn generate_clip_index(&mut self) -> ClipId {
         self.next_clip_index += 1;
         ClipId::Clip(self.next_clip_index - 1, self.pipeline_id)
     }
 
@@ -1394,17 +1397,18 @@ impl DisplayListBuilder {
         parent: Option<ClipChainId>,
         clips: I,
     ) -> ClipChainId
     where
         I: IntoIterator<Item = ClipId>,
         I::IntoIter: ExactSizeIterator + Clone,
     {
         let id = self.generate_clip_chain_id();
-        self.push_new_empty_item(SpecificDisplayItem::ClipChain(ClipChainItem { id, parent }));
+        let clip_and_scroll = *self.clip_stack.last().unwrap();
+        self.push_new_empty_item(SpecificDisplayItem::ClipChain(ClipChainItem { id, parent }), &clip_and_scroll);
         self.push_iter(clips);
         id
     }
 
     pub fn define_clip<I>(
         &mut self,
         clip_rect: LayoutRect,
         complex_clips: I,
@@ -1519,17 +1523,18 @@ impl DisplayListBuilder {
         self.push_item(item, info);
     }
 
     pub fn push_shadow(&mut self, info: &LayoutPrimitiveInfo, shadow: Shadow) {
         self.push_item(SpecificDisplayItem::PushShadow(shadow), info);
     }
 
     pub fn pop_all_shadows(&mut self) {
-        self.push_new_empty_item(SpecificDisplayItem::PopAllShadows);
+        let clip_and_scroll = *self.clip_stack.last().unwrap();
+        self.push_new_empty_item(SpecificDisplayItem::PopAllShadows, &clip_and_scroll);
     }
 
     pub fn finalize(self) -> (PipelineId, LayoutSize, BuiltDisplayList) {
         assert!(self.save_state.is_none(), "Finalized DisplayListBuilder with a pending save");
 
         let end_time = precise_time_ns();