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

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

Issue 2693703010: cc: Remove support for disabling non-root render surfaces. (Closed)
Patch Set: softwaredraw-remove-no-surfaces: rebase Created 3 years, 7 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
« no previous file with comments | « cc/trees/layer_tree_host_common.h ('k') | cc/trees/layer_tree_host_common_perftest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/layer_tree_host_common.h" 5 #include "cc/trees/layer_tree_host_common.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 const gfx::Size& device_viewport_size, 71 const gfx::Size& device_viewport_size,
72 const gfx::Transform& device_transform, 72 const gfx::Transform& device_transform,
73 float device_scale_factor, 73 float device_scale_factor,
74 float page_scale_factor, 74 float page_scale_factor,
75 const LayerImpl* page_scale_layer, 75 const LayerImpl* page_scale_layer,
76 const LayerImpl* inner_viewport_scroll_layer, 76 const LayerImpl* inner_viewport_scroll_layer,
77 const LayerImpl* outer_viewport_scroll_layer, 77 const LayerImpl* outer_viewport_scroll_layer,
78 const gfx::Vector2dF& elastic_overscroll, 78 const gfx::Vector2dF& elastic_overscroll,
79 const LayerImpl* elastic_overscroll_application_layer, 79 const LayerImpl* elastic_overscroll_application_layer,
80 int max_texture_size, 80 int max_texture_size,
81 bool can_render_to_separate_surface,
82 bool can_adjust_raster_scales, 81 bool can_adjust_raster_scales,
83 RenderSurfaceList* render_surface_list, 82 RenderSurfaceList* render_surface_list,
84 PropertyTrees* property_trees) 83 PropertyTrees* property_trees)
85 : root_layer(root_layer), 84 : root_layer(root_layer),
86 device_viewport_size(device_viewport_size), 85 device_viewport_size(device_viewport_size),
87 device_transform(device_transform), 86 device_transform(device_transform),
88 device_scale_factor(device_scale_factor), 87 device_scale_factor(device_scale_factor),
89 page_scale_factor(page_scale_factor), 88 page_scale_factor(page_scale_factor),
90 page_scale_layer(page_scale_layer), 89 page_scale_layer(page_scale_layer),
91 inner_viewport_scroll_layer(inner_viewport_scroll_layer), 90 inner_viewport_scroll_layer(inner_viewport_scroll_layer),
92 outer_viewport_scroll_layer(outer_viewport_scroll_layer), 91 outer_viewport_scroll_layer(outer_viewport_scroll_layer),
93 elastic_overscroll(elastic_overscroll), 92 elastic_overscroll(elastic_overscroll),
94 elastic_overscroll_application_layer( 93 elastic_overscroll_application_layer(
95 elastic_overscroll_application_layer), 94 elastic_overscroll_application_layer),
96 max_texture_size(max_texture_size), 95 max_texture_size(max_texture_size),
97 can_render_to_separate_surface(can_render_to_separate_surface),
98 can_adjust_raster_scales(can_adjust_raster_scales), 96 can_adjust_raster_scales(can_adjust_raster_scales),
99 render_surface_list(render_surface_list), 97 render_surface_list(render_surface_list),
100 property_trees(property_trees) {} 98 property_trees(property_trees) {}
101 99
102 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting:: 100 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting::
103 CalcDrawPropsImplInputsForTesting(LayerImpl* root_layer, 101 CalcDrawPropsImplInputsForTesting(LayerImpl* root_layer,
104 const gfx::Size& device_viewport_size, 102 const gfx::Size& device_viewport_size,
105 const gfx::Transform& device_transform, 103 const gfx::Transform& device_transform,
106 float device_scale_factor, 104 float device_scale_factor,
107 RenderSurfaceList* render_surface_list) 105 RenderSurfaceList* render_surface_list)
108 : CalcDrawPropsImplInputs(root_layer, 106 : CalcDrawPropsImplInputs(root_layer,
109 device_viewport_size, 107 device_viewport_size,
110 device_transform, 108 device_transform,
111 device_scale_factor, 109 device_scale_factor,
112 1.f, 110 1.f,
113 NULL, 111 NULL,
114 NULL, 112 NULL,
115 NULL, 113 NULL,
116 gfx::Vector2dF(), 114 gfx::Vector2dF(),
117 NULL, 115 NULL,
118 std::numeric_limits<int>::max() / 2, 116 std::numeric_limits<int>::max() / 2,
119 true,
120 false, 117 false,
121 render_surface_list, 118 render_surface_list,
122 GetPropertyTrees(root_layer)) { 119 GetPropertyTrees(root_layer)) {
123 DCHECK(root_layer); 120 DCHECK(root_layer);
124 DCHECK(render_surface_list); 121 DCHECK(render_surface_list);
125 } 122 }
126 123
127 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting:: 124 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting::
128 CalcDrawPropsImplInputsForTesting(LayerImpl* root_layer, 125 CalcDrawPropsImplInputsForTesting(LayerImpl* root_layer,
129 const gfx::Size& device_viewport_size, 126 const gfx::Size& device_viewport_size,
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 ? !property_trees->GetFromTarget( 337 ? !property_trees->GetFromTarget(
341 layer->transform_tree_index(), 338 layer->transform_tree_index(),
342 effect_node->closest_ancestor_with_copy_request_id, 339 effect_node->closest_ancestor_with_copy_request_id,
343 &from_target) 340 &from_target)
344 : !transform_node->ancestors_are_invertible; 341 : !transform_node->ancestors_are_invertible;
345 } 342 }
346 343
347 static void ComputeInitialRenderSurfaceList( 344 static void ComputeInitialRenderSurfaceList(
348 LayerTreeImpl* layer_tree_impl, 345 LayerTreeImpl* layer_tree_impl,
349 PropertyTrees* property_trees, 346 PropertyTrees* property_trees,
350 RenderSurfaceList* render_surface_list, 347 RenderSurfaceList* render_surface_list) {
351 bool can_render_to_separate_surface) {
352 EffectTree& effect_tree = property_trees->effect_tree; 348 EffectTree& effect_tree = property_trees->effect_tree;
353 for (int i = EffectTree::kContentsRootNodeId; 349 for (int i = EffectTree::kContentsRootNodeId;
354 i < static_cast<int>(effect_tree.size()); ++i) { 350 i < static_cast<int>(effect_tree.size()); ++i) {
355 if (RenderSurfaceImpl* render_surface = effect_tree.GetRenderSurface(i)) { 351 if (RenderSurfaceImpl* render_surface = effect_tree.GetRenderSurface(i)) {
356 render_surface->set_is_render_surface_list_member(false); 352 render_surface->set_is_render_surface_list_member(false);
357 render_surface->reset_num_contributors(); 353 render_surface->reset_num_contributors();
358 ClearMaskLayersContributeToDrawnRenderSurface(render_surface); 354 ClearMaskLayersContributeToDrawnRenderSurface(render_surface);
359 } 355 }
360 } 356 }
361 357
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 } 477 }
482 } 478 }
483 } 479 }
484 } 480 }
485 } 481 }
486 482
487 static void CalculateRenderSurfaceLayerList( 483 static void CalculateRenderSurfaceLayerList(
488 LayerTreeImpl* layer_tree_impl, 484 LayerTreeImpl* layer_tree_impl,
489 PropertyTrees* property_trees, 485 PropertyTrees* property_trees,
490 RenderSurfaceList* render_surface_list, 486 RenderSurfaceList* render_surface_list,
491 const bool can_render_to_separate_surface,
492 const int max_texture_size) { 487 const int max_texture_size) {
493 RenderSurfaceList initial_render_surface_list; 488 RenderSurfaceList initial_render_surface_list;
494 489
495 // First compute a list that might include surfaces that later turn out to 490 // First compute a list that might include surfaces that later turn out to
496 // have an empty content rect. After surface content rects are computed, 491 // have an empty content rect. After surface content rects are computed,
497 // produce a final list that omits empty surfaces. 492 // produce a final list that omits empty surfaces.
498 ComputeInitialRenderSurfaceList(layer_tree_impl, property_trees, 493 ComputeInitialRenderSurfaceList(layer_tree_impl, property_trees,
499 &initial_render_surface_list, 494 &initial_render_surface_list);
500 can_render_to_separate_surface);
501 ComputeSurfaceContentRects(layer_tree_impl, property_trees, 495 ComputeSurfaceContentRects(layer_tree_impl, property_trees,
502 &initial_render_surface_list, max_texture_size); 496 &initial_render_surface_list, max_texture_size);
503 ComputeListOfNonEmptySurfaces(layer_tree_impl, property_trees, 497 ComputeListOfNonEmptySurfaces(layer_tree_impl, property_trees,
504 &initial_render_surface_list, 498 &initial_render_surface_list,
505 render_surface_list); 499 render_surface_list);
506 } 500 }
507 501
508 void CalculateDrawPropertiesInternal( 502 void CalculateDrawPropertiesInternal(
509 LayerTreeHostCommon::CalcDrawPropsImplInputs* inputs, 503 LayerTreeHostCommon::CalcDrawPropsImplInputs* inputs,
510 PropertyTreeOption property_tree_option) { 504 PropertyTreeOption property_tree_option) {
(...skipping 17 matching lines...) Expand all
528 PropertyTreeBuilder::BuildPropertyTrees( 522 PropertyTreeBuilder::BuildPropertyTrees(
529 inputs->root_layer, inputs->page_scale_layer, 523 inputs->root_layer, inputs->page_scale_layer,
530 inputs->inner_viewport_scroll_layer, 524 inputs->inner_viewport_scroll_layer,
531 inputs->outer_viewport_scroll_layer, 525 inputs->outer_viewport_scroll_layer,
532 inputs->elastic_overscroll_application_layer, 526 inputs->elastic_overscroll_application_layer,
533 inputs->elastic_overscroll, inputs->page_scale_factor, 527 inputs->elastic_overscroll, inputs->page_scale_factor,
534 inputs->device_scale_factor, gfx::Rect(inputs->device_viewport_size), 528 inputs->device_scale_factor, gfx::Rect(inputs->device_viewport_size),
535 inputs->device_transform, inputs->property_trees); 529 inputs->device_transform, inputs->property_trees);
536 draw_property_utils::UpdatePropertyTreesAndRenderSurfaces( 530 draw_property_utils::UpdatePropertyTreesAndRenderSurfaces(
537 inputs->root_layer, inputs->property_trees, 531 inputs->root_layer, inputs->property_trees,
538 inputs->can_render_to_separate_surface,
539 inputs->can_adjust_raster_scales); 532 inputs->can_adjust_raster_scales);
540 533
541 // Property trees are normally constructed on the main thread and 534 // Property trees are normally constructed on the main thread and
542 // passed to compositor thread. Source to parent updates on them are not 535 // passed to compositor thread. Source to parent updates on them are not
543 // allowed in the compositor thread. Some tests build them on the 536 // allowed in the compositor thread. Some tests build them on the
544 // compositor thread, so we need to explicitly disallow source to parent 537 // compositor thread, so we need to explicitly disallow source to parent
545 // updates when they are built on compositor thread. 538 // updates when they are built on compositor thread.
546 inputs->property_trees->transform_tree 539 inputs->property_trees->transform_tree
547 .set_source_to_parent_updates_allowed(false); 540 .set_source_to_parent_updates_allowed(false);
548 if (should_measure_property_tree_performance) { 541 if (should_measure_property_tree_performance) {
(...skipping 26 matching lines...) Expand all
575 gfx::RectF(gfx::SizeF(inputs->device_viewport_size))); 568 gfx::RectF(gfx::SizeF(inputs->device_viewport_size)));
576 float page_scale_factor_for_root = 569 float page_scale_factor_for_root =
577 inputs->page_scale_layer == inputs->root_layer 570 inputs->page_scale_layer == inputs->root_layer
578 ? inputs->page_scale_factor 571 ? inputs->page_scale_factor
579 : 1.f; 572 : 1.f;
580 property_trees->transform_tree.SetRootTransformsAndScales( 573 property_trees->transform_tree.SetRootTransformsAndScales(
581 inputs->device_scale_factor, page_scale_factor_for_root, 574 inputs->device_scale_factor, page_scale_factor_for_root,
582 inputs->device_transform, inputs->root_layer->position()); 575 inputs->device_transform, inputs->root_layer->position());
583 draw_property_utils::UpdatePropertyTreesAndRenderSurfaces( 576 draw_property_utils::UpdatePropertyTreesAndRenderSurfaces(
584 inputs->root_layer, inputs->property_trees, 577 inputs->root_layer, inputs->property_trees,
585 inputs->can_render_to_separate_surface,
586 inputs->can_adjust_raster_scales); 578 inputs->can_adjust_raster_scales);
587 break; 579 break;
588 } 580 }
589 } 581 }
590 582
591 if (should_measure_property_tree_performance) { 583 if (should_measure_property_tree_performance) {
592 TRACE_EVENT_BEGIN0(TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf"), 584 TRACE_EVENT_BEGIN0(TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf"),
593 "LayerTreeHostCommon::CalculateDrawProperties"); 585 "LayerTreeHostCommon::CalculateDrawProperties");
594 } 586 }
595 587
596 draw_property_utils::FindLayersThatNeedUpdates( 588 draw_property_utils::FindLayersThatNeedUpdates(
597 inputs->root_layer->layer_tree_impl(), inputs->property_trees, 589 inputs->root_layer->layer_tree_impl(), inputs->property_trees,
598 &visible_layer_list); 590 &visible_layer_list);
599 DCHECK(inputs->can_render_to_separate_surface ==
600 inputs->property_trees->non_root_surfaces_enabled);
601 draw_property_utils::ComputeDrawPropertiesOfVisibleLayers( 591 draw_property_utils::ComputeDrawPropertiesOfVisibleLayers(
602 &visible_layer_list, inputs->property_trees); 592 &visible_layer_list, inputs->property_trees);
603 593
604 CalculateRenderSurfaceLayerList( 594 CalculateRenderSurfaceLayerList(
605 inputs->root_layer->layer_tree_impl(), inputs->property_trees, 595 inputs->root_layer->layer_tree_impl(), inputs->property_trees,
606 inputs->render_surface_list, inputs->can_render_to_separate_surface, 596 inputs->render_surface_list, inputs->max_texture_size);
607 inputs->max_texture_size);
608 597
609 if (should_measure_property_tree_performance) { 598 if (should_measure_property_tree_performance) {
610 TRACE_EVENT_END0(TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf"), 599 TRACE_EVENT_END0(TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf"),
611 "LayerTreeHostCommon::CalculateDrawProperties"); 600 "LayerTreeHostCommon::CalculateDrawProperties");
612 } 601 }
613 602
614 // A root layer render_surface should always exist after 603 // A root layer render_surface should always exist after
615 // CalculateDrawProperties. 604 // CalculateDrawProperties.
616 DCHECK(inputs->property_trees->effect_tree.GetRenderSurface( 605 DCHECK(inputs->property_trees->effect_tree.GetRenderSurface(
617 EffectTree::kContentsRootNodeId)); 606 EffectTree::kContentsRootNodeId));
618 } 607 }
619 608
620 void LayerTreeHostCommon::CalculateDrawPropertiesForTesting( 609 void LayerTreeHostCommon::CalculateDrawPropertiesForTesting(
621 CalcDrawPropsMainInputsForTesting* inputs) { 610 CalcDrawPropsMainInputsForTesting* inputs) {
622 LayerList update_layer_list; 611 LayerList update_layer_list;
623 bool can_render_to_separate_surface = true;
624 PropertyTrees* property_trees = 612 PropertyTrees* property_trees =
625 inputs->root_layer->layer_tree_host()->property_trees(); 613 inputs->root_layer->layer_tree_host()->property_trees();
626 Layer* overscroll_elasticity_layer = nullptr; 614 Layer* overscroll_elasticity_layer = nullptr;
627 gfx::Vector2dF elastic_overscroll; 615 gfx::Vector2dF elastic_overscroll;
628 PropertyTreeBuilder::BuildPropertyTrees( 616 PropertyTreeBuilder::BuildPropertyTrees(
629 inputs->root_layer, inputs->page_scale_layer, 617 inputs->root_layer, inputs->page_scale_layer,
630 inputs->inner_viewport_scroll_layer, inputs->outer_viewport_scroll_layer, 618 inputs->inner_viewport_scroll_layer, inputs->outer_viewport_scroll_layer,
631 overscroll_elasticity_layer, elastic_overscroll, 619 overscroll_elasticity_layer, elastic_overscroll,
632 inputs->page_scale_factor, inputs->device_scale_factor, 620 inputs->page_scale_factor, inputs->device_scale_factor,
633 gfx::Rect(inputs->device_viewport_size), inputs->device_transform, 621 gfx::Rect(inputs->device_viewport_size), inputs->device_transform,
634 property_trees); 622 property_trees);
635 draw_property_utils::UpdatePropertyTrees( 623 draw_property_utils::UpdatePropertyTrees(
636 inputs->root_layer->layer_tree_host(), property_trees, 624 inputs->root_layer->layer_tree_host(), property_trees);
637 can_render_to_separate_surface);
638 draw_property_utils::FindLayersThatNeedUpdates( 625 draw_property_utils::FindLayersThatNeedUpdates(
639 inputs->root_layer->layer_tree_host(), property_trees, 626 inputs->root_layer->layer_tree_host(), property_trees,
640 &update_layer_list); 627 &update_layer_list);
641 } 628 }
642 629
643 void LayerTreeHostCommon::CalculateDrawProperties( 630 void LayerTreeHostCommon::CalculateDrawProperties(
644 CalcDrawPropsImplInputs* inputs) { 631 CalcDrawPropsImplInputs* inputs) {
645 CalculateDrawPropertiesInternal(inputs, DONT_BUILD_PROPERTY_TREES); 632 CalculateDrawPropertiesInternal(inputs, DONT_BUILD_PROPERTY_TREES);
646 633
647 if (CdpPerfTracingEnabled()) { 634 if (CdpPerfTracingEnabled()) {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
694 681
695 PropertyTrees* GetPropertyTrees(Layer* layer) { 682 PropertyTrees* GetPropertyTrees(Layer* layer) {
696 return layer->layer_tree_host()->property_trees(); 683 return layer->layer_tree_host()->property_trees();
697 } 684 }
698 685
699 PropertyTrees* GetPropertyTrees(LayerImpl* layer) { 686 PropertyTrees* GetPropertyTrees(LayerImpl* layer) {
700 return layer->layer_tree_impl()->property_trees(); 687 return layer->layer_tree_impl()->property_trees();
701 } 688 }
702 689
703 } // namespace cc 690 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_common.h ('k') | cc/trees/layer_tree_host_common_perftest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698