Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1799)

Unified Diff: cc/trees/draw_property_utils.cc

Issue 2166043002: cc: Compute target space transform dynamically (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Verify screen space transform when non_root_surfaces is disabled. Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: cc/trees/draw_property_utils.cc
diff --git a/cc/trees/draw_property_utils.cc b/cc/trees/draw_property_utils.cc
index 9aefcbe3f52e6bab9ccb66d4f818ad7ff4b00f76..ce44107c1367735845fd9863c17f68e31bd9cf59 100644
--- a/cc/trees/draw_property_utils.cc
+++ b/cc/trees/draw_property_utils.cc
@@ -479,8 +479,8 @@ void CalculateVisibleRects(
}
// The clip rect should be intersected with layer rect in target space.
- gfx::Transform content_to_target =
- transform_tree.ToTarget(transform_node->id);
+ gfx::Transform content_to_target = transform_tree.ToTarget(
+ transform_node->id, layer->render_target_effect_tree_index());
content_to_target.Translate(layer->offset_to_transform_parent().x(),
layer->offset_to_transform_parent().y());
gfx::Rect layer_content_rect = gfx::Rect(layer_bounds);
@@ -504,7 +504,8 @@ void CalculateVisibleRects(
gfx::Transform target_to_layer;
if (transform_node->ancestors_are_invertible) {
- target_to_layer = transform_tree.FromTarget(transform_node->id);
+ target_to_layer = transform_tree.FromTarget(
+ transform_node->id, layer->render_target_effect_tree_index());
} else {
bool success = transform_tree.ComputeTransform(
target_node_id, transform_node->id, &target_to_layer);
@@ -559,7 +560,9 @@ static bool IsLayerBackFaceVisible(LayerType* layer,
const TransformNode* node = tree.Node(transform_tree_index);
return layer->use_local_transform_for_backface_visibility()
? node->local.IsBackFaceVisible()
- : tree.ToTarget(transform_tree_index).IsBackFaceVisible();
+ : tree.ToTarget(transform_tree_index,
+ layer->render_target_effect_tree_index())
+ .IsBackFaceVisible();
}
static inline bool TransformToScreenIsKnown(Layer* layer,
@@ -824,7 +827,9 @@ void ComputeClips(ClipTree* clip_tree,
if (clip_node->resets_clip && non_root_surfaces_enabled) {
if (clip_node->applies_local_clip) {
clip_node->clip_in_target_space = MathUtil::MapClippedRect(
- transform_tree.ToTarget(clip_node->transform_id), clip_node->clip);
+ transform_tree.ToTarget(clip_node->transform_id,
+ clip_node->target_effect_id),
+ clip_node->clip);
ResetIfHasNanCoordinate(&clip_node->clip_in_target_space);
clip_node->combined_clip_in_target_space =
gfx::IntersectRects(clip_node->clip_in_target_space,
@@ -860,7 +865,8 @@ void ComputeClips(ClipTree* clip_tree,
source_to_target = transform_tree.ToScreen(clip_node->transform_id);
} else if (transform_tree.ContentTargetId(transform_node->id) ==
clip_node->target_transform_id) {
- source_to_target = transform_tree.ToTarget(clip_node->transform_id);
+ source_to_target = transform_tree.ToTarget(clip_node->transform_id,
+ clip_node->target_effect_id);
} else {
success = transform_tree.ComputeTransform(
transform_node->id, clip_node->target_transform_id,
@@ -1198,7 +1204,8 @@ gfx::Transform DrawTransform(const LayerImpl* layer,
if (!owns_non_root_surface) {
// If you're not the root, or you don't own a surface, you need to apply
// your local offset.
- xform = transform_tree.ToTarget(layer->transform_tree_index());
+ xform = transform_tree.ToTarget(layer->transform_tree_index(),
+ layer->render_target_effect_tree_index());
if (layer->should_flatten_transform_from_property_tree())
xform.FlattenTo2d();
xform.Translate(layer->offset_to_transform_parent().x(),

Powered by Google App Engine
This is Rietveld 408576698