| OLD | NEW |
| 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_impl.h" | 5 #include "cc/trees/layer_tree_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <set> | 9 #include <set> |
| 10 | 10 |
| (...skipping 703 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 714 // tile raster code does not know how to look for the replica and would | 714 // tile raster code does not know how to look for the replica and would |
| 715 // consider it occluded even though the replica is visible. | 715 // consider it occluded even though the replica is visible. |
| 716 // Since occlusion is only used for browser compositor (i.e. | 716 // Since occlusion is only used for browser compositor (i.e. |
| 717 // use_occlusion_for_tile_prioritization) and it won't use replicas, | 717 // use_occlusion_for_tile_prioritization) and it won't use replicas, |
| 718 // this should matter not. | 718 // this should matter not. |
| 719 | 719 |
| 720 if (it.represents_itself()) { | 720 if (it.represents_itself()) { |
| 721 Occlusion occlusion = | 721 Occlusion occlusion = |
| 722 inside_replica ? Occlusion() | 722 inside_replica ? Occlusion() |
| 723 : occlusion_tracker.GetCurrentOcclusionForLayer( | 723 : occlusion_tracker.GetCurrentOcclusionForLayer( |
| 724 it->draw_transform()); | 724 it->DrawTransform()); |
| 725 it->draw_properties().occlusion_in_content_space = occlusion; | 725 it->draw_properties().occlusion_in_content_space = occlusion; |
| 726 } | 726 } |
| 727 | 727 |
| 728 if (it.represents_contributing_render_surface()) { | 728 if (it.represents_contributing_render_surface()) { |
| 729 // Surfaces aren't used by the tile raster code, so they can have | 729 // Surfaces aren't used by the tile raster code, so they can have |
| 730 // occlusion regardless of replicas. | 730 // occlusion regardless of replicas. |
| 731 Occlusion occlusion = | 731 Occlusion occlusion = |
| 732 occlusion_tracker.GetCurrentOcclusionForContributingSurface( | 732 occlusion_tracker.GetCurrentOcclusionForContributingSurface( |
| 733 it->render_surface()->draw_transform()); | 733 it->render_surface()->draw_transform()); |
| 734 it->render_surface()->set_occlusion_in_content_space(occlusion); | 734 it->render_surface()->set_occlusion_in_content_space(occlusion); |
| 735 // Masks are used to draw the contributing surface, so should have | 735 // Masks are used to draw the contributing surface, so should have |
| 736 // the same occlusion as the surface (nothing inside the surface | 736 // the same occlusion as the surface (nothing inside the surface |
| 737 // occludes them). | 737 // occludes them). |
| 738 if (LayerImpl* mask = it->mask_layer()) { | 738 if (LayerImpl* mask = it->mask_layer()) { |
| 739 Occlusion mask_occlusion = | 739 Occlusion mask_occlusion = |
| 740 inside_replica | 740 inside_replica |
| 741 ? Occlusion() | 741 ? Occlusion() |
| 742 : occlusion_tracker.GetCurrentOcclusionForContributingSurface( | 742 : occlusion_tracker.GetCurrentOcclusionForContributingSurface( |
| 743 it->render_surface()->draw_transform() * | 743 it->render_surface()->draw_transform() * |
| 744 it->draw_transform()); | 744 it->DrawTransform()); |
| 745 mask->draw_properties().occlusion_in_content_space = mask_occlusion; | 745 mask->draw_properties().occlusion_in_content_space = mask_occlusion; |
| 746 } | 746 } |
| 747 if (LayerImpl* replica = it->replica_layer()) { | 747 if (LayerImpl* replica = it->replica_layer()) { |
| 748 if (LayerImpl* mask = replica->mask_layer()) | 748 if (LayerImpl* mask = replica->mask_layer()) |
| 749 mask->draw_properties().occlusion_in_content_space = Occlusion(); | 749 mask->draw_properties().occlusion_in_content_space = Occlusion(); |
| 750 } | 750 } |
| 751 } | 751 } |
| 752 | 752 |
| 753 occlusion_tracker.LeaveLayer(it); | 753 occlusion_tracker.LeaveLayer(it); |
| 754 } | 754 } |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 805 | 805 |
| 806 void LayerTreeImpl::BuildPropertyTreesForTesting() { | 806 void LayerTreeImpl::BuildPropertyTreesForTesting() { |
| 807 LayerTreeHostCommon::PreCalculateMetaInformationForTesting(root_layer_.get()); | 807 LayerTreeHostCommon::PreCalculateMetaInformationForTesting(root_layer_.get()); |
| 808 PropertyTreeBuilder::BuildPropertyTrees( | 808 PropertyTreeBuilder::BuildPropertyTrees( |
| 809 root_layer_.get(), PageScaleLayer(), InnerViewportScrollLayer(), | 809 root_layer_.get(), PageScaleLayer(), InnerViewportScrollLayer(), |
| 810 OuterViewportScrollLayer(), current_page_scale_factor(), | 810 OuterViewportScrollLayer(), current_page_scale_factor(), |
| 811 device_scale_factor(), gfx::Rect(DrawViewportSize()), | 811 device_scale_factor(), gfx::Rect(DrawViewportSize()), |
| 812 layer_tree_host_impl_->DrawTransform(), &property_trees_); | 812 layer_tree_host_impl_->DrawTransform(), &property_trees_); |
| 813 } | 813 } |
| 814 | 814 |
| 815 void LayerTreeImpl::IncrementRenderSurfaceListIdForTesting() { |
| 816 render_surface_layer_list_id_++; |
| 817 } |
| 818 |
| 815 const LayerImplList& LayerTreeImpl::RenderSurfaceLayerList() const { | 819 const LayerImplList& LayerTreeImpl::RenderSurfaceLayerList() const { |
| 816 // If this assert triggers, then the list is dirty. | 820 // If this assert triggers, then the list is dirty. |
| 817 DCHECK(!needs_update_draw_properties_); | 821 DCHECK(!needs_update_draw_properties_); |
| 818 return render_surface_layer_list_; | 822 return render_surface_layer_list_; |
| 819 } | 823 } |
| 820 | 824 |
| 821 const Region& LayerTreeImpl::UnoccludedScreenSpaceRegion() const { | 825 const Region& LayerTreeImpl::UnoccludedScreenSpaceRegion() const { |
| 822 // If this assert triggers, then the render_surface_layer_list_ is dirty, so | 826 // If this assert triggers, then the render_surface_layer_list_ is dirty, so |
| 823 // the unoccluded_screen_space_region_ is not valid anymore. | 827 // the unoccluded_screen_space_region_ is not valid anymore. |
| 824 DCHECK(!needs_update_draw_properties_); | 828 DCHECK(!needs_update_draw_properties_); |
| (...skipping 1106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1931 const gfx::BoxF& box, | 1935 const gfx::BoxF& box, |
| 1932 gfx::BoxF* bounds) const { | 1936 gfx::BoxF* bounds) const { |
| 1933 *bounds = gfx::BoxF(); | 1937 *bounds = gfx::BoxF(); |
| 1934 return layer_tree_host_impl_->animation_host() | 1938 return layer_tree_host_impl_->animation_host() |
| 1935 ? layer_tree_host_impl_->animation_host() | 1939 ? layer_tree_host_impl_->animation_host() |
| 1936 ->TransformAnimationBoundsForBox(layer->id(), box, bounds) | 1940 ->TransformAnimationBoundsForBox(layer->id(), box, bounds) |
| 1937 : true; | 1941 : true; |
| 1938 } | 1942 } |
| 1939 | 1943 |
| 1940 } // namespace cc | 1944 } // namespace cc |
| OLD | NEW |