aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout/display_list/webrender_helpers.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/layout/display_list/webrender_helpers.rs')
-rw-r--r--components/layout/display_list/webrender_helpers.rs37
1 files changed, 15 insertions, 22 deletions
diff --git a/components/layout/display_list/webrender_helpers.rs b/components/layout/display_list/webrender_helpers.rs
index 1e584c0c06f..a8130a15936 100644
--- a/components/layout/display_list/webrender_helpers.rs
+++ b/components/layout/display_list/webrender_helpers.rs
@@ -49,7 +49,6 @@ impl<'a> ClipScrollState<'a> {
let root_clip_chain =
builder.define_clip_chain(None, [ClipId::root(state.compositor_info.pipeline_id)]);
-
state.add_clip_node_mapping(0, root_clip_chain);
state.add_clip_node_mapping(1, root_clip_chain);
@@ -115,7 +114,11 @@ impl DisplayList {
epoch: Epoch,
) -> (DisplayListBuilder, CompositorDisplayListInfo, IsContentful) {
let webrender_pipeline = pipeline_id.to_webrender();
- let mut builder = DisplayListBuilder::new(webrender_pipeline);
+ let mut builder = DisplayListBuilder::with_capacity(
+ webrender_pipeline,
+ self.bounds().size,
+ 1024 * 1024, // 1 MB of space
+ );
let content_size = self.bounds().size;
let mut state = ClipScrollState::new(
@@ -153,16 +156,17 @@ impl DisplayItem {
let internal_clip_id = clip_and_scroll_indices
.clipping
.unwrap_or(clip_and_scroll_indices.scrolling);
- let current_clip_chain_id = state.webrender_clip_id_for_index(internal_clip_id.to_index());
+ let current_clip_id = state.webrender_clip_id_for_index(internal_clip_id.to_index());
let hit_test_bounds = self.bounds().intersection(&self.base().clip_rect);
let build_common_item_properties = |base: &BaseDisplayItem| {
CommonItemProperties {
clip_rect: base.clip_rect,
spatial_id: current_scroll_node_id.spatial_id,
- clip_id: ClipId::ClipChain(current_clip_chain_id),
+ clip_id: ClipId::ClipChain(current_clip_id),
// TODO(gw): Make use of the WR backface visibility functionality.
flags: PrimitiveFlags::default(),
+ hit_info: None,
}
};
@@ -183,15 +187,10 @@ impl DisplayItem {
current_scroll_node_id,
);
- builder.push_hit_test(
- &CommonItemProperties {
- clip_rect: bounds,
- spatial_id: current_scroll_node_id.spatial_id,
- clip_id: ClipId::ClipChain(current_clip_chain_id),
- flags: PrimitiveFlags::default(),
- },
- (hit_test_index as u64, 0u16),
- );
+ let mut common = build_common_item_properties(base);
+ common.hit_info = Some((hit_test_index as u64, 0u16));
+ common.clip_rect = bounds;
+ builder.push_hit_test(&common);
};
match *self {
@@ -303,13 +302,7 @@ impl DisplayItem {
scrolling_relative_to: None,
},
),
- (Some(t), None) => (
- t,
- ReferenceFrameKind::Transform {
- is_2d_scale_translation: false,
- should_snap: false,
- },
- ),
+ (Some(t), None) => (t, ReferenceFrameKind::Transform),
(Some(t), Some(p)) => (
p.then(&t),
ReferenceFrameKind::Perspective {
@@ -328,7 +321,7 @@ impl DisplayItem {
);
let index = frame_index.to_index();
- state.add_clip_node_mapping(index, current_clip_chain_id);
+ state.add_clip_node_mapping(index, current_clip_id);
state.register_spatial_node(
index,
new_spatial_id,
@@ -415,7 +408,7 @@ impl DisplayItem {
let spatial_id = builder
.define_scroll_frame(
&parent_space_and_clip_info,
- external_id,
+ Some(external_id),
node.content_rect,
item_rect,
scroll_sensitivity,