mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
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:
commit
d3d2b0261a
34 changed files with 87 additions and 77 deletions
|
@ -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"]}
|
||||
|
|
|
@ -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"}
|
||||
|
|
|
@ -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"] }
|
||||
|
|
|
@ -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"] }
|
||||
|
|
|
@ -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"}
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"}
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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(_) |
|
||||
|
|
|
@ -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"}
|
||||
|
|
|
@ -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(),
|
||||
})));
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"}
|
||||
|
|
|
@ -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"}
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"}
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"}
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"}
|
||||
|
|
|
@ -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"}
|
||||
|
|
|
@ -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"}
|
||||
|
|
|
@ -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"}
|
||||
|
|
|
@ -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"]}
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue