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

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

Issue 2693703010: cc: Remove support for disabling non-root render surfaces. (Closed)
Patch Set: softwaredraw-remove-no-surfaces: rebase Created 3 years, 10 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 unified diff | Download patch
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 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 // to continue to propagate. 393 // to continue to propagate.
394 layers_are_clipped = apply_ancestor_clip; 394 layers_are_clipped = apply_ancestor_clip;
395 } 395 }
396 396
397 bool layer_clips_subtree = LayerClipsSubtree(layer); 397 bool layer_clips_subtree = LayerClipsSubtree(layer);
398 if (layer_clips_subtree) { 398 if (layer_clips_subtree) {
399 layers_are_clipped = true; 399 layers_are_clipped = true;
400 data_for_children->apply_ancestor_clip = true; 400 data_for_children->apply_ancestor_clip = true;
401 } 401 }
402 402
403 // Without surfaces, all non-viewport clips have to be applied using layer
404 // clipping.
405 bool layers_are_clipped_when_surfaces_disabled =
406 layer_clips_subtree || parent->layers_are_clipped_when_surfaces_disabled;
407
408 // Render surface's clip is needed during hit testing. So, we need to create 403 // Render surface's clip is needed during hit testing. So, we need to create
409 // a clip node for every render surface. 404 // a clip node for every render surface.
410 bool requires_node = layer_clips_subtree || created_render_surface; 405 bool requires_node = layer_clips_subtree || created_render_surface;
411 406
412 if (!requires_node) { 407 if (!requires_node) {
413 data_for_children->clip_tree_parent = parent_id; 408 data_for_children->clip_tree_parent = parent_id;
414 DCHECK_EQ(layers_are_clipped, parent->layers_are_clipped); 409 DCHECK_EQ(layers_are_clipped, parent->layers_are_clipped);
415 DCHECK_EQ(layers_are_clipped_when_surfaces_disabled,
416 parent->layers_are_clipped_when_surfaces_disabled);
417 } else { 410 } else {
418 LayerType* transform_parent = data_for_children->transform_tree_parent; 411 LayerType* transform_parent = data_for_children->transform_tree_parent;
419 if (PositionConstraint(layer).is_fixed_position() && 412 if (PositionConstraint(layer).is_fixed_position() &&
420 !created_transform_node) { 413 !created_transform_node) {
421 transform_parent = data_for_children->transform_fixed_parent; 414 transform_parent = data_for_children->transform_fixed_parent;
422 } 415 }
423 ClipNode node; 416 ClipNode node;
424 node.clip = gfx::RectF(gfx::PointF() + layer->offset_to_transform_parent(), 417 node.clip = gfx::RectF(gfx::PointF() + layer->offset_to_transform_parent(),
425 gfx::SizeF(layer->bounds())); 418 gfx::SizeF(layer->bounds()));
426 node.transform_id = transform_parent->transform_tree_index(); 419 node.transform_id = transform_parent->transform_tree_index();
(...skipping 19 matching lines...) Expand all
446 node.clip_type = ClipNode::ClipType::APPLIES_LOCAL_CLIP; 439 node.clip_type = ClipNode::ClipType::APPLIES_LOCAL_CLIP;
447 } else if (Filters(layer).HasFilterThatMovesPixels()) { 440 } else if (Filters(layer).HasFilterThatMovesPixels()) {
448 node.clip_type = ClipNode::ClipType::EXPANDS_CLIP; 441 node.clip_type = ClipNode::ClipType::EXPANDS_CLIP;
449 node.clip_expander = 442 node.clip_expander =
450 base::MakeUnique<ClipExpander>(layer->effect_tree_index()); 443 base::MakeUnique<ClipExpander>(layer->effect_tree_index());
451 } else { 444 } else {
452 node.clip_type = ClipNode::ClipType::NONE; 445 node.clip_type = ClipNode::ClipType::NONE;
453 } 446 }
454 node.resets_clip = has_unclipped_surface; 447 node.resets_clip = has_unclipped_surface;
455 node.layers_are_clipped = layers_are_clipped; 448 node.layers_are_clipped = layers_are_clipped;
456 node.layers_are_clipped_when_surfaces_disabled =
457 layers_are_clipped_when_surfaces_disabled;
458 449
459 data_for_children->clip_tree_parent = 450 data_for_children->clip_tree_parent =
460 data_for_children->property_trees->clip_tree.Insert(node, parent_id); 451 data_for_children->property_trees->clip_tree.Insert(node, parent_id);
461 data_for_children->property_trees 452 data_for_children->property_trees
462 ->layer_id_to_clip_node_index[layer->id()] = 453 ->layer_id_to_clip_node_index[layer->id()] =
463 data_for_children->clip_tree_parent; 454 data_for_children->clip_tree_parent;
464 } 455 }
465 456
466 layer->SetClipTreeIndex(data_for_children->clip_tree_parent); 457 layer->SetClipTreeIndex(data_for_children->clip_tree_parent);
467 } 458 }
(...skipping 1075 matching lines...) Expand 10 before | Expand all | Expand 10 after
1543 color = SkColorSetA(color, 255); 1534 color = SkColorSetA(color, 255);
1544 BuildPropertyTreesTopLevelInternal( 1535 BuildPropertyTreesTopLevelInternal(
1545 root_layer, page_scale_layer, inner_viewport_scroll_layer, 1536 root_layer, page_scale_layer, inner_viewport_scroll_layer,
1546 outer_viewport_scroll_layer, overscroll_elasticity_layer, 1537 outer_viewport_scroll_layer, overscroll_elasticity_layer,
1547 elastic_overscroll, page_scale_factor, device_scale_factor, viewport, 1538 elastic_overscroll, page_scale_factor, device_scale_factor, viewport,
1548 device_transform, property_trees, color); 1539 device_transform, property_trees, color);
1549 property_trees->ResetCachedData(); 1540 property_trees->ResetCachedData();
1550 } 1541 }
1551 1542
1552 } // namespace cc 1543 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/property_tree.cc ('k') | third_party/WebKit/Source/platform/graphics/compositing/PropertyTreeManager.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698