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

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

Issue 2048723002: cc: Compute mask draw properties directly (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 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 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 for (int i = 0; i < proto.scrolls_size(); ++i) { 179 for (int i = 0; i < proto.scrolls_size(); ++i) {
180 scrolls.push_back(LayerTreeHostCommon::ScrollUpdateInfo()); 180 scrolls.push_back(LayerTreeHostCommon::ScrollUpdateInfo());
181 scrolls[i].FromProtobuf(proto.scrolls(i)); 181 scrolls[i].FromProtobuf(proto.scrolls(i));
182 } 182 }
183 page_scale_delta = proto.page_scale_delta(); 183 page_scale_delta = proto.page_scale_delta();
184 elastic_overscroll_delta = ProtoToVector2dF(proto.elastic_overscroll_delta()); 184 elastic_overscroll_delta = ProtoToVector2dF(proto.elastic_overscroll_delta());
185 top_controls_delta = proto.top_controls_delta(); 185 top_controls_delta = proto.top_controls_delta();
186 } 186 }
187 187
188 static inline void SetMaskLayersAreDrawnRenderSurfaceLayerListMembers( 188 static inline void SetMaskLayersAreDrawnRenderSurfaceLayerListMembers(
189 LayerImpl* layer) { 189 LayerImpl* layer,
190 if (layer->mask_layer()) 190 PropertyTrees* property_trees) {
191 if (layer->mask_layer()) {
191 layer->mask_layer()->set_is_drawn_render_surface_layer_list_member(true); 192 layer->mask_layer()->set_is_drawn_render_surface_layer_list_member(true);
193 draw_property_utils::ComputeMaskDrawProperties(layer->mask_layer(),
194 property_trees);
195 }
192 if (layer->replica_layer() && layer->replica_layer()->mask_layer()) { 196 if (layer->replica_layer() && layer->replica_layer()->mask_layer()) {
193 layer->replica_layer() 197 layer->replica_layer()
194 ->mask_layer() 198 ->mask_layer()
195 ->set_is_drawn_render_surface_layer_list_member(true); 199 ->set_is_drawn_render_surface_layer_list_member(true);
200 draw_property_utils::ComputeMaskDrawProperties(
201 layer->replica_layer()->mask_layer(), property_trees);
196 } 202 }
197 } 203 }
198 204
199 static inline void ClearLayerIsDrawnRenderSurfaceLayerListMember( 205 static inline void ClearLayerIsDrawnRenderSurfaceLayerListMember(
200 LayerImpl* layer) { 206 LayerImpl* layer) {
201 layer->set_is_drawn_render_surface_layer_list_member(false); 207 layer->set_is_drawn_render_surface_layer_list_member(false);
202 if (layer->mask_layer()) 208 if (layer->mask_layer())
203 layer->mask_layer()->set_is_drawn_render_surface_layer_list_member(false); 209 layer->mask_layer()->set_is_drawn_render_surface_layer_list_member(false);
204 if (layer->replica_layer() && layer->replica_layer()->mask_layer()) { 210 if (layer->replica_layer() && layer->replica_layer()->mask_layer()) {
205 layer->replica_layer() 211 layer->replica_layer()
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 // root surface. 457 // root surface.
452 DCHECK(!target_surface->layer_list().empty() || 458 DCHECK(!target_surface->layer_list().empty() ||
453 target_surface->render_target() == target_surface); 459 target_surface->render_target() == target_surface);
454 } else { 460 } else {
455 // This layer was removed when the target itself was cleared. 461 // This layer was removed when the target itself was cleared.
456 DCHECK(target_surface->layer_list().empty()); 462 DCHECK(target_surface->layer_list().empty());
457 } 463 }
458 } 464 }
459 continue; 465 continue;
460 } 466 }
461 SetMaskLayersAreDrawnRenderSurfaceLayerListMembers(layer); 467 SetMaskLayersAreDrawnRenderSurfaceLayerListMembers(layer, property_trees);
462 final_surface_list->push_back(layer); 468 final_surface_list->push_back(layer);
463 } 469 }
464 } 470 }
465 471
466 static void CalculateRenderSurfaceLayerList( 472 static void CalculateRenderSurfaceLayerList(
467 LayerTreeImpl* layer_tree_impl, 473 LayerTreeImpl* layer_tree_impl,
468 PropertyTrees* property_trees, 474 PropertyTrees* property_trees,
469 LayerImplList* render_surface_layer_list, 475 LayerImplList* render_surface_layer_list,
470 const bool can_render_to_separate_surface, 476 const bool can_render_to_separate_surface,
471 const int max_texture_size) { 477 const int max_texture_size) {
(...skipping 12 matching lines...) Expand all
484 ComputeSurfaceContentRects(layer_tree_impl, property_trees, 490 ComputeSurfaceContentRects(layer_tree_impl, property_trees,
485 &initial_render_surface_list, max_texture_size); 491 &initial_render_surface_list, max_texture_size);
486 ComputeListOfNonEmptySurfaces(layer_tree_impl, property_trees, 492 ComputeListOfNonEmptySurfaces(layer_tree_impl, property_trees,
487 &initial_render_surface_list, 493 &initial_render_surface_list,
488 render_surface_layer_list); 494 render_surface_layer_list);
489 495
490 ComputeLayerScrollsDrawnDescendants(layer_tree_impl, 496 ComputeLayerScrollsDrawnDescendants(layer_tree_impl,
491 &property_trees->scroll_tree); 497 &property_trees->scroll_tree);
492 } 498 }
493 499
494 static void ComputeMaskLayerDrawProperties(const LayerImpl* layer,
495 LayerImpl* mask_layer) {
496 DrawProperties& mask_layer_draw_properties = mask_layer->draw_properties();
497 mask_layer_draw_properties.visible_layer_rect = gfx::Rect(layer->bounds());
498 mask_layer_draw_properties.target_space_transform =
499 layer->draw_properties().target_space_transform;
ajuma 2016/06/07 17:59:39 Target space transform used to be needed to pick a
500 mask_layer_draw_properties.screen_space_transform =
501 layer->draw_properties().screen_space_transform;
502 mask_layer_draw_properties.maximum_animation_contents_scale =
503 layer->draw_properties().maximum_animation_contents_scale;
504 mask_layer_draw_properties.starting_animation_contents_scale =
505 layer->draw_properties().starting_animation_contents_scale;
ajuma 2016/06/07 17:59:39 We were previously setting but never using animati
506 }
507
508 void CalculateDrawPropertiesInternal( 500 void CalculateDrawPropertiesInternal(
509 LayerTreeHostCommon::CalcDrawPropsImplInputs* inputs, 501 LayerTreeHostCommon::CalcDrawPropsImplInputs* inputs,
510 PropertyTreeOption property_tree_option) { 502 PropertyTreeOption property_tree_option) {
511 inputs->render_surface_layer_list->clear(); 503 inputs->render_surface_layer_list->clear();
512 504
513 const bool should_measure_property_tree_performance = 505 const bool should_measure_property_tree_performance =
514 property_tree_option == BUILD_PROPERTY_TREES_IF_NEEDED; 506 property_tree_option == BUILD_PROPERTY_TREES_IF_NEEDED;
515 507
516 LayerImplList visible_layer_list; 508 LayerImplList visible_layer_list;
517 switch (property_tree_option) { 509 switch (property_tree_option) {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 if (should_measure_property_tree_performance) { 575 if (should_measure_property_tree_performance) {
584 TRACE_EVENT_BEGIN0(TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf"), 576 TRACE_EVENT_BEGIN0(TRACE_DISABLED_BY_DEFAULT("cc.debug.cdp-perf"),
585 "LayerTreeHostCommon::CalculateDrawProperties"); 577 "LayerTreeHostCommon::CalculateDrawProperties");
586 } 578 }
587 579
588 DCHECK(inputs->can_render_to_separate_surface == 580 DCHECK(inputs->can_render_to_separate_surface ==
589 inputs->property_trees->non_root_surfaces_enabled); 581 inputs->property_trees->non_root_surfaces_enabled);
590 for (LayerImpl* layer : visible_layer_list) { 582 for (LayerImpl* layer : visible_layer_list) {
591 draw_property_utils::ComputeLayerDrawProperties(layer, 583 draw_property_utils::ComputeLayerDrawProperties(layer,
592 inputs->property_trees); 584 inputs->property_trees);
593 if (layer->mask_layer())
594 ComputeMaskLayerDrawProperties(layer, layer->mask_layer());
595 LayerImpl* replica_mask_layer =
596 layer->replica_layer() ? layer->replica_layer()->mask_layer() : nullptr;
597 if (replica_mask_layer)
598 ComputeMaskLayerDrawProperties(layer, replica_mask_layer);
599 } 585 }
600 586
601 CalculateRenderSurfaceLayerList( 587 CalculateRenderSurfaceLayerList(
602 inputs->root_layer->layer_tree_impl(), inputs->property_trees, 588 inputs->root_layer->layer_tree_impl(), inputs->property_trees,
603 inputs->render_surface_layer_list, inputs->can_render_to_separate_surface, 589 inputs->render_surface_layer_list, inputs->can_render_to_separate_surface,
604 inputs->max_texture_size); 590 inputs->max_texture_size);
605 591
606 if (inputs->verify_clip_tree_calculations) 592 if (inputs->verify_clip_tree_calculations)
607 draw_property_utils::VerifyClipTreeCalculations(visible_layer_list, 593 draw_property_utils::VerifyClipTreeCalculations(visible_layer_list,
608 inputs->property_trees); 594 inputs->property_trees);
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
697 683
698 PropertyTrees* GetPropertyTrees(Layer* layer) { 684 PropertyTrees* GetPropertyTrees(Layer* layer) {
699 return layer->layer_tree_host()->property_trees(); 685 return layer->layer_tree_host()->property_trees();
700 } 686 }
701 687
702 PropertyTrees* GetPropertyTrees(LayerImpl* layer) { 688 PropertyTrees* GetPropertyTrees(LayerImpl* layer) {
703 return layer->layer_tree_impl()->property_trees(); 689 return layer->layer_tree_impl()->property_trees();
704 } 690 }
705 691
706 } // namespace cc 692 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698