| Index: cc/trees/property_tree_builder.cc
|
| diff --git a/cc/trees/property_tree_builder.cc b/cc/trees/property_tree_builder.cc
|
| index 9cb1636d13da98f8f8b2d69f5079e13c5c486912..f7a5ae292f8ccedece73181e8347f3b069dce414 100644
|
| --- a/cc/trees/property_tree_builder.cc
|
| +++ b/cc/trees/property_tree_builder.cc
|
| @@ -225,6 +225,14 @@ static size_t NumUnclippedDescendants(LayerImpl* layer) {
|
| return layer->test_properties()->num_unclipped_descendants;
|
| }
|
|
|
| +static inline const FilterOperations& Filters(Layer* layer) {
|
| + return layer->filters();
|
| +}
|
| +
|
| +static inline const FilterOperations& Filters(LayerImpl* layer) {
|
| + return layer->test_properties()->filters;
|
| +}
|
| +
|
| static Layer* MaskLayer(Layer* layer) {
|
| return layer->mask_layer();
|
| }
|
| @@ -429,10 +437,15 @@ void AddClipNodeIfNeeded(const DataForRecursion<LayerType>& data_from_ancestor,
|
| node.layer_clipping_uses_only_local_clip = false;
|
| }
|
|
|
| - if (layer_clips_subtree)
|
| + if (layer_clips_subtree) {
|
| node.clip_type = ClipNode::ClipType::APPLIES_LOCAL_CLIP;
|
| - else
|
| + } else if (Filters(layer).HasFilterThatMovesPixels()) {
|
| + node.clip_type = ClipNode::ClipType::EXPANDS_CLIP;
|
| + node.clip_expander =
|
| + ClipExpander::CreateForFilter(layer->effect_tree_index());
|
| + } else {
|
| node.clip_type = ClipNode::ClipType::NONE;
|
| + }
|
| node.resets_clip = has_unclipped_surface;
|
| node.target_is_clipped = data_for_children->target_is_clipped;
|
| node.layers_are_clipped = layers_are_clipped;
|
| @@ -800,10 +813,6 @@ static inline SkXfermode::Mode BlendMode(LayerImpl* layer) {
|
| return layer->test_properties()->blend_mode;
|
| }
|
|
|
| -static inline const FilterOperations& Filters(Layer* layer) {
|
| - return layer->filters();
|
| -}
|
| -
|
| static inline const gfx::PointF FiltersOrigin(Layer* layer) {
|
| return layer->filters_origin();
|
| }
|
| @@ -812,10 +821,6 @@ static inline const gfx::PointF FiltersOrigin(LayerImpl* layer) {
|
| return layer->test_properties()->filters_origin;
|
| }
|
|
|
| -static inline const FilterOperations& Filters(LayerImpl* layer) {
|
| - return layer->test_properties()->filters;
|
| -}
|
| -
|
| static inline const FilterOperations& BackgroundFilters(Layer* layer) {
|
| return layer->background_filters();
|
| }
|
|
|