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

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

Issue 2795963002: cc: Reduce surface contents scale adjustments. (Closed)
Patch Set: apply scale for copy requests Created 3 years, 8 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.cc ('k') | cc/trees/layer_tree_host_unittest_copyrequest.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 #include <memory> 10 #include <memory>
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 property_trees, 211 property_trees,
212 can_render_to_separate_surface); 212 can_render_to_separate_surface);
213 draw_property_utils::FindLayersThatNeedUpdates( 213 draw_property_utils::FindLayersThatNeedUpdates(
214 root_layer->layer_tree_host(), property_trees, &update_layer_list_); 214 root_layer->layer_tree_host(), property_trees, &update_layer_list_);
215 } 215 }
216 216
217 void ExecuteCalculateDrawPropertiesAndSaveUpdateLayerList( 217 void ExecuteCalculateDrawPropertiesAndSaveUpdateLayerList(
218 LayerImpl* root_layer) { 218 LayerImpl* root_layer) {
219 DCHECK(root_layer->layer_tree_impl()); 219 DCHECK(root_layer->layer_tree_impl());
220 bool can_render_to_separate_surface = true; 220 bool can_render_to_separate_surface = true;
221 bool can_adjust_raster_scales = true;
221 222
222 const LayerImpl* page_scale_layer = nullptr; 223 const LayerImpl* page_scale_layer = nullptr;
223 LayerImpl* inner_viewport_scroll_layer = 224 LayerImpl* inner_viewport_scroll_layer =
224 root_layer->layer_tree_impl()->InnerViewportScrollLayer(); 225 root_layer->layer_tree_impl()->InnerViewportScrollLayer();
225 LayerImpl* outer_viewport_scroll_layer = 226 LayerImpl* outer_viewport_scroll_layer =
226 root_layer->layer_tree_impl()->OuterViewportScrollLayer(); 227 root_layer->layer_tree_impl()->OuterViewportScrollLayer();
227 const LayerImpl* overscroll_elasticity_layer = 228 const LayerImpl* overscroll_elasticity_layer =
228 root_layer->layer_tree_impl()->OverscrollElasticityLayer(); 229 root_layer->layer_tree_impl()->OverscrollElasticityLayer();
229 gfx::Vector2dF elastic_overscroll = 230 gfx::Vector2dF elastic_overscroll =
230 root_layer->layer_tree_impl()->elastic_overscroll()->Current( 231 root_layer->layer_tree_impl()->elastic_overscroll()->Current(
231 root_layer->layer_tree_impl()->IsActiveTree()); 232 root_layer->layer_tree_impl()->IsActiveTree());
232 float page_scale_factor = 1.f; 233 float page_scale_factor = 1.f;
233 float device_scale_factor = 1.f; 234 float device_scale_factor = 1.f;
234 gfx::Size device_viewport_size = 235 gfx::Size device_viewport_size =
235 gfx::Size(root_layer->bounds().width() * device_scale_factor, 236 gfx::Size(root_layer->bounds().width() * device_scale_factor,
236 root_layer->bounds().height() * device_scale_factor); 237 root_layer->bounds().height() * device_scale_factor);
237 update_layer_list_impl_.reset(new LayerImplList); 238 update_layer_list_impl_.reset(new LayerImplList);
238 root_layer->layer_tree_impl()->BuildLayerListForTesting(); 239 root_layer->layer_tree_impl()->BuildLayerListForTesting();
239 PropertyTrees* property_trees = 240 PropertyTrees* property_trees =
240 root_layer->layer_tree_impl()->property_trees(); 241 root_layer->layer_tree_impl()->property_trees();
241 PropertyTreeBuilder::BuildPropertyTrees( 242 PropertyTreeBuilder::BuildPropertyTrees(
242 root_layer, page_scale_layer, inner_viewport_scroll_layer, 243 root_layer, page_scale_layer, inner_viewport_scroll_layer,
243 outer_viewport_scroll_layer, overscroll_elasticity_layer, 244 outer_viewport_scroll_layer, overscroll_elasticity_layer,
244 elastic_overscroll, page_scale_factor, device_scale_factor, 245 elastic_overscroll, page_scale_factor, device_scale_factor,
245 gfx::Rect(device_viewport_size), gfx::Transform(), property_trees); 246 gfx::Rect(device_viewport_size), gfx::Transform(), property_trees);
246 draw_property_utils::UpdatePropertyTreesAndRenderSurfaces( 247 draw_property_utils::UpdatePropertyTreesAndRenderSurfaces(
247 root_layer, property_trees, can_render_to_separate_surface); 248 root_layer, property_trees, can_render_to_separate_surface,
249 can_adjust_raster_scales);
248 draw_property_utils::FindLayersThatNeedUpdates( 250 draw_property_utils::FindLayersThatNeedUpdates(
249 root_layer->layer_tree_impl(), property_trees, 251 root_layer->layer_tree_impl(), property_trees,
250 update_layer_list_impl_.get()); 252 update_layer_list_impl_.get());
251 draw_property_utils::ComputeDrawPropertiesOfVisibleLayers( 253 draw_property_utils::ComputeDrawPropertiesOfVisibleLayers(
252 update_layer_list_impl(), property_trees); 254 update_layer_list_impl(), property_trees);
253 } 255 }
254 256
255 void ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces( 257 void ExecuteCalculateDrawPropertiesWithoutSeparateSurfaces(
256 LayerImpl* root_layer) { 258 LayerImpl* root_layer) {
257 gfx::Size device_viewport_size = 259 gfx::Size device_viewport_size =
258 gfx::Size(root_layer->bounds().width(), root_layer->bounds().height()); 260 gfx::Size(root_layer->bounds().width(), root_layer->bounds().height());
259 render_surface_layer_list_impl_.reset(new LayerImplList); 261 render_surface_layer_list_impl_.reset(new LayerImplList);
260 262
261 DCHECK(!root_layer->bounds().IsEmpty()); 263 DCHECK(!root_layer->bounds().IsEmpty());
262 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs( 264 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
263 root_layer, device_viewport_size, 265 root_layer, device_viewport_size,
264 render_surface_layer_list_impl_.get()); 266 render_surface_layer_list_impl_.get());
265 inputs.can_adjust_raster_scales = true; 267 inputs.can_adjust_raster_scales = true;
266 inputs.can_render_to_separate_surface = false; 268 inputs.can_render_to_separate_surface = false;
267 269
268 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs); 270 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs);
269 } 271 }
270 272
273 void ExecuteCalculateDrawPropertiesWithoutAdjustingRasterScales(
274 LayerImpl* root_layer) {
275 gfx::Size device_viewport_size =
276 gfx::Size(root_layer->bounds().width(), root_layer->bounds().height());
277 render_surface_layer_list_impl_.reset(new LayerImplList);
278
279 DCHECK(!root_layer->bounds().IsEmpty());
280 LayerTreeHostCommon::CalcDrawPropsImplInputsForTesting inputs(
281 root_layer, device_viewport_size,
282 render_surface_layer_list_impl_.get());
283 inputs.can_render_to_separate_surface = true;
284 inputs.can_adjust_raster_scales = false;
285
286 LayerTreeHostCommon::CalculateDrawPropertiesForTesting(&inputs);
287 }
288
271 bool UpdateLayerListImplContains(int id) const { 289 bool UpdateLayerListImplContains(int id) const {
272 for (auto* layer : *update_layer_list_impl_) { 290 for (auto* layer : *update_layer_list_impl_) {
273 if (layer->id() == id) 291 if (layer->id() == id)
274 return true; 292 return true;
275 } 293 }
276 return false; 294 return false;
277 } 295 }
278 296
279 bool UpdateLayerListContains(int id) const { 297 bool UpdateLayerListContains(int id) const {
280 for (const auto& layer : update_layer_list_) { 298 for (const auto& layer : update_layer_list_) {
(...skipping 10535 matching lines...) Expand 10 before | Expand all | Expand 10 after
10816 // Check other layers' scroll_tree_index 10834 // Check other layers' scroll_tree_index
10817 EXPECT_EQ(scroll_root1.id, page_scale_layer->scroll_tree_index()); 10835 EXPECT_EQ(scroll_root1.id, page_scale_layer->scroll_tree_index());
10818 EXPECT_EQ(scroll_child6.id, grand_child10->scroll_tree_index()); 10836 EXPECT_EQ(scroll_child6.id, grand_child10->scroll_tree_index());
10819 EXPECT_EQ(scroll_root1.id, parent3->scroll_tree_index()); 10837 EXPECT_EQ(scroll_root1.id, parent3->scroll_tree_index());
10820 EXPECT_EQ(scroll_child7.id, child8->scroll_tree_index()); 10838 EXPECT_EQ(scroll_child7.id, child8->scroll_tree_index());
10821 EXPECT_EQ(scroll_root1.id, parent4->scroll_tree_index()); 10839 EXPECT_EQ(scroll_root1.id, parent4->scroll_tree_index());
10822 EXPECT_EQ(scroll_root1.id, child9->scroll_tree_index()); 10840 EXPECT_EQ(scroll_root1.id, child9->scroll_tree_index());
10823 EXPECT_EQ(scroll_root1.id, grand_child12->scroll_tree_index()); 10841 EXPECT_EQ(scroll_root1.id, grand_child12->scroll_tree_index());
10824 } 10842 }
10825 10843
10844 TEST_F(LayerTreeHostCommonTest, CanAdjustRasterScaleTest) {
10845 LayerImpl* root = root_layer_for_testing();
10846 LayerImpl* render_surface = AddChild<LayerImpl>(root);
10847 LayerImpl* child = AddChild<LayerImpl>(render_surface);
10848
10849 root->SetBounds(gfx::Size(50, 50));
10850
10851 render_surface->SetBounds(gfx::Size(10, 10));
10852 render_surface->test_properties()->force_render_surface = true;
10853 gfx::Transform transform;
10854 transform.Scale(5.f, 5.f);
10855 render_surface->test_properties()->transform = transform;
10856
10857 child->SetDrawsContent(true);
10858 child->SetMasksToBounds(true);
10859 child->SetBounds(gfx::Size(10, 10));
10860
10861 ExecuteCalculateDrawPropertiesWithoutAdjustingRasterScales(root);
10862
10863 // Check surface draw properties.
10864 EXPECT_EQ(gfx::Rect(10, 10),
10865 render_surface->GetRenderSurface()->content_rect());
10866 EXPECT_EQ(transform, render_surface->GetRenderSurface()->draw_transform());
10867 EXPECT_EQ(gfx::RectF(50.0f, 50.0f),
10868 render_surface->GetRenderSurface()->DrawableContentRect());
10869
10870 // Check child layer draw properties.
10871 EXPECT_EQ(gfx::Rect(10, 10), child->visible_layer_rect());
10872 EXPECT_EQ(gfx::Transform(), child->DrawTransform());
10873 EXPECT_EQ(gfx::Rect(10, 10), child->clip_rect());
10874 EXPECT_EQ(gfx::Rect(10, 10), child->drawable_content_rect());
10875 }
10876
10826 } // namespace 10877 } // namespace
10827 } // namespace cc 10878 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_common.cc ('k') | cc/trees/layer_tree_host_unittest_copyrequest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698