From 15d7697474f000d43154132391bea3724509397f Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Wed, 13 Sep 2017 07:55:55 +1000 Subject: [PATCH] Update WR (backface API changes). This does the minimal work to update to the API changes related to backface support. It doesn't actually pass through any info about the backface visibility flags yet. --- Cargo.lock | 66 +++++++++++++------------- components/layout/webrender_helpers.rs | 57 +++++++++++----------- 2 files changed, 63 insertions(+), 60 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c6f4b06e23b2..e7a9c101f073 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -116,7 +116,7 @@ dependencies = [ "core-foundation 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "freetype 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.23 (registry+https://github.com/rust-lang/crates.io-index)", "servo-egl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -328,7 +328,7 @@ dependencies = [ "canvas_traits 0.0.1", "compositing 0.0.1", "cssparser 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "ipc-channel 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -344,7 +344,7 @@ name = "canvas_traits" version = "0.0.1" dependencies = [ "cssparser 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_derive 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "ipc-channel 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -488,7 +488,7 @@ dependencies = [ name = "compositing" version = "0.0.1" dependencies = [ - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx_traits 0.0.1", "gleam 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "image 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -519,7 +519,7 @@ dependencies = [ "compositing 0.0.1", "debugger 0.0.1", "devtools_traits 0.0.1", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "gaol 0.0.1 (git+https://github.com/servo/gaol)", "gfx 0.0.1", "gfx_traits 0.0.1", @@ -800,7 +800,7 @@ dependencies = [ "cocoa 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", "compositing 0.0.1", "devtools 0.0.1", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "glutin_app 0.0.1", "libc 0.2.23 (registry+https://github.com/rust-lang/crates.io-index)", @@ -949,7 +949,7 @@ dependencies = [ [[package]] name = "euclid" -version = "0.15.1" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "heapsize 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1107,7 +1107,7 @@ dependencies = [ "core-graphics 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "dwrote 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "fontsan 0.3.2 (git+https://github.com/servo/fontsan)", "freetype 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1201,7 +1201,7 @@ version = "0.0.1" dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "compositing 0.0.1", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "libservo 0.0.1", @@ -1517,7 +1517,7 @@ dependencies = [ "atomic_refcell 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", "canvas_traits 0.0.1", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "gfx 0.0.1", "gfx_traits 0.0.1", @@ -1565,7 +1565,7 @@ version = "0.0.1" dependencies = [ "app_units 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", "atomic_refcell 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "gfx 0.0.1", "gfx_traits 0.0.1", @@ -1673,7 +1673,7 @@ dependencies = [ "devtools 0.0.1", "devtools_traits 0.0.1", "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "gaol 0.0.1 (git+https://github.com/servo/gaol)", "gfx 0.0.1", "gleam 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1809,7 +1809,7 @@ dependencies = [ name = "metrics_tests" version = "0.0.1" dependencies = [ - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx 0.0.1", "gfx_traits 0.0.1", "ipc-channel 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2118,7 +2118,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cgl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "gl_generator 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2300,7 +2300,7 @@ version = "0.6.0" 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)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2572,7 +2572,7 @@ dependencies = [ "dom_struct 0.0.1", "domobject_derive 0.0.1", "encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "half 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2639,7 +2639,7 @@ dependencies = [ "atomic_refcell 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "canvas_traits 0.0.1", "cssparser 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx_traits 0.0.1", "heapsize 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_derive 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2669,7 +2669,7 @@ version = "0.0.1" name = "script_tests" version = "0.0.1" dependencies = [ - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "script 0.0.1", "servo_url 0.0.1", @@ -2683,7 +2683,7 @@ dependencies = [ "canvas_traits 0.0.1", "cookie 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "devtools_traits 0.0.1", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "gfx_traits 0.0.1", "heapsize 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_derive 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2869,7 +2869,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cgl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "cmake 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "expat-sys 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "gleam 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "glx 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2922,7 +2922,7 @@ version = "0.0.1" dependencies = [ "android_injected_glue 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2947,7 +2947,7 @@ name = "servo_geometry" version = "0.0.1" dependencies = [ "app_units 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3117,7 +3117,7 @@ dependencies = [ "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "cssparser 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", "encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "fallible 0.0.1", "fnv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "hashglobe 0.1.0", @@ -3177,7 +3177,7 @@ dependencies = [ "app_units 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "cssparser 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "html5ever 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3199,7 +3199,7 @@ dependencies = [ "app_units 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "cssparser 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize_derive 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "selectors 0.19.0", @@ -3215,7 +3215,7 @@ dependencies = [ "atomic_refcell 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "cssparser 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "geckoservo 0.0.1", "libc 0.2.23 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3567,7 +3567,7 @@ version = "0.0.1" dependencies = [ "base64 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "cookie 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.10.10 (registry+https://github.com/rust-lang/crates.io-index)", "image 0.12.4 (registry+https://github.com/rust-lang/crates.io-index)", "ipc-channel 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3587,7 +3587,7 @@ dependencies = [ [[package]] name = "webrender" version = "0.50.0" -source = "git+https://github.com/servo/webrender#cd1855550857b910f752359b48c5cc053419c358" +source = "git+https://github.com/servo/webrender#b1fea4fce1005c35ef5566d7ba1733d65d6dc840" dependencies = [ "app_units 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3597,7 +3597,7 @@ dependencies = [ "core-graphics 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-text 6.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "dwrote 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "freetype 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "gamma-lut 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3615,7 +3615,7 @@ dependencies = [ [[package]] name = "webrender_api" version = "0.50.0" -source = "git+https://github.com/servo/webrender#cd1855550857b910f752359b48c5cc053419c358" +source = "git+https://github.com/servo/webrender#b1fea4fce1005c35ef5566d7ba1733d65d6dc840" dependencies = [ "app_units 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3623,7 +3623,7 @@ dependencies = [ "core-foundation 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "dwrote 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "ipc-channel 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3636,7 +3636,7 @@ name = "webvr" version = "0.0.1" dependencies = [ "canvas_traits 0.0.1", - "euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", + "euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)", "ipc-channel 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", @@ -3834,7 +3834,7 @@ dependencies = [ "checksum env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b" "checksum error-chain 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9435d864e017c3c6afeac1654189b06cdb491cf2ff73dbf0d73b0f292f42ff8" "checksum error-chain 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "318cb3c71ee4cdea69fdc9e15c173b245ed6063e1709029e8fd32525a881120f" -"checksum euclid 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7be9fcb1ce77782eb620253eb02bc1f000545f3c360841a26cda572f10fad4ff" +"checksum euclid 0.15.2 (registry+https://github.com/rust-lang/crates.io-index)" = "50c9e4c3b53de731815135191f0b77969bea953211b8bbd3cc3083a7b10e190e" "checksum expat-sys 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cef36cd1a8a02d28b91d97347c63247b9e4cb8a8e36df36f8201dc87a1c0859c" "checksum extra-default 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca1434e1920ba21b45516c16b5edbd82e8f2e4349b12a7a53eb9903ed2928d56" "checksum flate2 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)" = "36df0166e856739905cd3d7e0b210fe818592211a008862599845e012d8d304c" diff --git a/components/layout/webrender_helpers.rs b/components/layout/webrender_helpers.rs index 59aa20d95790..4bcd4f337d42 100644 --- a/components/layout/webrender_helpers.rs +++ b/components/layout/webrender_helpers.rs @@ -19,6 +19,16 @@ use style::values::generics::effects::Filter as GenericFilter; use webrender_api::{self, ClipAndScrollInfo, ComplexClipRegion, DisplayListBuilder}; use webrender_api::{ExtendMode, LayoutTransform}; +fn prim_info(local_rect: Rect, + local_clip: Option) -> webrender_api::LayoutPrimitiveInfo { + webrender_api::LayoutPrimitiveInfo { + rect: local_rect.to_rectf(), + local_clip, + // TODO(gw): Make use of the WR backface visibility functionality. + is_backface_visible: true, + } +} + pub trait WebRenderDisplayListConverter { fn convert_to_webrender(&self, pipeline_id: PipelineId) -> DisplayListBuilder; } @@ -251,8 +261,7 @@ impl WebRenderDisplayItemConverter for DisplayItem { DisplayItem::SolidColor(ref item) => { let color = item.color; if color.a > 0.0 { - builder.push_rect(item.base.bounds.to_rectf(), - Some(item.base.local_clip), + builder.push_rect(&prim_info(item.base.bounds, Some(item.base.local_clip)), color); } } @@ -283,8 +292,7 @@ impl WebRenderDisplayItemConverter for DisplayItem { } if glyphs.len() > 0 { - builder.push_text(item.base.bounds.to_rectf(), - Some(item.base.local_clip), + builder.push_text(&prim_info(item.base.bounds, Some(item.base.local_clip)), &glyphs, item.text_run.font_key, item.text_color, @@ -295,8 +303,7 @@ impl WebRenderDisplayItemConverter for DisplayItem { if let Some(id) = item.webrender_image.key { if item.stretch_size.width > Au(0) && item.stretch_size.height > Au(0) { - builder.push_image(item.base.bounds.to_rectf(), - Some(item.base.local_clip), + builder.push_image(&prim_info(item.base.bounds, Some(item.base.local_clip)), item.stretch_size.to_sizef(), item.tile_spacing.to_sizef(), item.image_rendering.to_image_rendering(), @@ -305,7 +312,7 @@ impl WebRenderDisplayItemConverter for DisplayItem { } } DisplayItem::Border(ref item) => { - let rect = item.base.bounds.to_rectf(); + let rect = item.base.bounds; let widths = item.border_widths.to_border_widths(); let details = match item.details { @@ -386,10 +393,10 @@ impl WebRenderDisplayItemConverter for DisplayItem { } }; - builder.push_border(rect, Some(item.base.local_clip), widths, details); + builder.push_border(&prim_info(rect, Some(item.base.local_clip)), widths, details); } DisplayItem::Gradient(ref item) => { - let rect = item.base.bounds.to_rectf(); + let rect = item.base.bounds; let start_point = item.gradient.start_point.to_pointf(); let end_point = item.gradient.end_point.to_pointf(); let extend_mode = if item.gradient.repeating { @@ -401,14 +408,13 @@ impl WebRenderDisplayItemConverter for DisplayItem { end_point, item.gradient.stops.clone(), extend_mode); - builder.push_gradient(rect, - Some(item.base.local_clip), + builder.push_gradient(&prim_info(rect, Some(item.base.local_clip)), gradient, - rect.size, + rect.size.to_sizef(), webrender_api::LayoutSize::zero()); } DisplayItem::RadialGradient(ref item) => { - let rect = item.base.bounds.to_rectf(); + let rect = item.base.bounds; let center = item.gradient.center.to_pointf(); let radius = item.gradient.radius.to_sizef(); let extend_mode = if item.gradient.repeating { @@ -420,15 +426,14 @@ impl WebRenderDisplayItemConverter for DisplayItem { radius, item.gradient.stops.clone(), extend_mode); - builder.push_radial_gradient(rect, - Some(item.base.local_clip), + builder.push_radial_gradient(&prim_info(rect, Some(item.base.local_clip)), gradient, - rect.size, + rect.size.to_sizef(), webrender_api::LayoutSize::zero()); } DisplayItem::Line(ref item) => { let box_bounds = item.base.bounds.to_rectf(); - builder.push_line(Some(item.base.local_clip), + builder.push_line(&prim_info(item.base.bounds, Some(item.base.local_clip)), box_bounds.origin.y + box_bounds.size.height, box_bounds.origin.x, box_bounds.origin.x + box_bounds.size.width, @@ -438,10 +443,9 @@ impl WebRenderDisplayItemConverter for DisplayItem { item.style); } DisplayItem::BoxShadow(ref item) => { - let rect = item.base.bounds.to_rectf(); + let rect = item.base.bounds; let box_bounds = item.box_bounds.to_rectf(); - builder.push_box_shadow(rect, - Some(item.base.local_clip), + builder.push_box_shadow(&prim_info(rect, Some(item.base.local_clip)), box_bounds, item.offset.to_vectorf(), item.color, @@ -451,9 +455,8 @@ impl WebRenderDisplayItemConverter for DisplayItem { item.clip_mode.to_clip_mode()); } DisplayItem::PushTextShadow(ref item) => { - let rect = item.base.bounds.to_rectf(); - builder.push_text_shadow(rect, - Some(item.base.local_clip), + let rect = item.base.bounds; + builder.push_text_shadow(&prim_info(rect, Some(item.base.local_clip)), webrender_api::TextShadow { blur_radius: item.blur_radius.to_f32_px(), offset: item.offset.to_vectorf(), @@ -464,9 +467,9 @@ impl WebRenderDisplayItemConverter for DisplayItem { builder.pop_text_shadow(); } DisplayItem::Iframe(ref item) => { - let rect = item.base.bounds.to_rectf(); + let rect = item.base.bounds; let pipeline_id = item.iframe.to_webrender(); - builder.push_iframe(rect, Some(item.base.local_clip), pipeline_id); + builder.push_iframe(&prim_info(rect, Some(item.base.local_clip)), pipeline_id); } DisplayItem::PushStackingContext(ref item) => { let stacking_context = &item.stacking_context; @@ -479,8 +482,8 @@ impl WebRenderDisplayItemConverter for DisplayItem { LayoutTransform::from_untyped(&perspective) }); - builder.push_stacking_context(stacking_context.scroll_policy, - stacking_context.bounds.to_rectf(), + builder.push_stacking_context(&prim_info(stacking_context.bounds, None), + stacking_context.scroll_policy, transform, stacking_context.transform_style, perspective,