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

Unified Diff: cc/trees/draw_property_utils.cc

Issue 2225973003: cc: Remove usage of ComputeVisibleRects on main thread (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Project rects back to layer space after clipped by viewport. Created 4 years, 4 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 f41e2effc6134bd64c74c6ca6b8ba10048fd06e2..44b5fa4b79fb729710ad770ba385bfa4636e2704 100644
--- a/cc/trees/draw_property_utils.cc
+++ b/cc/trees/draw_property_utils.cc
@@ -85,8 +85,7 @@ static const EffectNode* ContentsTargetEffectNode(
: effect_tree.Node(effect_node->target_id);
}
-template <typename LayerType>
-bool ComputeClipRectInTargetSpace(const LayerType* layer,
+bool ComputeClipRectInTargetSpace(const LayerImpl* layer,
const ClipNode* clip_node,
const PropertyTrees* property_trees,
int target_node_id,
@@ -352,16 +351,6 @@ void CalculateClipRects(
}
}
-bool GetLayerClipRect(const scoped_refptr<Layer> layer,
- const ClipNode* clip_node,
- const PropertyTrees* property_trees,
- int target_node_id,
- gfx::RectF* clip_rect_in_target_space) {
- 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 PropertyTrees* property_trees,
@@ -373,11 +362,9 @@ bool GetLayerClipRect(const LayerImpl* layer,
->ancestors_are_invertible;
}
-template <typename LayerType>
-void CalculateVisibleRects(
- const typename LayerType::LayerListType& visible_layer_list,
- const PropertyTrees* property_trees,
- bool non_root_surfaces_enabled) {
+void CalculateVisibleRects(const LayerImplList& visible_layer_list,
+ 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;
@@ -565,6 +552,22 @@ static int TransformTreeIndexForBackfaceVisibility(LayerType* layer,
return layer->id() == node->owner_id ? tree.parent(node)->id : node->id;
}
+static bool IsTargetSpaceTransformBackFaceVisible(Layer* layer,
+ int transform_tree_index,
+ const TransformTree& tree) {
+ // We do not skip back face invisible layers on main thread as target space
+ // transform will not be available here.
+ return false;
+}
+
+static bool IsTargetSpaceTransformBackFaceVisible(LayerImpl* layer,
+ int transform_tree_index,
+ const TransformTree& tree) {
+ return tree
+ .ToTarget(transform_tree_index, layer->render_target_effect_tree_index())
+ .IsBackFaceVisible();
+}
+
template <typename LayerType>
static bool IsLayerBackFaceVisible(LayerType* layer,
int transform_tree_index,
@@ -572,9 +575,8 @@ 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,
- layer->render_target_effect_tree_index())
- .IsBackFaceVisible();
+ : IsTargetSpaceTransformBackFaceVisible(
+ layer, transform_tree_index, tree);
}
static inline bool TransformToScreenIsKnown(Layer* layer,
@@ -1101,8 +1103,8 @@ static void ComputeVisibleRectsInternal(
property_trees->effect_tree, visible_layer_list);
CalculateClipRects<LayerImpl>(*visible_layer_list, property_trees,
can_render_to_separate_surface);
- CalculateVisibleRects<LayerImpl>(*visible_layer_list, property_trees,
- can_render_to_separate_surface);
+ CalculateVisibleRects(*visible_layer_list, property_trees,
+ can_render_to_separate_surface);
}
void UpdatePropertyTrees(PropertyTrees* property_trees,
@@ -1123,13 +1125,6 @@ void UpdatePropertyTrees(PropertyTrees* property_trees,
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,
- can_render_to_separate_surface);
-}
-
void BuildPropertyTreesAndComputeVisibleRects(
LayerImpl* root_layer,
const LayerImpl* page_scale_layer,

Powered by Google App Engine
This is Rietveld 408576698