Auto merge of #9861 - pcwalton:superflat, r=glennw

Flatten the WebRender API to allow us to use shared memory to transfer display lists.

Improves performance significantly.

Requires servo/webrender_traits#15 and servo/webrender#222.

r? @glennw

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9861)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-03-04 06:45:45 +05:30
commit 1c63bf9822
5 changed files with 62 additions and 41 deletions

View file

@ -83,7 +83,7 @@ use util::thread;
use util::thread_state;
use util::workqueue::WorkQueue;
use webrender_helpers::WebRenderDisplayListConverter;
use webrender_traits;
use webrender_traits::{self, AuxiliaryListsBuilder};
use wrapper::{LayoutNode, NonOpaqueStyleAndLayoutData, ServoLayoutNode, ThreadSafeLayoutNode};
/// The number of screens of data we're allowed to generate display lists for in each direction.
@ -931,12 +931,13 @@ impl LayoutThread {
// TODO(gw) For now only create a root scrolling layer!
let root_scroll_layer_id = webrender_traits::ScrollLayerId::new(pipeline_id, 0);
let sc_id = rw_data.display_list.as_ref()
.unwrap()
.convert_to_webrender(&self.webrender_api.as_ref().unwrap(),
pipeline_id,
epoch,
Some(root_scroll_layer_id));
let mut auxiliary_lists_builder = AuxiliaryListsBuilder::new();
let sc_id = rw_data.display_list.as_ref().unwrap().convert_to_webrender(
&self.webrender_api.as_ref().unwrap(),
pipeline_id,
epoch,
Some(root_scroll_layer_id),
&mut auxiliary_lists_builder);
let root_background_color = webrender_traits::ColorF::new(root_background_color.r,
root_background_color.g,
root_background_color.b,
@ -949,7 +950,8 @@ impl LayoutThread {
root_background_color,
epoch,
pipeline_id,
viewport_size);
viewport_size,
auxiliary_lists_builder.finalize());
} else {
self.paint_chan
.send(LayoutToPaintMsg::PaintInit(self.epoch, display_list))