From 823f3e2eb16d8cff0879e05d8db16df1fba20b39 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Fri, 1 Jun 2018 15:25:23 +1000 Subject: [PATCH] Update WR (transaction API change) --- Cargo.lock | 10 ++--- components/canvas/canvas_data.rs | 27 +++++------ components/canvas/webgl_thread.rs | 45 +++++++------------ components/gfx/font_cache_thread.rs | 16 +++---- components/layout/display_list/builder.rs | 10 +---- components/layout/display_list/items.rs | 10 +---- .../layout/display_list/webrender_helpers.rs | 8 ++-- components/malloc_size_of/lib.rs | 2 - components/net/image_cache.rs | 9 ++-- .../mix-blend-mode-paragraph.html.ini | 3 ++ .../mix-blend-mode-parent-with-text.html.ini | 3 ++ 11 files changed, 56 insertions(+), 87 deletions(-) create mode 100644 tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini create mode 100644 tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html.ini diff --git a/Cargo.lock b/Cargo.lock index c6a22873e87..226030307d7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2179,7 +2179,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "plane-split" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "binary-space-partition 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3465,7 +3465,7 @@ dependencies = [ [[package]] name = "webrender" version = "0.57.2" -source = "git+https://github.com/servo/webrender#6931a25295d17d897a9f77798392bdde66132154" +source = "git+https://github.com/servo/webrender#58de1dc2caa7bfee62f7ff45ca1a6d746c2d788c" dependencies = [ "app_units 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3485,7 +3485,7 @@ dependencies = [ "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", - "plane-split 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "plane-split 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "ron 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3500,7 +3500,7 @@ dependencies = [ [[package]] name = "webrender_api" version = "0.57.2" -source = "git+https://github.com/servo/webrender#6931a25295d17d897a9f77798392bdde66132154" +source = "git+https://github.com/servo/webrender#58de1dc2caa7bfee62f7ff45ca1a6d746c2d788c" dependencies = [ "app_units 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3893,7 +3893,7 @@ dependencies = [ "checksum phf_generator 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)" = "6b07ffcc532ccc85e3afc45865469bf5d9e4ef5bfcf9622e3cfe80c2d275ec03" "checksum phf_shared 0.7.21 (registry+https://github.com/rust-lang/crates.io-index)" = "07e24b0ca9643bdecd0632f2b3da6b1b89bbb0030e0b992afc1113b23a7bc2f2" "checksum pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903" -"checksum plane-split 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "69c557e11e3a1533bc969fa596e5011e1d9f76dd61cd102ef942c9f8654b17a2" +"checksum plane-split 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7079b8485b4f9d9560dee7a69ca8f6ca781f9f284ff9d2bf27255d440b03e4af" "checksum png 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f0b0cabbbd20c2d7f06dbf015e06aad59b6ca3d9ed14848783e98af9aaf19925" "checksum precomputed-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" "checksum proc-macro2 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "77997c53ae6edd6d187fec07ec41b207063b5ee6f33680e9fa86d405cdd313d4" diff --git a/components/canvas/canvas_data.rs b/components/canvas/canvas_data.rs index 6e5d0e679dc..28aec9f5dd4 100644 --- a/components/canvas/canvas_data.rs +++ b/components/canvas/canvas_data.rs @@ -416,8 +416,7 @@ impl<'a> CanvasData<'a> { let size = self.drawtarget.get_size(); let descriptor = webrender_api::ImageDescriptor { - width: size.width as u32, - height: size.height as u32, + size: webrender_api::DeviceUintSize::new(size.width as u32, size.height as u32), stride: None, format: webrender_api::ImageFormat::BGRA8, offset: 0, @@ -426,31 +425,25 @@ impl<'a> CanvasData<'a> { }; let data = webrender_api::ImageData::Raw(Arc::new(element.into())); - let mut updates = webrender_api::ResourceUpdates::new(); + let mut txn = webrender_api::Transaction::new(); match self.image_key { Some(image_key) => { debug!("Updating image {:?}.", image_key); - updates.update_image(image_key, - descriptor, - data, - None); + txn.update_image(image_key, descriptor, data, None); } None => { self.image_key = Some(self.webrender_api.generate_image_key()); debug!("New image {:?}.", self.image_key); - updates.add_image(self.image_key.unwrap(), - descriptor, - data, - None); + txn.add_image(self.image_key.unwrap(), descriptor, data, None); } } if let Some(image_key) = mem::replace(&mut self.very_old_image_key, self.old_image_key.take()) { - updates.delete_image(image_key); + txn.delete_image(image_key); } - self.webrender_api.update_resources(updates); + self.webrender_api.update_resources(txn.resource_updates); let data = CanvasImageData { image_key: self.image_key.unwrap(), @@ -647,16 +640,16 @@ impl<'a> CanvasData<'a> { impl<'a> Drop for CanvasData<'a> { fn drop(&mut self) { - let mut updates = webrender_api::ResourceUpdates::new(); + let mut txn = webrender_api::Transaction::new(); if let Some(image_key) = self.old_image_key.take() { - updates.delete_image(image_key); + txn.delete_image(image_key); } if let Some(image_key) = self.very_old_image_key.take() { - updates.delete_image(image_key); + txn.delete_image(image_key); } - self.webrender_api.update_resources(updates); + self.webrender_api.update_resources(txn.resource_updates); } } diff --git a/components/canvas/webgl_thread.rs b/components/canvas/webgl_thread.rs index 7b0b120d037..8ab129680de 100644 --- a/components/canvas/webgl_thread.rs +++ b/components/canvas/webgl_thread.rs @@ -268,13 +268,13 @@ impl WebGLThread WebGLThread WebGLThread WebGLThread WebGLThread, alpha: bool) -> webrender_api::ImageDescriptor { webrender_api::ImageDescriptor { - width: size.width as u32, - height: size.height as u32, + size: webrender_api::DeviceUintSize::new(size.width as u32, size.height as u32), stride: None, format: webrender_api::ImageFormat::BGRA8, offset: 0, diff --git a/components/gfx/font_cache_thread.rs b/components/gfx/font_cache_thread.rs index df04519e90b..334a1bb41ec 100644 --- a/components/gfx/font_cache_thread.rs +++ b/components/gfx/font_cache_thread.rs @@ -177,14 +177,14 @@ impl FontCache { .entry((font_key, size)) .or_insert_with(|| { let key = webrender_api.generate_font_instance_key(); - let mut updates = webrender_api::ResourceUpdates::new(); - updates.add_font_instance(key, + let mut txn = webrender_api::Transaction::new(); + txn.add_font_instance(key, font_key, size, None, None, Vec::new()); - webrender_api.update_resources(updates); + webrender_api.update_resources(txn.resource_updates); key }); @@ -373,13 +373,13 @@ impl FontCache { let font_key = *webrender_fonts.entry(template.identifier.clone()).or_insert_with(|| { let font_key = webrender_api.generate_font_key(); - let mut updates = webrender_api::ResourceUpdates::new(); + let mut txn = webrender_api::Transaction::new(); match (template.bytes_if_in_memory(), template.native_font()) { - (Some(bytes), _) => updates.add_raw_font(font_key, bytes, 0), - (None, Some(native_font)) => updates.add_native_font(font_key, native_font), - (None, None) => updates.add_raw_font(font_key, template.bytes().clone(), 0), + (Some(bytes), _) => txn.add_raw_font(font_key, bytes, 0), + (None, Some(native_font)) => txn.add_native_font(font_key, native_font), + (None, None) => txn.add_raw_font(font_key, template.bytes().clone(), 0), } - webrender_api.update_resources(updates); + webrender_api.update_resources(txn.resource_updates); font_key }); diff --git a/components/layout/display_list/builder.rs b/components/layout/display_list/builder.rs index 16a1fc85770..2539f648964 100644 --- a/components/layout/display_list/builder.rs +++ b/components/layout/display_list/builder.rs @@ -73,8 +73,8 @@ use style_traits::cursor::CursorKind; use table_cell::CollapsedBordersForCell; use webrender_api::{self, BorderRadius, BorderSide, BoxShadowClipMode, ColorF, ExternalScrollId}; use webrender_api::{FilterOp, GlyphInstance, ImageRendering, LayoutRect, LayoutSize}; -use webrender_api::{LayoutTransform, LayoutVector2D, LineStyle, NormalBorder, ScrollPolicy}; -use webrender_api::{ScrollSensitivity, StickyOffsetBounds}; +use webrender_api::{LayoutTransform, LayoutVector2D, LineStyle, NormalBorder, ScrollSensitivity}; +use webrender_api::StickyOffsetBounds; fn establishes_containing_block_for_absolute( flags: StackingContextCollectionFlags, @@ -760,7 +760,6 @@ pub trait FragmentDisplayListBuilding { &self, id: StackingContextId, base_flow: &BaseFlow, - scroll_policy: ScrollPolicy, context_type: StackingContextType, established_reference_frame: Option, parent_clipping_and_scrolling: ClippingAndScrolling, @@ -1887,7 +1886,6 @@ impl FragmentDisplayListBuilding for Fragment { &self, id: StackingContextId, base_flow: &BaseFlow, - scroll_policy: ScrollPolicy, context_type: StackingContextType, established_reference_frame: Option, parent_clipping_and_scrolling: ClippingAndScrolling, @@ -1931,7 +1929,6 @@ impl FragmentDisplayListBuilding for Fragment { self.transform_matrix(&border_box), self.style().get_used_transform_style().to_layout(), self.perspective_matrix(&border_box), - scroll_policy, parent_clipping_and_scrolling, established_reference_frame, ) @@ -2713,7 +2710,6 @@ impl BlockFlowDisplayListBuilding for BlockFlow { let new_context = self.fragment.create_stacking_context( self.base.stacking_context_id, &self.base, - ScrollPolicy::Scrollable, stacking_context_type, None, parent_clipping_and_scrolling, @@ -2747,7 +2743,6 @@ impl BlockFlowDisplayListBuilding for BlockFlow { let stacking_context = self.fragment.create_stacking_context( self.base.stacking_context_id, &self.base, - ScrollPolicy::Scrollable, StackingContextType::Real, established_reference_frame, parent_clipping_and_scrolling, @@ -2885,7 +2880,6 @@ impl InlineFlowDisplayListBuilding for InlineFlow { let stacking_context = fragment.create_stacking_context( fragment.stacking_context_id, &self.base, - ScrollPolicy::Scrollable, StackingContextType::Real, None, state.current_clipping_and_scrolling, diff --git a/components/layout/display_list/items.rs b/components/layout/display_list/items.rs index 7d293996c58..1010e8ada5d 100644 --- a/components/layout/display_list/items.rs +++ b/components/layout/display_list/items.rs @@ -26,8 +26,8 @@ use webrender_api::{BorderRadius, BorderWidths, BoxShadowClipMode, ClipMode, Col use webrender_api::{ComplexClipRegion, ExtendMode, ExternalScrollId, FilterOp, FontInstanceKey}; use webrender_api::{GlyphInstance, GradientStop, ImageKey, ImageRendering, LayoutPoint}; use webrender_api::{LayoutRect, LayoutSize, LayoutTransform, LayoutVector2D, LineStyle}; -use webrender_api::{MixBlendMode, NinePatchBorder, NormalBorder, ScrollPolicy, ScrollSensitivity}; -use webrender_api::{Shadow, StickyOffsetBounds, TransformStyle}; +use webrender_api::{MixBlendMode, NinePatchBorder, NormalBorder, ScrollSensitivity, Shadow}; +use webrender_api::{StickyOffsetBounds, TransformStyle}; pub use style::dom::OpaqueNode; @@ -203,9 +203,6 @@ pub struct StackingContext { /// The perspective matrix to be applied to children. pub perspective: Option, - /// The scroll policy of this layer. - pub scroll_policy: ScrollPolicy, - /// The clip and scroll info for this StackingContext. pub parent_clipping_and_scrolling: ClippingAndScrolling, @@ -227,7 +224,6 @@ impl StackingContext { transform: Option, transform_style: TransformStyle, perspective: Option, - scroll_policy: ScrollPolicy, parent_clipping_and_scrolling: ClippingAndScrolling, established_reference_frame: Option, ) -> StackingContext { @@ -242,7 +238,6 @@ impl StackingContext { transform, transform_style, perspective, - scroll_policy, parent_clipping_and_scrolling, established_reference_frame, } @@ -261,7 +256,6 @@ impl StackingContext { None, TransformStyle::Flat, None, - ScrollPolicy::Scrollable, ClippingAndScrolling::simple(ClipScrollNodeIndex::root_scroll_node()), None, ) diff --git a/components/layout/display_list/webrender_helpers.rs b/components/layout/display_list/webrender_helpers.rs index da66b9c2b80..2e805f35a41 100644 --- a/components/layout/display_list/webrender_helpers.rs +++ b/components/layout/display_list/webrender_helpers.rs @@ -7,9 +7,8 @@ // This might be achieved by sharing types between WR and Servo display lists, or // completely converting layout to directly generate WebRender display lists, for example. -use display_list::items::{BorderDetails, ClipScrollNode}; -use display_list::items::{ClipScrollNodeIndex, ClipScrollNodeType, DisplayItem}; -use display_list::items::{DisplayList, StackingContextType}; +use display_list::items::{BorderDetails, ClipScrollNode, ClipScrollNodeIndex, ClipScrollNodeType}; +use display_list::items::{DisplayItem, DisplayList, StackingContextType}; use msg::constellation_msg::PipelineId; use webrender_api::{self, ClipAndScrollInfo, ClipId, DisplayListBuilder, GlyphRasterSpace}; @@ -213,7 +212,7 @@ impl WebRenderDisplayItemConverter for DisplayItem { builder.pop_all_shadows(); }, DisplayItem::Iframe(ref item) => { - builder.push_iframe(&self.prim_info(), item.iframe.to_webrender()); + builder.push_iframe(&self.prim_info(), item.iframe.to_webrender(), true); }, DisplayItem::PushStackingContext(ref item) => { let stacking_context = &item.stacking_context; @@ -222,7 +221,6 @@ impl WebRenderDisplayItemConverter for DisplayItem { let reference_frame_clip_id = builder.push_stacking_context( &webrender_api::LayoutPrimitiveInfo::new(stacking_context.bounds), None, - stacking_context.scroll_policy, stacking_context.transform.map(Into::into), stacking_context.transform_style, stacking_context.perspective, diff --git a/components/malloc_size_of/lib.rs b/components/malloc_size_of/lib.rs index b4c7c4232fb..eaec2cb20dc 100644 --- a/components/malloc_size_of/lib.rs +++ b/components/malloc_size_of/lib.rs @@ -807,8 +807,6 @@ malloc_size_of_is_0!(webrender_api::NormalBorder); #[cfg(feature = "webrender_api")] malloc_size_of_is_0!(webrender_api::RepeatMode); #[cfg(feature = "webrender_api")] -malloc_size_of_is_0!(webrender_api::ScrollPolicy); -#[cfg(feature = "webrender_api")] malloc_size_of_is_0!(webrender_api::ScrollSensitivity); #[cfg(feature = "webrender_api")] malloc_size_of_is_0!(webrender_api::StickyOffsetBounds); diff --git a/components/net/image_cache.rs b/components/net/image_cache.rs index 47eb829f962..40ef8041ef7 100644 --- a/components/net/image_cache.rs +++ b/components/net/image_cache.rs @@ -71,8 +71,7 @@ fn set_webrender_image_key(webrender_api: &webrender_api::RenderApi, image: &mut } }; let descriptor = webrender_api::ImageDescriptor { - width: image.width, - height: image.height, + size: webrender_api::DeviceUintSize::new(image.width, image.height), stride: None, format: webrender_api::ImageFormat::BGRA8, offset: 0, @@ -81,9 +80,9 @@ fn set_webrender_image_key(webrender_api: &webrender_api::RenderApi, image: &mut }; let data = webrender_api::ImageData::new(bytes); let image_key = webrender_api.generate_image_key(); - let mut updates = webrender_api::ResourceUpdates::new(); - updates.add_image(image_key, descriptor, data, None); - webrender_api.update_resources(updates); + let mut txn = webrender_api::Transaction::new(); + txn.add_image(image_key, descriptor, data, None); + webrender_api.update_resources(txn.resource_updates); image.id = Some(image_key); } diff --git a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini new file mode 100644 index 00000000000..5ca8396f2ab --- /dev/null +++ b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-paragraph.html.ini @@ -0,0 +1,3 @@ +[mix-blend-mode-paragraph.html] + type: reftest + expected: FAIL diff --git a/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html.ini b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html.ini new file mode 100644 index 00000000000..18fdc4394af --- /dev/null +++ b/tests/wpt/metadata/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-text.html.ini @@ -0,0 +1,3 @@ +[mix-blend-mode-parent-with-text.html] + type: reftest + expected: FAIL