Auto merge of #18890 - glennw:update-wr-clip-text-aa, r=jdm

Update WR (details below):

* Add support for clip masks on text runs.
* Fix atomic ordering of items with multiple shadows.
* Update to bincode + ipc-channel with optimizations.
* Fix some plane splitting precision errors.
* Improve the anti-aliasing quality significantly.
* Add internal ClipChain support.
* Fix diacritic glyphs on Linux.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18890)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2017-10-16 12:54:02 -05:00 committed by GitHub
commit d3d2b0261a
34 changed files with 87 additions and 77 deletions

View file

@ -13,7 +13,7 @@ path = "lib.rs"
bitflags = "0.7"
bluetooth_traits = {path = "../bluetooth_traits"}
device = {git = "https://github.com/servo/devices", features = ["bluetooth-test"]}
ipc-channel = "0.8"
ipc-channel = "0.9"
servo_config = {path = "../config"}
servo_rand = {path = "../rand"}
uuid = {version = "0.5", features = ["v4"]}

View file

@ -10,7 +10,7 @@ name = "bluetooth_traits"
path = "lib.rs"
[dependencies]
ipc-channel = "0.8"
ipc-channel = "0.9"
regex = "0.2"
serde = "1.0"
servo_config = {path = "../config"}

View file

@ -17,7 +17,7 @@ cssparser = "0.22.0"
euclid = "0.15"
fnv = "1.0"
gleam = "0.4"
ipc-channel = "0.8"
ipc-channel = "0.9"
log = "0.3.5"
num-traits = "0.1.32"
offscreen_gl_context = { version = "0.11", features = ["serde", "osmesa"] }

View file

@ -14,7 +14,7 @@ cssparser = "0.22.0"
euclid = "0.15"
heapsize = "0.4"
heapsize_derive = "0.1"
ipc-channel = "0.8"
ipc-channel = "0.9"
lazy_static = "0.2"
nonzero = {path = "../nonzero"}
offscreen_gl_context = { version = "0.11", features = ["serde"] }

View file

@ -14,7 +14,7 @@ euclid = "0.15"
gfx_traits = {path = "../gfx_traits"}
gleam = "0.4"
image = "0.16"
ipc-channel = "0.8"
ipc-channel = "0.9"
log = "0.3.5"
msg = {path = "../msg"}
net_traits = {path = "../net_traits"}

View file

@ -22,7 +22,7 @@ euclid = "0.15"
gfx = {path = "../gfx"}
gfx_traits = {path = "../gfx_traits"}
hyper = "0.10"
ipc-channel = "0.8"
ipc-channel = "0.9"
itertools = "0.5"
layout_traits = {path = "../layout_traits"}
log = "0.3.5"

View file

@ -13,7 +13,7 @@ path = "lib.rs"
devtools_traits = {path = "../devtools_traits"}
hyper = "0.10"
hyper_serde = "0.7"
ipc-channel = "0.8"
ipc-channel = "0.9"
log = "0.3.5"
msg = {path = "../msg"}
serde = "1.0"

View file

@ -15,7 +15,7 @@ heapsize = "0.4"
heapsize_derive = "0.1"
hyper = "0.10"
hyper_serde = "0.7"
ipc-channel = "0.8"
ipc-channel = "0.9"
msg = {path = "../msg"}
serde = "1.0"
servo_url = {path = "../url"}

View file

@ -23,7 +23,7 @@ gfx_traits = {path = "../gfx_traits"}
harfbuzz-sys = "0.1"
heapsize = "0.4"
heapsize_derive = "0.1"
ipc-channel = "0.8"
ipc-channel = "0.9"
lazy_static = "0.2"
libc = "0.2"
log = "0.3.5"

View file

