Bug 1579235 - Part 1 - Support prefer compositor flag in wrench. r=nical
authorGlenn Watson <gw@intuitionlibrary.com>
Thu, 13 Feb 2020 10:12:41 +0000
changeset 513711 1e1ffcbadfb2350ecda25b8752b3c07c2f2d0722
parent 513710 f4092f6ad7cb9975a48925eeccd446353862d08a
child 513712 4e6cf4c65e2153dd212512aae8b43eea39ce4f36
push id37120
push usercbrindusan@mozilla.com
push dateThu, 13 Feb 2020 18:21:33 +0000
treeherdermozilla-central@b47e32ff95b8 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersnical
bugs1579235
milestone75.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1579235 - Part 1 - Support prefer compositor flag in wrench. r=nical Add support to the yaml reader and writer to be able to specify that a primitive should set the PREFER_COMPOSITOR_SURFACE flag. This flag is not currently used, but in future will signal the picture caching code to promote a primitive to draw on a native compositor surface where possible. Differential Revision: https://phabricator.services.mozilla.com/D62693
gfx/wr/wrench/src/yaml_frame_reader.rs
gfx/wr/wrench/src/yaml_frame_writer.rs
--- a/gfx/wr/wrench/src/yaml_frame_reader.rs
+++ b/gfx/wr/wrench/src/yaml_frame_reader.rs
@@ -1727,16 +1727,23 @@ impl YamlFrameReader {
             }
             if let Some(is_scrollbar_container) = item["scrollbar-container"].as_bool() {
                 if is_scrollbar_container {
                     flags.insert(PrimitiveFlags::IS_SCROLLBAR_CONTAINER);
                 } else {
                     flags.remove(PrimitiveFlags::IS_SCROLLBAR_CONTAINER);
                 }
             }
+            if let Some(prefer_compositor_surface) = item["prefer-compositor-surface"].as_bool() {
+                if prefer_compositor_surface {
+                    flags.insert(PrimitiveFlags::PREFER_COMPOSITOR_SURFACE);
+                } else {
+                    flags.remove(PrimitiveFlags::PREFER_COMPOSITOR_SURFACE);
+                }
+            }
 
             let mut info = CommonItemProperties {
                 clip_rect,
                 clip_id: space_and_clip.clip_id,
                 spatial_id: space_and_clip.spatial_id,
                 hit_info: self.to_hit_testing_tag(&item["hit-testing-tag"]),
                 item_key: None,
                 flags,
--- a/gfx/wr/wrench/src/yaml_frame_writer.rs
+++ b/gfx/wr/wrench/src/yaml_frame_writer.rs
@@ -200,16 +200,17 @@ fn maybe_radius_yaml(radius: &BorderRadi
         Some(Yaml::Hash(table))
     }
 }
 
 fn common_node(v: &mut Table, clip_id_mapper: &mut ClipIdMapper, info: &CommonItemProperties) {
     rect_node(v, "clip-rect", &info.clip_rect);
     bool_node(v, "backface-visible", info.flags.contains(PrimitiveFlags::IS_BACKFACE_VISIBLE));
     bool_node(v, "scrollbar-container", info.flags.contains(PrimitiveFlags::IS_SCROLLBAR_CONTAINER));
+    bool_node(v, "prefer-compositor-surface", info.flags.contains(PrimitiveFlags::PREFER_COMPOSITOR_SURFACE));
     bool_node(v, "scrollbar-thumb", info.flags.contains(PrimitiveFlags::IS_SCROLLBAR_THUMB));
 
     clip_and_scroll_node(v, clip_id_mapper, info.clip_id, info.spatial_id);
 
     if let Some(tag) = info.hit_info {
         yaml_node(
             v,
             "hit-testing-tag",