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/layers/tiled_layer.h" | 5 #include "cc/layers/tiled_layer.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 PriorityCalculator priority_calculator_; | 254 PriorityCalculator priority_calculator_; |
255 base::Thread impl_thread_; | 255 base::Thread impl_thread_; |
256 FakeLayerTreeHostClient fake_layer_tree_host_client_; | 256 FakeLayerTreeHostClient fake_layer_tree_host_client_; |
257 scoped_ptr<SynchronousOutputSurfaceLayerTreeHost> layer_tree_host_; | 257 scoped_ptr<SynchronousOutputSurfaceLayerTreeHost> layer_tree_host_; |
258 scoped_ptr<FakeLayerTreeHostImpl> host_impl_; | 258 scoped_ptr<FakeLayerTreeHostImpl> host_impl_; |
259 scoped_ptr<PrioritizedResourceManager> resource_manager_; | 259 scoped_ptr<PrioritizedResourceManager> resource_manager_; |
260 TestOcclusionTracker* occlusion_; | 260 TestOcclusionTracker* occlusion_; |
261 }; | 261 }; |
262 | 262 |
263 TEST_F(TiledLayerTest, PushDirtyTiles) { | 263 TEST_F(TiledLayerTest, PushDirtyTiles) { |
| 264 layer_tree_host_->SetViewportSize(gfx::Size(1000, 1000)); |
| 265 |
264 scoped_refptr<FakeTiledLayer> layer = | 266 scoped_refptr<FakeTiledLayer> layer = |
265 make_scoped_refptr(new FakeTiledLayer(resource_manager_.get())); | 267 make_scoped_refptr(new FakeTiledLayer(resource_manager_.get())); |
266 scoped_ptr<FakeTiledLayerImpl> layer_impl = | 268 scoped_ptr<FakeTiledLayerImpl> layer_impl = |
267 make_scoped_ptr(new FakeTiledLayerImpl(host_impl_->active_tree(), 1)); | 269 make_scoped_ptr(new FakeTiledLayerImpl(host_impl_->active_tree(), 1)); |
268 RenderSurfaceLayerList render_surface_layer_list; | 270 RenderSurfaceLayerList render_surface_layer_list; |
269 | 271 |
270 layer_tree_host_->root_layer()->AddChild(layer); | 272 layer_tree_host_->root_layer()->AddChild(layer); |
271 | 273 |
272 // The tile size is 100x100, so this invalidates and then paints two tiles. | 274 // The tile size is 100x100, so this invalidates and then paints two tiles. |
273 layer->SetBounds(gfx::Size(100, 200)); | 275 layer->SetBounds(gfx::Size(100, 200)); |
274 CalcDrawProps(&render_surface_layer_list); | 276 CalcDrawProps(&render_surface_layer_list); |
275 UpdateAndPush(layer, layer_impl); | 277 UpdateAndPush(layer, layer_impl); |
276 | 278 |
277 // We should have both tiles on the impl side. | 279 // We should have both tiles on the impl side. |
278 EXPECT_TRUE(layer_impl->HasResourceIdForTileAt(0, 0)); | 280 EXPECT_TRUE(layer_impl->HasResourceIdForTileAt(0, 0)); |
279 EXPECT_TRUE(layer_impl->HasResourceIdForTileAt(0, 1)); | 281 EXPECT_TRUE(layer_impl->HasResourceIdForTileAt(0, 1)); |
280 | 282 |
281 // Invalidates both tiles, but then only update one of them. | 283 // Invalidates both tiles, but then only update one of them. |
282 layer->InvalidateContentRect(gfx::Rect(0, 0, 100, 200)); | 284 layer->InvalidateContentRect(gfx::Rect(0, 0, 100, 200)); |
283 layer->draw_properties().visible_content_rect = gfx::Rect(0, 0, 100, 100); | 285 layer->draw_properties().visible_content_rect = gfx::Rect(0, 0, 100, 100); |
284 UpdateAndPush(layer, layer_impl); | 286 UpdateAndPush(layer, layer_impl); |
285 | 287 |
286 // We should only have the first tile since the other tile was invalidated but | 288 // We should only have the first tile since the other tile was invalidated but |
287 // not painted. | 289 // not painted. |
288 EXPECT_TRUE(layer_impl->HasResourceIdForTileAt(0, 0)); | 290 EXPECT_TRUE(layer_impl->HasResourceIdForTileAt(0, 0)); |
289 EXPECT_FALSE(layer_impl->HasResourceIdForTileAt(0, 1)); | 291 EXPECT_FALSE(layer_impl->HasResourceIdForTileAt(0, 1)); |
290 } | 292 } |
291 | 293 |
292 TEST_F(TiledLayerTest, Scale) { | 294 TEST_F(TiledLayerTest, Scale) { |
| 295 layer_tree_host_->SetViewportSize(gfx::Size(1000, 1000)); |
| 296 |
293 layer_tree_host_->SetDeviceScaleFactor(1.5); | 297 layer_tree_host_->SetDeviceScaleFactor(1.5); |
294 | 298 |
295 scoped_refptr<FakeTiledLayer> layer = | 299 scoped_refptr<FakeTiledLayer> layer = |
296 make_scoped_refptr(new FakeTiledLayer(resource_manager_.get())); | 300 make_scoped_refptr(new FakeTiledLayer(resource_manager_.get())); |
297 scoped_ptr<FakeTiledLayerImpl> layer_impl = | 301 scoped_ptr<FakeTiledLayerImpl> layer_impl = |
298 make_scoped_ptr(new FakeTiledLayerImpl(host_impl_->active_tree(), 1)); | 302 make_scoped_ptr(new FakeTiledLayerImpl(host_impl_->active_tree(), 1)); |
299 RenderSurfaceLayerList render_surface_layer_list; | 303 RenderSurfaceLayerList render_surface_layer_list; |
300 | 304 |
301 layer_tree_host_->root_layer()->AddChild(layer); | 305 layer_tree_host_->root_layer()->AddChild(layer); |
302 | 306 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 UpdateAndPush(layer, layer_impl); | 349 UpdateAndPush(layer, layer_impl); |
346 | 350 |
347 // We should still have both tiles, as part of the top tile is still | 351 // We should still have both tiles, as part of the top tile is still |
348 // unoccluded. | 352 // unoccluded. |
349 EXPECT_TRUE(layer_impl->HasResourceIdForTileAt(0, 0)); | 353 EXPECT_TRUE(layer_impl->HasResourceIdForTileAt(0, 0)); |
350 EXPECT_TRUE(layer_impl->HasResourceIdForTileAt(0, 1)); | 354 EXPECT_TRUE(layer_impl->HasResourceIdForTileAt(0, 1)); |
351 } | 355 } |
352 } | 356 } |
353 | 357 |
354 TEST_F(TiledLayerTest, PushDeletedTiles) { | 358 TEST_F(TiledLayerTest, PushDeletedTiles) { |
| 359 layer_tree_host_->SetViewportSize(gfx::Size(1000, 1000)); |
| 360 |
355 scoped_refptr<FakeTiledLayer> layer = | 361 scoped_refptr<FakeTiledLayer> layer = |
356 make_scoped_refptr(new FakeTiledLayer(resource_manager_.get())); | 362 make_scoped_refptr(new FakeTiledLayer(resource_manager_.get())); |
357 scoped_ptr<FakeTiledLayerImpl> layer_impl = | 363 scoped_ptr<FakeTiledLayerImpl> layer_impl = |
358 make_scoped_ptr(new FakeTiledLayerImpl(host_impl_->active_tree(), 1)); | 364 make_scoped_ptr(new FakeTiledLayerImpl(host_impl_->active_tree(), 1)); |
359 RenderSurfaceLayerList render_surface_layer_list; | 365 RenderSurfaceLayerList render_surface_layer_list; |
360 | 366 |
361 layer_tree_host_->root_layer()->AddChild(layer); | 367 layer_tree_host_->root_layer()->AddChild(layer); |
362 | 368 |
363 // The tile size is 100x100, so this invalidates and then paints two tiles. | 369 // The tile size is 100x100, so this invalidates and then paints two tiles. |
364 layer->SetBounds(gfx::Size(100, 200)); | 370 layer->SetBounds(gfx::Size(100, 200)); |
(...skipping 829 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1194 LayerPushPropertiesTo(layer.get(), layer_impl.get()); | 1200 LayerPushPropertiesTo(layer.get(), layer_impl.get()); |
1195 } | 1201 } |
1196 layer_tree_host_->CommitComplete(); | 1202 layer_tree_host_->CommitComplete(); |
1197 | 1203 |
1198 ResourceManagerClearAllMemory(layer_tree_host_->contents_texture_manager(), | 1204 ResourceManagerClearAllMemory(layer_tree_host_->contents_texture_manager(), |
1199 resource_provider_.get()); | 1205 resource_provider_.get()); |
1200 layer_tree_host_->SetRootLayer(nullptr); | 1206 layer_tree_host_->SetRootLayer(nullptr); |
1201 } | 1207 } |
1202 | 1208 |
1203 TEST_F(TiledLayerTest, TilesPaintedWithoutOcclusion) { | 1209 TEST_F(TiledLayerTest, TilesPaintedWithoutOcclusion) { |
| 1210 layer_tree_host_->SetViewportSize(gfx::Size(1000, 1000)); |
| 1211 |
1204 scoped_refptr<FakeTiledLayer> layer = | 1212 scoped_refptr<FakeTiledLayer> layer = |
1205 make_scoped_refptr(new FakeTiledLayer(resource_manager_.get())); | 1213 make_scoped_refptr(new FakeTiledLayer(resource_manager_.get())); |
1206 RenderSurfaceLayerList render_surface_layer_list; | 1214 RenderSurfaceLayerList render_surface_layer_list; |
1207 | 1215 |
1208 layer_tree_host_->root_layer()->AddChild(layer); | 1216 layer_tree_host_->root_layer()->AddChild(layer); |
1209 | 1217 |
1210 // The tile size is 100x100, so this invalidates and then paints two tiles. | 1218 // The tile size is 100x100, so this invalidates and then paints two tiles. |
1211 layer->SetBounds(gfx::Size(100, 200)); | 1219 layer->SetBounds(gfx::Size(100, 200)); |
1212 CalcDrawProps(&render_surface_layer_list); | 1220 CalcDrawProps(&render_surface_layer_list); |
1213 | 1221 |
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1752 | 1760 |
1753 // Rounding leads to an extra pixel. | 1761 // Rounding leads to an extra pixel. |
1754 gfx::Rect expanded_layer_rect(layer_rect); | 1762 gfx::Rect expanded_layer_rect(layer_rect); |
1755 expanded_layer_rect.set_height(32); | 1763 expanded_layer_rect.set_height(32); |
1756 EXPECT_RECT_EQ(expanded_layer_rect, | 1764 EXPECT_RECT_EQ(expanded_layer_rect, |
1757 layer->tracking_layer_painter()->PaintedRect()); | 1765 layer->tracking_layer_painter()->PaintedRect()); |
1758 } | 1766 } |
1759 | 1767 |
1760 } // namespace | 1768 } // namespace |
1761 } // namespace cc | 1769 } // namespace cc |
OLD | NEW |