@ -606,7 +606,7 @@ pub enum DisplayItem {
Line(Box<LineDisplayItem>),
BoxShadow(Box<BoxShadowDisplayItem>),
PushTextShadow(Box<PushTextShadowDisplayItem>),
PopTextShadow(Box<PopTextShadowDisplayItem>),
PopAllTextShadows(Box<PopAllTextShadowsDisplayItem>),
Iframe(Box<IframeDisplayItem>),
PushStackingContext(Box<PushStackingContextItem>),
PopStackingContext(Box<PopStackingContextItem>),
@ -1190,7 +1190,7 @@ pub struct PushTextShadowDisplayItem {
/// Defines a text shadow that affects all items until the next PopTextShadow.
#[derive(Clone, Deserialize, HeapSizeOf, Serialize)]
pub struct PopTextShadowDisplayItem {
pub struct PopAllTextShadowsDisplayItem {
/// Fields common to all display items.
pub base: BaseDisplayItem,
}
@ -1248,7 +1248,7 @@ impl DisplayItem {
DisplayItem::Line(ref line) => &line.base,
DisplayItem::BoxShadow(ref box_shadow) => &box_shadow.base,
DisplayItem::PushTextShadow(ref push_text_shadow) => &push_text_shadow.base,
DisplayItem::PopTextShadow(ref pop_text_shadow) => &pop_text_shadow.base,
DisplayItem::PopAllTextShadows(ref pop_text_shadow) => &pop_text_shadow.base,
DisplayItem::Iframe(ref iframe) => &iframe.base,
DisplayItem::PushStackingContext(ref stacking_context) => &stacking_context.base,
DisplayItem::PopStackingContext(ref item) => &item.base,
@ -1373,7 +1373,7 @@ impl fmt::Debug for DisplayItem {
DisplayItem::Line(_) => "Line".to_owned(),
DisplayItem::BoxShadow(_) => "BoxShadow".to_owned(),
DisplayItem::PushTextShadow(_) => "PushTextShadow".to_owned(),
DisplayItem::PopTextShadow(_) => "PopTextShadow".to_owned(),
DisplayItem::PopAllTextShadows(_) => "PopTextShadow".to_owned(),
DisplayItem::Iframe(_) => "Iframe".to_owned(),
DisplayItem::PushStackingContext(_) |
DisplayItem::PopStackingContext(_) |

View file

@ -20,7 +20,7 @@ gfx = {path = "../gfx"}
gfx_traits = {path = "../gfx_traits"}
heapsize = "0.4"
html5ever = "0.20.0"
ipc-channel = "0.8"
ipc-channel = "0.9"
libc = "0.2"
log = "0.3.5"
msg = {path = "../msg"}

View file

@ -28,7 +28,7 @@ use gfx::display_list::{BorderRadii, BoxShadowClipMode, BoxShadowDisplayItem, Cl
use gfx::display_list::{ClipScrollNodeType, ClippingRegion, DisplayItem, DisplayItemMetadata};
use gfx::display_list::{DisplayList, DisplayListSection, GradientDisplayItem, IframeDisplayItem};
use gfx::display_list::{ImageBorder, ImageDisplayItem, LineDisplayItem, NormalBorder, OpaqueNode};
use gfx::display_list::{PopTextShadowDisplayItem, PushTextShadowDisplayItem};
use gfx::display_list::{PopAllTextShadowsDisplayItem, PushTextShadowDisplayItem};
use gfx::display_list::{RadialGradientDisplayItem, SolidColorDisplayItem, StackingContext};
use gfx::display_list::{StackingContextType, TextDisplayItem, TextOrientation, WebRenderImageInfo};
use gfx_traits::{combine_id_with_fragment_type, FragmentType, StackingContextId};
@ -2340,9 +2340,9 @@ impl FragmentDisplayListBuilding for Fragment {
);
}
// Pair all the PushTextShadows
for _ in text_shadows {
state.add_display_item(DisplayItem::PopTextShadow(Box::new(PopTextShadowDisplayItem {
// Pop all the PushTextShadows
if !text_shadows.is_empty() {
state.add_display_item(DisplayItem::PopAllTextShadows(Box::new(PopAllTextShadowsDisplayItem {
base: base.clone(),
})));
}

View file

@ -465,8 +465,8 @@ impl WebRenderDisplayItemConverter for DisplayItem {
color: item.color,
});
}
DisplayItem::PopTextShadow(_) => {
builder.pop_shadow();
DisplayItem::PopAllTextShadows(_) => {
builder.pop_all_shadows();
}
DisplayItem::Iframe(ref item) => {
let rect = item.base.bounds;

View file

@ -21,7 +21,7 @@ gfx = {path = "../gfx"}
gfx_traits = {path = "../gfx_traits"}
heapsize = "0.4"
html5ever = "0.20.0"
ipc-channel = "0.8"
ipc-channel = "0.9"
layout = {path = "../layout"}
layout_traits = {path = "../layout_traits"}
lazy_static = "0.2"

View file

@ -11,7 +11,7 @@ path = "lib.rs"
[dependencies]
gfx = {path = "../gfx"}
ipc-channel = "0.8"
ipc-channel = "0.9"
metrics = {path = "../metrics"}
msg = {path = "../msg"}
net_traits = {path = "../net_traits"}

View file

@ -12,7 +12,7 @@ path = "lib.rs"
[dependencies]
gfx = {path = "../gfx"}
gfx_traits = {path = "../gfx_traits"}
ipc-channel = "0.8"
ipc-channel = "0.9"
log = "0.3.5"
msg = {path = "../msg"}
profile_traits = {path = "../profile_traits"}

View file

@ -19,7 +19,7 @@ hyper = "0.10"
hyper_serde = "0.7"
hyper-openssl = "0.2.2"
immeta = "0.3.1"
ipc-channel = "0.8"
ipc-channel = "0.9"
lazy_static = "0.2"
log = "0.3.5"
matches = "0.1"

View file

@ -16,7 +16,7 @@ heapsize_derive = "0.1"
hyper = "0.10"
hyper_serde = "0.7"
image = "0.16"
ipc-channel = "0.8"
ipc-channel = "0.9"
lazy_static = "0.2"
log = "0.3.5"
msg = {path = "../msg"}

View file

@ -15,7 +15,7 @@ unstable = []
[dependencies]
profile_traits = {path = "../profile_traits"}
influent = "0.4"
ipc-channel = "0.8"
ipc-channel = "0.9"
heartbeats-simple = "0.4"
log = "0.3.5"
serde = "1.0"

View file

@ -15,7 +15,7 @@ energy-profiling = ["energymon", "energy-monitor"]
[dependencies]
energy-monitor = {version = "0.2.0", optional = true}
energymon = {git = "https://github.com/energymon/energymon-rust.git", optional = true}
ipc-channel = "0.8"
ipc-channel = "0.9"
log = "0.3.5"
serde = "1.0"
servo_config = {path = "../config"}

View file

@ -49,7 +49,7 @@ html5ever = {version = "0.20", features = ["heap_size"]}
hyper = "0.10"
hyper_serde = "0.7"
image = "0.16"
ipc-channel = "0.8"
ipc-channel = "0.9"
js = {git = "https://github.com/servo/rust-mozjs", features = ["promises"]}
jstraceable_derive = {path = "../jstraceable_derive"}
lazy_static = "0.2"

View file

@ -19,7 +19,7 @@ gfx_traits = {path = "../gfx_traits"}
heapsize = "0.4"
heapsize_derive = "0.1"
html5ever = "0.20.0"
ipc-channel = "0.8"
ipc-channel = "0.9"
libc = "0.2"
log = "0.3.5"
metrics = {path = "../metrics"}

View file

@ -20,7 +20,7 @@ heapsize = "0.4"
heapsize_derive = "0.1"
hyper = "0.10"
hyper_serde = "0.7"
ipc-channel = "0.8"
ipc-channel = "0.9"
libc = "0.2"
msg = {path = "../msg"}
net_traits = {path = "../net_traits"}

View file

@ -39,7 +39,7 @@ env_logger = "0.4"
euclid = "0.15"
gfx = {path = "../gfx"}
gleam = "0.4"
ipc-channel = "0.8"
ipc-channel = "0.9"
layout_thread = {path = "../layout_thread"}
log = "0.3"
msg = {path = "../msg"}

View file

@ -15,7 +15,7 @@ cookie = "0.6"
euclid = "0.15"
hyper = "0.10"
image = "0.16"
ipc-channel = "0.8"
ipc-channel = "0.9"
log = "0.3.5"
msg = {path = "../msg"}
net_traits = {path = "../net_traits"}

View file

@ -16,7 +16,7 @@ oculusvr = ['rust-webvr/oculusvr']
[dependencies]
canvas_traits = {path = "../canvas_traits"}
euclid = "0.15"
ipc-channel = "0.8"
ipc-channel = "0.9"
log = "0.3"
msg = {path = "../msg"}
rust-webvr = {version = "0.9", features = ["openvr"]}

View file

@ -10,7 +10,7 @@ name = "webvr_traits"
path = "lib.rs"
[dependencies]
ipc-channel = "0.8"
ipc-channel = "0.9"
msg = {path = "../msg"}
rust-webvr-api = {version = "0.9", features = ["serde-serialization"]}
serde = "1.0"