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

Side by Side Diff: cc/trees/property_tree_builder.cc

Issue 2490273004: Move cc::ClipNode::target_is_clipped to cc::EffectNode (Closed)
Patch Set: one more todo comment Created 4 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « cc/trees/effect_node.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/property_tree_builder.h" 5 #include "cc/trees/property_tree_builder.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <map> 9 #include <map>
10 #include <set> 10 #include <set>
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 const LayerType* page_scale_layer; 45 const LayerType* page_scale_layer;
46 const LayerType* inner_viewport_scroll_layer; 46 const LayerType* inner_viewport_scroll_layer;
47 const LayerType* outer_viewport_scroll_layer; 47 const LayerType* outer_viewport_scroll_layer;
48 const LayerType* overscroll_elasticity_layer; 48 const LayerType* overscroll_elasticity_layer;
49 gfx::Vector2dF elastic_overscroll; 49 gfx::Vector2dF elastic_overscroll;
50 float page_scale_factor; 50 float page_scale_factor;
51 bool in_subtree_of_page_scale_layer; 51 bool in_subtree_of_page_scale_layer;
52 bool affected_by_inner_viewport_bounds_delta; 52 bool affected_by_inner_viewport_bounds_delta;
53 bool affected_by_outer_viewport_bounds_delta; 53 bool affected_by_outer_viewport_bounds_delta;
54 bool should_flatten; 54 bool should_flatten;
55 bool target_is_clipped;
56 bool is_hidden; 55 bool is_hidden;
57 uint32_t main_thread_scrolling_reasons; 56 uint32_t main_thread_scrolling_reasons;
58 bool scroll_tree_parent_created_by_uninheritable_criteria; 57 bool scroll_tree_parent_created_by_uninheritable_criteria;
59 const gfx::Transform* device_transform; 58 const gfx::Transform* device_transform;
60 gfx::Transform compound_transform_since_render_target; 59 gfx::Transform compound_transform_since_render_target;
61 bool axis_align_since_render_target; 60 bool axis_align_since_render_target;
62 SkColor safe_opaque_background_color; 61 SkColor safe_opaque_background_color;
63 }; 62 };
64 63
65 template <typename LayerType> 64 template <typename LayerType>
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 // When there are no ancestor clips that need to be applied to a render 366 // When there are no ancestor clips that need to be applied to a render
368 // surface, we reset clipping state. The surface might contribute a clip 367 // surface, we reset clipping state. The surface might contribute a clip
369 // of its own, but clips from ancestor nodes don't need to be considered 368 // of its own, but clips from ancestor nodes don't need to be considered
370 // when computing clip rects or visibility. 369 // when computing clip rects or visibility.
371 has_unclipped_surface = true; 370 has_unclipped_surface = true;
372 DCHECK_NE(parent->clip_type, ClipNode::ClipType::APPLIES_LOCAL_CLIP); 371 DCHECK_NE(parent->clip_type, ClipNode::ClipType::APPLIES_LOCAL_CLIP);
373 } 372 }
374 // A surface with unclipped descendants cannot be clipped by its ancestor 373 // A surface with unclipped descendants cannot be clipped by its ancestor
375 // clip at draw time since the unclipped descendants aren't affected by the 374 // clip at draw time since the unclipped descendants aren't affected by the
376 // ancestor clip. 375 // ancestor clip.
377 data_for_children->target_is_clipped = 376 EffectNode* effect_node =
377 data_for_children->property_trees->effect_tree.Node(
378 data_for_children->render_target);
379 DCHECK(effect_node->owner_id == layer->id());
380 effect_node->surface_is_clipped =
378 ancestor_clips_subtree && !NumUnclippedDescendants(layer); 381 ancestor_clips_subtree && !NumUnclippedDescendants(layer);
379 } else { 382 } else {
380 // Without a new render surface, layer clipping state from ancestors needs 383 // Without a new render surface, layer clipping state from ancestors needs
381 // to continue to propagate. 384 // to continue to propagate.
382 data_for_children->target_is_clipped = data_from_ancestor.target_is_clipped;
383 layers_are_clipped = ancestor_clips_subtree; 385 layers_are_clipped = ancestor_clips_subtree;
384 } 386 }
385 387
386 bool layer_clips_subtree = LayerClipsSubtree(layer); 388 bool layer_clips_subtree = LayerClipsSubtree(layer);
387 if (layer_clips_subtree) 389 if (layer_clips_subtree)
388 layers_are_clipped = true; 390 layers_are_clipped = true;
389 391
390 // Without surfaces, all non-viewport clips have to be applied using layer 392 // Without surfaces, all non-viewport clips have to be applied using layer
391 // clipping. 393 // clipping.
392 bool layers_are_clipped_when_surfaces_disabled = 394 bool layers_are_clipped_when_surfaces_disabled =
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 // Otherwise, we're either unclipped, or exist only in order to apply our 429 // Otherwise, we're either unclipped, or exist only in order to apply our
428 // parent's clips in our space. 430 // parent's clips in our space.
429 node.layer_clipping_uses_only_local_clip = false; 431 node.layer_clipping_uses_only_local_clip = false;
430 } 432 }
431 433
432 if (layer_clips_subtree) 434 if (layer_clips_subtree)
433 node.clip_type = ClipNode::ClipType::APPLIES_LOCAL_CLIP; 435 node.clip_type = ClipNode::ClipType::APPLIES_LOCAL_CLIP;
434 else 436 else
435 node.clip_type = ClipNode::ClipType::NONE; 437 node.clip_type = ClipNode::ClipType::NONE;
436 node.resets_clip = has_unclipped_surface; 438 node.resets_clip = has_unclipped_surface;
437 node.target_is_clipped = data_for_children->target_is_clipped;
438 node.layers_are_clipped = layers_are_clipped; 439 node.layers_are_clipped = layers_are_clipped;
439 node.layers_are_clipped_when_surfaces_disabled = 440 node.layers_are_clipped_when_surfaces_disabled =
440 layers_are_clipped_when_surfaces_disabled; 441 layers_are_clipped_when_surfaces_disabled;
441 442
442 data_for_children->clip_tree_parent = 443 data_for_children->clip_tree_parent =
443 data_for_children->property_trees->clip_tree.Insert(node, parent_id); 444 data_for_children->property_trees->clip_tree.Insert(node, parent_id);
444 data_for_children->property_trees->clip_id_to_index_map[layer->id()] = 445 data_for_children->property_trees->clip_id_to_index_map[layer->id()] =
445 data_for_children->clip_tree_parent; 446 data_for_children->clip_tree_parent;
446 } 447 }
447 448
(...skipping 934 matching lines...) Expand 10 before | Expand all | Expand 10 after
1382 data_for_recursion.page_scale_layer = page_scale_layer; 1383 data_for_recursion.page_scale_layer = page_scale_layer;
1383 data_for_recursion.inner_viewport_scroll_layer = inner_viewport_scroll_layer; 1384 data_for_recursion.inner_viewport_scroll_layer = inner_viewport_scroll_layer;
1384 data_for_recursion.outer_viewport_scroll_layer = outer_viewport_scroll_layer; 1385 data_for_recursion.outer_viewport_scroll_layer = outer_viewport_scroll_layer;
1385 data_for_recursion.overscroll_elasticity_layer = overscroll_elasticity_layer; 1386 data_for_recursion.overscroll_elasticity_layer = overscroll_elasticity_layer;
1386 data_for_recursion.elastic_overscroll = elastic_overscroll; 1387 data_for_recursion.elastic_overscroll = elastic_overscroll;
1387 data_for_recursion.page_scale_factor = page_scale_factor; 1388 data_for_recursion.page_scale_factor = page_scale_factor;
1388 data_for_recursion.in_subtree_of_page_scale_layer = false; 1389 data_for_recursion.in_subtree_of_page_scale_layer = false;
1389 data_for_recursion.affected_by_inner_viewport_bounds_delta = false; 1390 data_for_recursion.affected_by_inner_viewport_bounds_delta = false;
1390 data_for_recursion.affected_by_outer_viewport_bounds_delta = false; 1391 data_for_recursion.affected_by_outer_viewport_bounds_delta = false;
1391 data_for_recursion.should_flatten = false; 1392 data_for_recursion.should_flatten = false;
1392 data_for_recursion.target_is_clipped = false;
1393 data_for_recursion.is_hidden = false; 1393 data_for_recursion.is_hidden = false;
1394 data_for_recursion.main_thread_scrolling_reasons = 1394 data_for_recursion.main_thread_scrolling_reasons =
1395 MainThreadScrollingReason::kNotScrollingOnMain; 1395 MainThreadScrollingReason::kNotScrollingOnMain;
1396 data_for_recursion.scroll_tree_parent_created_by_uninheritable_criteria = 1396 data_for_recursion.scroll_tree_parent_created_by_uninheritable_criteria =
1397 true; 1397 true;
1398 data_for_recursion.device_transform = &device_transform; 1398 data_for_recursion.device_transform = &device_transform;
1399 1399
1400 data_for_recursion.property_trees->clear(); 1400 data_for_recursion.property_trees->clear();
1401 data_for_recursion.compound_transform_since_render_target = gfx::Transform(); 1401 data_for_recursion.compound_transform_since_render_target = gfx::Transform();
1402 data_for_recursion.axis_align_since_render_target = true; 1402 data_for_recursion.axis_align_since_render_target = true;
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
1496 color = SkColorSetA(color, 255); 1496 color = SkColorSetA(color, 255);
1497 BuildPropertyTreesTopLevelInternal( 1497 BuildPropertyTreesTopLevelInternal(
1498 root_layer, page_scale_layer, inner_viewport_scroll_layer, 1498 root_layer, page_scale_layer, inner_viewport_scroll_layer,
1499 outer_viewport_scroll_layer, overscroll_elasticity_layer, 1499 outer_viewport_scroll_layer, overscroll_elasticity_layer,
1500 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, 1500 elastic_overscroll, page_scale_factor, device_scale_factor, viewport,
1501 device_transform, property_trees, color); 1501 device_transform, property_trees, color);
1502 property_trees->ResetCachedData(); 1502 property_trees->ResetCachedData();
1503 } 1503 }
1504 1504
1505 } // namespace cc 1505 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/effect_node.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698