Index: cc/trees/draw_property_utils.cc |
diff --git a/cc/trees/draw_property_utils.cc b/cc/trees/draw_property_utils.cc |
index 77f21fd184d19b3581bf10fce1f9a7969123d034..366fafc6df72640bd27cca9bab90176a8eecf8d6 100644 |
--- a/cc/trees/draw_property_utils.cc |
+++ b/cc/trees/draw_property_utils.cc |
@@ -82,26 +82,28 @@ static const EffectNode* ContentsTargetEffectNode( |
template <typename LayerType> |
bool ComputeClipRectInTargetSpace(const LayerType* layer, |
const ClipNode* clip_node, |
- const TransformTree& transform_tree, |
- const EffectTree& effect_tree, |
+ const PropertyTrees* property_trees, |
int target_node_id, |
gfx::RectF* clip_rect_in_target_space) { |
DCHECK(layer->clip_tree_index() == clip_node->id); |
DCHECK(clip_node->target_transform_id != target_node_id); |
+ const EffectTree& effect_tree = property_trees->effect_tree; |
+ const EffectNode* target_effect_node = |
+ ContentsTargetEffectNode(layer->effect_tree_index(), effect_tree); |
gfx::Transform clip_to_target; |
if (clip_node->target_transform_id > target_node_id) { |
// In this case, layer has a scroll parent. We need to keep the scale |
// at the layer's target but remove the scale at the scroll parent's |
// target. |
- if (transform_tree.ComputeTransform(clip_node->target_transform_id, |
- target_node_id, &clip_to_target)) { |
+ if (property_trees->ComputeTransformToTarget(clip_node->target_transform_id, |
+ target_effect_node->id, |
+ &clip_to_target)) { |
// We don't have to apply surface contents scale when target is root. |
if (target_node_id != 0) { |
- const EffectNode* target_effect_node = |
- ContentsTargetEffectNode(layer->effect_tree_index(), effect_tree); |
PostConcatSurfaceContentsScale(target_effect_node, &clip_to_target); |
#if DCHECK_IS_ON() |
+ const TransformTree& transform_tree = property_trees->transform_tree; |
VerifySurfaceContentsScalesMatch(layer->effect_tree_index(), |
target_node_id, effect_tree, |
transform_tree); |
@@ -112,6 +114,7 @@ bool ComputeClipRectInTargetSpace(const LayerType* layer, |
effect_tree.Node(clip_node->target_effect_id); |
ConcatInverseSurfaceContentsScale(source_node, &clip_to_target); |
#if DCHECK_IS_ON() |
+ const TransformTree& transform_tree = property_trees->transform_tree; |
VerifySurfaceContentsScalesMatch(clip_node->target_effect_id, |
clip_node->target_transform_id, |
effect_tree, transform_tree); |
@@ -122,8 +125,9 @@ bool ComputeClipRectInTargetSpace(const LayerType* layer, |
return false; |
} |
} else { |
- if (transform_tree.ComputeTransform(clip_node->target_transform_id, |
- target_node_id, &clip_to_target)) { |
+ if (property_trees->ComputeTransformToTarget(clip_node->target_transform_id, |
+ target_effect_node->id, |
+ &clip_to_target)) { |
*clip_rect_in_target_space = MathUtil::ProjectClippedRect( |
clip_to_target, clip_node->clip_in_target_space); |
} else { |
@@ -140,11 +144,12 @@ struct ConditionalClip { |
static ConditionalClip ComputeTargetRectInLocalSpace( |
gfx::RectF rect, |
- const TransformTree& transform_tree, |
- const EffectTree& effect_tree, |
+ const PropertyTrees* property_trees, |
int current_transform_id, |
int target_transform_id, |
const int current_effect_id) { |
+ const TransformTree& transform_tree = property_trees->transform_tree; |
+ const EffectTree& effect_tree = property_trees->effect_tree; |
gfx::Transform current_to_target; |
bool success = transform_tree.ComputeTransform( |
current_transform_id, target_transform_id, ¤t_to_target); |
@@ -164,21 +169,22 @@ static ConditionalClip ComputeTargetRectInLocalSpace( |
static ConditionalClip ComputeLocalRectInTargetSpace( |
gfx::RectF rect, |
- const TransformTree& transform_tree, |
- const EffectTree& effect_tree, |
+ const PropertyTrees* property_trees, |
int current_transform_id, |
int target_transform_id, |
int target_effect_id) { |
gfx::Transform current_to_target; |
- if (!transform_tree.ComputeTransform(current_transform_id, |
- target_transform_id, ¤t_to_target)) |
+ if (!property_trees->ComputeTransformToTarget( |
+ current_transform_id, target_effect_id, ¤t_to_target)) |
// If transform is not invertible, cannot apply clip. |
return ConditionalClip{false, gfx::RectF()}; |
// We don't have to apply surface contents scale when target is root. |
if (target_transform_id != 0) { |
+ const EffectTree& effect_tree = property_trees->effect_tree; |
const EffectNode* target_effect_node = effect_tree.Node(target_effect_id); |
PostConcatSurfaceContentsScale(target_effect_node, ¤t_to_target); |
#if DCHECK_IS_ON() |
+ const TransformTree& transform_tree = property_trees->transform_tree; |
VerifySurfaceContentsScalesMatch(target_effect_id, target_transform_id, |
effect_tree, transform_tree); |
#endif |
@@ -193,15 +199,15 @@ static ConditionalClip ComputeLocalRectInTargetSpace( |
} |
static ConditionalClip ComputeCurrentClip(const ClipNode* clip_node, |
- const TransformTree& transform_tree, |
- const EffectTree& effect_tree, |
+ const PropertyTrees* property_trees, |
int target_transform_id, |
int target_effect_id) { |
if (clip_node->transform_id != target_transform_id) |
- return ComputeLocalRectInTargetSpace(clip_node->clip, transform_tree, |
- effect_tree, clip_node->transform_id, |
+ return ComputeLocalRectInTargetSpace(clip_node->clip, property_trees, |
+ clip_node->transform_id, |
target_transform_id, target_effect_id); |
+ const EffectTree& effect_tree = property_trees->effect_tree; |
gfx::RectF current_clip = clip_node->clip; |
gfx::Vector2dF surface_contents_scale = |
effect_tree.Node(target_effect_id)->surface_contents_scale; |
@@ -211,11 +217,12 @@ static ConditionalClip ComputeCurrentClip(const ClipNode* clip_node, |
} |
static ConditionalClip ComputeAccumulatedClip( |
- const ClipTree& clip_tree, |
+ const PropertyTrees* property_trees, |
int local_clip_id, |
- const EffectTree& effect_tree, |
- int target_id, |
- const TransformTree& transform_tree) { |
+ int target_id) { |
+ const ClipTree& clip_tree = property_trees->clip_tree; |
+ const EffectTree& effect_tree = property_trees->effect_tree; |
+ |
const ClipNode* clip_node = clip_tree.Node(local_clip_id); |
const EffectNode* target_node = effect_tree.Node(target_id); |
int target_transform_id = target_node->transform_id; |
@@ -259,7 +266,7 @@ static ConditionalClip ComputeAccumulatedClip( |
return ConditionalClip{false, gfx::RectF()}; |
ConditionalClip current_clip = ComputeCurrentClip( |
- clip_node, transform_tree, effect_tree, target_transform_id, target_id); |
+ clip_node, property_trees, target_transform_id, target_id); |
is_clipped = current_clip.is_clipped; |
gfx::RectF accumulated_clip = current_clip.clip_rect; |
@@ -270,7 +277,7 @@ static ConditionalClip ComputeAccumulatedClip( |
continue; |
} |
ConditionalClip current_clip = ComputeCurrentClip( |
- clip_node, transform_tree, effect_tree, target_transform_id, target_id); |
+ clip_node, property_trees, target_transform_id, target_id); |
// If transform is not invertible, no clip will be applied. |
if (!current_clip.is_clipped) |
@@ -288,10 +295,9 @@ static ConditionalClip ComputeAccumulatedClip( |
template <typename LayerType> |
void CalculateClipRects( |
const typename LayerType::LayerListType& visible_layer_list, |
- const ClipTree& clip_tree, |
- const TransformTree& transform_tree, |
- const EffectTree& effect_tree, |
+ const PropertyTrees* property_trees, |
bool non_root_surfaces_enabled) { |
+ const ClipTree& clip_tree = property_trees->clip_tree; |
for (auto& layer : visible_layer_list) { |
const ClipNode* clip_node = clip_tree.Node(layer->clip_tree_index()); |
if (!non_root_surfaces_enabled) { |
@@ -306,6 +312,7 @@ void CalculateClipRects( |
!clip_node->layers_are_clipped && !clip_node->target_is_clipped; |
if (!fully_visible) { |
+ const TransformTree& transform_tree = property_trees->transform_tree; |
const TransformNode* transform_node = |
transform_tree.Node(layer->transform_tree_index()); |
int target_node_id = transform_tree.ContentTargetId(transform_node->id); |
@@ -324,8 +331,8 @@ void CalculateClipRects( |
continue; |
// Compute the clip rect in target space and store it. |
- if (!ComputeClipRectInTargetSpace(layer, clip_node, transform_tree, |
- effect_tree, target_node_id, |
+ if (!ComputeClipRectInTargetSpace(layer, clip_node, property_trees, |
+ target_node_id, |
&clip_rect_in_target_space)) |
continue; |
} |
@@ -341,33 +348,33 @@ void CalculateClipRects( |
bool GetLayerClipRect(const scoped_refptr<Layer> layer, |
const ClipNode* clip_node, |
- const TransformTree& transform_tree, |
- const EffectTree& effect_tree, |
+ const PropertyTrees* property_trees, |
int target_node_id, |
gfx::RectF* clip_rect_in_target_space) { |
- return ComputeClipRectInTargetSpace(layer.get(), clip_node, transform_tree, |
- effect_tree, target_node_id, |
+ return ComputeClipRectInTargetSpace(layer.get(), clip_node, property_trees, |
+ target_node_id, |
clip_rect_in_target_space); |
} |
bool GetLayerClipRect(const LayerImpl* layer, |
const ClipNode* clip_node, |
- const TransformTree& transform_tree, |
- const EffectTree& effect_tree, |
+ const PropertyTrees* property_trees, |
int target_node_id, |
gfx::RectF* clip_rect_in_target_space) { |
// This is equivalent of calling ComputeClipRectInTargetSpace. |
*clip_rect_in_target_space = gfx::RectF(layer->clip_rect()); |
- return transform_tree.Node(target_node_id)->ancestors_are_invertible; |
+ return property_trees->transform_tree.Node(target_node_id) |
+ ->ancestors_are_invertible; |
} |
template <typename LayerType> |
void CalculateVisibleRects( |
const typename LayerType::LayerListType& visible_layer_list, |
- const ClipTree& clip_tree, |
- const TransformTree& transform_tree, |
- const EffectTree& effect_tree, |
+ const PropertyTrees* property_trees, |
bool non_root_surfaces_enabled) { |
+ const EffectTree& effect_tree = property_trees->effect_tree; |
+ const TransformTree& transform_tree = property_trees->transform_tree; |
+ const ClipTree& clip_tree = property_trees->clip_tree; |
for (auto& layer : visible_layer_list) { |
gfx::Size layer_bounds = layer->bounds(); |
@@ -375,9 +382,9 @@ void CalculateVisibleRects( |
effect_tree.ClosestAncestorWithCopyRequest(layer->effect_tree_index()); |
if (effect_ancestor_with_copy_request > 1) { |
// Non root copy request. |
- ConditionalClip accumulated_clip_rect = ComputeAccumulatedClip( |
- clip_tree, layer->clip_tree_index(), effect_tree, |
- effect_ancestor_with_copy_request, transform_tree); |
+ ConditionalClip accumulated_clip_rect = |
+ ComputeAccumulatedClip(property_trees, layer->clip_tree_index(), |
+ effect_ancestor_with_copy_request); |
if (!accumulated_clip_rect.is_clipped) { |
layer->set_visible_layer_rect(gfx::Rect(layer_bounds)); |
continue; |
@@ -389,7 +396,7 @@ void CalculateVisibleRects( |
const EffectNode* copy_request_effect_node = |
effect_tree.Node(effect_ancestor_with_copy_request); |
ConditionalClip clip_in_layer_space = ComputeTargetRectInLocalSpace( |
- accumulated_clip_in_copy_request_space, transform_tree, effect_tree, |
+ accumulated_clip_in_copy_request_space, property_trees, |
copy_request_effect_node->transform_id, layer->transform_tree_index(), |
copy_request_effect_node->id); |
@@ -463,8 +470,7 @@ void CalculateVisibleRects( |
// the combined clip has even the clip parent's target's clip baked into |
// it and as our target is different, we don't want to use it in our |
// visible rect computation. |
- if (!GetLayerClipRect(layer, clip_node, transform_tree, effect_tree, |
- target_node_id, |
+ if (!GetLayerClipRect(layer, clip_node, property_trees, target_node_id, |
&combined_clip_rect_in_target_space)) { |
layer->set_visible_layer_rect(gfx::Rect(layer_bounds)); |
continue; |
@@ -740,10 +746,9 @@ void ConcatInverseSurfaceContentsScale(const EffectNode* effect_node, |
1.0 / effect_node->surface_contents_scale.y()); |
} |
-void ComputeClips(ClipTree* clip_tree, |
- const TransformTree& transform_tree, |
- const EffectTree& effect_tree, |
+void ComputeClips(PropertyTrees* property_trees, |
bool non_root_surfaces_enabled) { |
+ ClipTree* clip_tree = &property_trees->clip_tree; |
if (!clip_tree->needs_update()) |
return; |
for (int i = 1; i < static_cast<int>(clip_tree->size()); ++i) { |
@@ -755,6 +760,8 @@ void ComputeClips(ClipTree* clip_tree, |
clip_node->combined_clip_in_target_space = clip_node->clip; |
continue; |
} |
+ const TransformTree& transform_tree = property_trees->transform_tree; |
+ const EffectTree& effect_tree = property_trees->effect_tree; |
const TransformNode* transform_node = |
transform_tree.Node(clip_node->transform_id); |
ClipNode* parent_clip_node = clip_tree->parent(clip_node); |
@@ -781,8 +788,8 @@ void ComputeClips(ClipTree* clip_tree, |
if (parent_target_transform_node && |
parent_target_transform_node->id != clip_node->target_transform_id && |
non_root_surfaces_enabled) { |
- success &= transform_tree.ComputeTransform( |
- parent_target_transform_node->id, clip_node->target_transform_id, |
+ success &= property_trees->ComputeTransformToTarget( |
+ parent_target_transform_node->id, clip_node->target_effect_id, |
&parent_to_current); |
// We don't have to apply surface contents scale when target is root. |
if (clip_node->target_transform_id != 0) { |
@@ -862,9 +869,8 @@ void ComputeClips(ClipTree* clip_tree, |
clip_node->target_transform_id) { |
source_to_target = transform_tree.ToTarget(clip_node->transform_id); |
} else { |
- success = transform_tree.ComputeTransform( |
- transform_node->id, clip_node->target_transform_id, |
- &source_to_target); |
+ success = property_trees->ComputeTransformToTarget( |
+ transform_node->id, clip_node->target_effect_id, &source_to_target); |
// We don't have to apply surface contents scale when target is root. |
if (clip_node->target_transform_id != 0) { |
const EffectNode* target_effect_node = |
@@ -943,7 +949,6 @@ void ComputeEffects(EffectTree* effect_tree) { |
static void ComputeClipsWithEffectTree(PropertyTrees* property_trees) { |
EffectTree* effect_tree = &property_trees->effect_tree; |
const ClipTree* clip_tree = &property_trees->clip_tree; |
- const TransformTree* transform_tree = &property_trees->transform_tree; |
EffectNode* root_effect_node = effect_tree->Node(1); |
const RenderSurfaceImpl* root_render_surface = |
root_effect_node->render_surface; |
@@ -957,9 +962,8 @@ static void ComputeClipsWithEffectTree(PropertyTrees* property_trees) { |
for (int i = 2; i < static_cast<int>(effect_tree->size()); ++i) { |
EffectNode* effect_node = effect_tree->Node(i); |
const EffectNode* target_node = effect_tree->Node(effect_node->target_id); |
- ConditionalClip accumulated_clip_rect = |
- ComputeAccumulatedClip(*clip_tree, effect_node->clip_id, *effect_tree, |
- target_node->id, *transform_tree); |
+ ConditionalClip accumulated_clip_rect = ComputeAccumulatedClip( |
+ property_trees, effect_node->clip_id, target_node->id); |
gfx::RectF accumulated_clip = accumulated_clip_rect.clip_rect; |
const RenderSurfaceImpl* render_surface = effect_node->render_surface; |
if (render_surface && render_surface->is_clipped()) { |
@@ -977,7 +981,6 @@ static void ComputeLayerClipRect(const PropertyTrees* property_trees, |
const LayerImpl* layer) { |
const EffectTree* effect_tree = &property_trees->effect_tree; |
const ClipTree* clip_tree = &property_trees->clip_tree; |
- const TransformTree* transform_tree = &property_trees->transform_tree; |
const EffectNode* effect_node = effect_tree->Node(layer->effect_tree_index()); |
const EffectNode* target_node = |
effect_node->has_render_surface |
@@ -989,9 +992,8 @@ static void ComputeLayerClipRect(const PropertyTrees* property_trees, |
target_node = effect_tree->Node(1); |
} |
- ConditionalClip accumulated_clip_rect = |
- ComputeAccumulatedClip(*clip_tree, layer->clip_tree_index(), *effect_tree, |
- target_node->id, *transform_tree); |
+ ConditionalClip accumulated_clip_rect = ComputeAccumulatedClip( |
+ property_trees, layer->clip_tree_index(), target_node->id); |
gfx::RectF accumulated_clip = accumulated_clip_rect.clip_rect; |
@@ -1025,13 +1027,13 @@ static void VerifyDrawTransformsMatch(LayerImpl* layer, |
const int source_id = layer->transform_tree_index(); |
int destination_id = FindTargetTransformTreeIndexFromEffectTree( |
property_trees->effect_tree, layer->effect_tree_index()); |
+ const EffectNode* target_effect_node = ContentsTargetEffectNode( |
+ layer->effect_tree_index(), property_trees->effect_tree); |
gfx::Transform draw_transform; |
- property_trees->transform_tree.ComputeTransform(source_id, destination_id, |
- &draw_transform); |
+ property_trees->ComputeTransformToTarget(source_id, target_effect_node->id, |
+ &draw_transform); |
// We don't have to apply surface contents scale when target is root. |
if (destination_id != 0) { |
- const EffectNode* target_effect_node = ContentsTargetEffectNode( |
- layer->effect_tree_index(), property_trees->effect_tree); |
PostConcatSurfaceContentsScale(target_effect_node, &draw_transform); |
#if DCHECK_IS_ON() |
VerifySurfaceContentsScalesMatch(layer->effect_tree_index(), destination_id, |
@@ -1074,20 +1076,15 @@ static void ComputeVisibleRectsInternal( |
// Computation of clips uses surface contents scale which is updated while |
// computing effects. So, ComputeEffects should be before ComputeClips. |
ComputeEffects(&property_trees->effect_tree); |
- ComputeClips(&property_trees->clip_tree, property_trees->transform_tree, |
- property_trees->effect_tree, can_render_to_separate_surface); |
+ ComputeClips(property_trees, can_render_to_separate_surface); |
FindLayersThatNeedUpdates(root_layer->layer_tree_impl(), |
property_trees->transform_tree, |
property_trees->effect_tree, visible_layer_list); |
- CalculateClipRects<LayerImpl>(*visible_layer_list, property_trees->clip_tree, |
- property_trees->transform_tree, |
- property_trees->effect_tree, |
+ CalculateClipRects<LayerImpl>(*visible_layer_list, property_trees, |
can_render_to_separate_surface); |
- CalculateVisibleRects<LayerImpl>( |
- *visible_layer_list, property_trees->clip_tree, |
- property_trees->transform_tree, property_trees->effect_tree, |
- can_render_to_separate_surface); |
+ CalculateVisibleRects<LayerImpl>(*visible_layer_list, property_trees, |
+ can_render_to_separate_surface); |
} |
void UpdatePropertyTrees(PropertyTrees* property_trees, |
@@ -1105,16 +1102,13 @@ void UpdatePropertyTrees(PropertyTrees* property_trees, |
// Computation of clips uses surface contents scale which is updated while |
// computing effects. So, ComputeEffects should be before ComputeClips. |
ComputeEffects(&property_trees->effect_tree); |
- ComputeClips(&property_trees->clip_tree, property_trees->transform_tree, |
- property_trees->effect_tree, can_render_to_separate_surface); |
+ ComputeClips(property_trees, can_render_to_separate_surface); |
} |
void ComputeVisibleRectsForTesting(PropertyTrees* property_trees, |
bool can_render_to_separate_surface, |
LayerList* update_layer_list) { |
- CalculateVisibleRects<Layer>(*update_layer_list, property_trees->clip_tree, |
- property_trees->transform_tree, |
- property_trees->effect_tree, |
+ CalculateVisibleRects<Layer>(*update_layer_list, property_trees, |
can_render_to_separate_surface); |
} |
@@ -1218,9 +1212,10 @@ gfx::Transform DrawTransform(const LayerImpl* layer, |
return xform; |
} |
-static void SetSurfaceDrawTransform(const TransformTree& transform_tree, |
- const EffectTree& effect_tree, |
+static void SetSurfaceDrawTransform(const PropertyTrees* property_trees, |
RenderSurfaceImpl* render_surface) { |
+ const TransformTree& transform_tree = property_trees->transform_tree; |
+ const EffectTree& effect_tree = property_trees->effect_tree; |
const TransformNode* transform_node = |
transform_tree.Node(render_surface->TransformTreeIndex()); |
const EffectNode* effect_node = |
@@ -1234,12 +1229,12 @@ static void SetSurfaceDrawTransform(const TransformTree& transform_tree, |
gfx::Transform render_surface_transform; |
const TransformNode* target_transform_node = |
transform_tree.Node(transform_tree.TargetId(transform_node->id)); |
- transform_tree.ComputeTransform(transform_node->id, target_transform_node->id, |
- &render_surface_transform); |
+ const EffectNode* target_effect_node = |
+ effect_tree.Node(effect_node->target_id); |
+ property_trees->ComputeTransformToTarget( |
+ transform_node->id, target_effect_node->id, &render_surface_transform); |
// We don't have to apply surface contents scale when target is root. |
if (target_transform_node->id != 0) { |
- const EffectNode* target_effect_node = |
- effect_tree.Node(effect_node->target_id); |
PostConcatSurfaceContentsScale(target_effect_node, |
&render_surface_transform); |
#if DCHECK_IS_ON() |
@@ -1266,14 +1261,15 @@ static void SetSurfaceIsClipped(const ClipNode* clip_node, |
} |
static void SetSurfaceClipRect(const ClipNode* parent_clip_node, |
- const TransformTree& transform_tree, |
- const EffectTree& effect_tree, |
+ const PropertyTrees* property_trees, |
RenderSurfaceImpl* render_surface) { |
if (!render_surface->is_clipped()) { |
render_surface->SetClipRect(gfx::Rect()); |
return; |
} |
+ const EffectTree& effect_tree = property_trees->effect_tree; |
+ const TransformTree& transform_tree = property_trees->transform_tree; |
const TransformNode* transform_node = |
transform_tree.Node(render_surface->TransformTreeIndex()); |
if (transform_tree.TargetId(transform_node->id) == |
@@ -1287,9 +1283,11 @@ static void SetSurfaceClipRect(const ClipNode* parent_clip_node, |
// the parent clip node's clip rect is in clip parent's target space and not |
// our target space. We need to transform it to our target space. |
gfx::Transform clip_parent_target_to_target; |
- const bool success = transform_tree.ComputeTransform( |
- parent_clip_node->target_transform_id, |
- transform_tree.TargetId(transform_node->id), |
+ const EffectNode* effect_node = |
+ effect_tree.Node(render_surface->EffectTreeIndex()); |
+ int target_effect_id = effect_node->target_id; |
+ const bool success = property_trees->ComputeTransformToTarget( |
+ parent_clip_node->target_transform_id, target_effect_id, |
&clip_parent_target_to_target); |
if (!success) { |
@@ -1381,18 +1379,19 @@ static gfx::Rect LayerDrawableContentRect( |
static gfx::Transform ReplicaToSurfaceTransform( |
const RenderSurfaceImpl* render_surface, |
- const TransformTree& transform_tree, |
- const EffectTree& effect_tree) { |
+ const PropertyTrees* property_trees) { |
gfx::Transform replica_to_surface; |
if (!render_surface->HasReplica()) |
return replica_to_surface; |
const LayerImpl* replica_layer = render_surface->ReplicaLayer(); |
+ const EffectTree& effect_tree = property_trees->effect_tree; |
const EffectNode* surface_effect_node = |
effect_tree.Node(render_surface->EffectTreeIndex()); |
if (render_surface->TransformTreeIndex() != 0) { |
replica_to_surface.Scale(surface_effect_node->surface_contents_scale.x(), |
surface_effect_node->surface_contents_scale.y()); |
#if DCHECK_IS_ON() |
+ const TransformTree& transform_tree = property_trees->transform_tree; |
VerifySurfaceContentsScalesMatch(render_surface->EffectTreeIndex(), |
render_surface->TransformTreeIndex(), |
effect_tree, transform_tree); |
@@ -1401,9 +1400,9 @@ static gfx::Transform ReplicaToSurfaceTransform( |
replica_to_surface.Translate(replica_layer->offset_to_transform_parent().x(), |
replica_layer->offset_to_transform_parent().y()); |
gfx::Transform replica_transform_node_to_surface; |
- transform_tree.ComputeTransform(replica_layer->transform_tree_index(), |
- render_surface->TransformTreeIndex(), |
- &replica_transform_node_to_surface); |
+ property_trees->ComputeTransformToTarget( |
+ replica_layer->transform_tree_index(), render_surface->EffectTreeIndex(), |
+ &replica_transform_node_to_surface); |
replica_to_surface.PreconcatTransform(replica_transform_node_to_surface); |
if (surface_effect_node->surface_contents_scale.x() != 0 && |
surface_effect_node->surface_contents_scale.y() != 0) { |
@@ -1467,17 +1466,15 @@ void ComputeSurfaceDrawProperties(const PropertyTrees* property_trees, |
SetSurfaceIsClipped(clip_node, render_surface); |
SetSurfaceDrawOpacity(property_trees->effect_tree, render_surface); |
- SetSurfaceDrawTransform(property_trees->transform_tree, |
- property_trees->effect_tree, render_surface); |
+ SetSurfaceDrawTransform(property_trees, render_surface); |
render_surface->SetScreenSpaceTransform( |
property_trees->ToScreenSpaceTransformWithoutSurfaceContentsScale( |
render_surface->TransformTreeIndex(), |
render_surface->EffectTreeIndex())); |
if (render_surface->HasReplica()) { |
- gfx::Transform replica_to_surface = ReplicaToSurfaceTransform( |
- render_surface, property_trees->transform_tree, |
- property_trees->effect_tree); |
+ gfx::Transform replica_to_surface = |
+ ReplicaToSurfaceTransform(render_surface, property_trees); |
render_surface->SetReplicaDrawTransform(render_surface->draw_transform() * |
replica_to_surface); |
render_surface->SetReplicaScreenSpaceTransform( |
@@ -1488,8 +1485,7 @@ void ComputeSurfaceDrawProperties(const PropertyTrees* property_trees, |
} |
SetSurfaceClipRect(property_trees->clip_tree.parent(clip_node), |
- property_trees->transform_tree, |
- property_trees->effect_tree, render_surface); |
+ property_trees, render_surface); |
} |
#if DCHECK_IS_ON() |