| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/picture_layer_impl.h" | 5 #include "cc/layers/picture_layer_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <limits> | 10 #include <limits> |
| 11 #include <set> | 11 #include <set> |
| 12 #include <utility> | 12 #include <utility> |
| 13 | 13 |
| 14 #include "base/location.h" | 14 #include "base/location.h" |
| 15 #include "base/macros.h" | 15 #include "base/macros.h" |
| 16 #include "base/thread_task_runner_handle.h" | 16 #include "base/thread_task_runner_handle.h" |
| 17 #include "cc/base/math_util.h" | 17 #include "cc/base/math_util.h" |
| 18 #include "cc/layers/append_quads_data.h" | 18 #include "cc/layers/append_quads_data.h" |
| 19 #include "cc/layers/picture_layer.h" | 19 #include "cc/layers/picture_layer.h" |
| 20 #include "cc/quads/draw_quad.h" | 20 #include "cc/quads/draw_quad.h" |
| 21 #include "cc/quads/tile_draw_quad.h" | 21 #include "cc/quads/tile_draw_quad.h" |
| 22 #include "cc/test/begin_frame_args_test.h" | 22 #include "cc/test/begin_frame_args_test.h" |
| 23 #include "cc/test/fake_content_layer_client.h" | 23 #include "cc/test/fake_content_layer_client.h" |
| 24 #include "cc/test/fake_display_list_raster_source.h" | |
| 25 #include "cc/test/fake_display_list_recording_source.h" | 24 #include "cc/test/fake_display_list_recording_source.h" |
| 26 #include "cc/test/fake_impl_task_runner_provider.h" | 25 #include "cc/test/fake_impl_task_runner_provider.h" |
| 27 #include "cc/test/fake_layer_tree_host_impl.h" | 26 #include "cc/test/fake_layer_tree_host_impl.h" |
| 28 #include "cc/test/fake_output_surface.h" | 27 #include "cc/test/fake_output_surface.h" |
| 29 #include "cc/test/fake_picture_layer_impl.h" | 28 #include "cc/test/fake_picture_layer_impl.h" |
| 29 #include "cc/test/fake_raster_source.h" |
| 30 #include "cc/test/geometry_test_utils.h" | 30 #include "cc/test/geometry_test_utils.h" |
| 31 #include "cc/test/gpu_rasterization_enabled_settings.h" | 31 #include "cc/test/gpu_rasterization_enabled_settings.h" |
| 32 #include "cc/test/layer_test_common.h" | 32 #include "cc/test/layer_test_common.h" |
| 33 #include "cc/test/test_shared_bitmap_manager.h" | 33 #include "cc/test/test_shared_bitmap_manager.h" |
| 34 #include "cc/test/test_task_graph_runner.h" | 34 #include "cc/test/test_task_graph_runner.h" |
| 35 #include "cc/test/test_web_graphics_context_3d.h" | 35 #include "cc/test/test_web_graphics_context_3d.h" |
| 36 #include "cc/tiles/tiling_set_raster_queue_all.h" | 36 #include "cc/tiles/tiling_set_raster_queue_all.h" |
| 37 #include "cc/tiles/tiling_set_raster_queue_required.h" | 37 #include "cc/tiles/tiling_set_raster_queue_required.h" |
| 38 #include "cc/trees/layer_tree_impl.h" | 38 #include "cc/trees/layer_tree_impl.h" |
| 39 #include "testing/gtest/include/gtest/gtest.h" | 39 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 ~PictureLayerImplTest() override {} | 115 ~PictureLayerImplTest() override {} |
| 116 | 116 |
| 117 void SetUp() override { InitializeRenderer(); } | 117 void SetUp() override { InitializeRenderer(); } |
| 118 | 118 |
| 119 virtual void InitializeRenderer() { | 119 virtual void InitializeRenderer() { |
| 120 host_impl_.SetVisible(true); | 120 host_impl_.SetVisible(true); |
| 121 host_impl_.InitializeRenderer(output_surface_.get()); | 121 host_impl_.InitializeRenderer(output_surface_.get()); |
| 122 } | 122 } |
| 123 | 123 |
| 124 void SetupDefaultTrees(const gfx::Size& layer_bounds) { | 124 void SetupDefaultTrees(const gfx::Size& layer_bounds) { |
| 125 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 125 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 126 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 126 FakeRasterSource::CreateFilled(layer_bounds); |
| 127 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 127 scoped_refptr<FakeRasterSource> active_raster_source = |
| 128 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 128 FakeRasterSource::CreateFilled(layer_bounds); |
| 129 | 129 |
| 130 SetupTrees(pending_raster_source, active_raster_source); | 130 SetupTrees(pending_raster_source, active_raster_source); |
| 131 } | 131 } |
| 132 | 132 |
| 133 void SetupDefaultTreesWithInvalidation(const gfx::Size& layer_bounds, | 133 void SetupDefaultTreesWithInvalidation(const gfx::Size& layer_bounds, |
| 134 const Region& invalidation) { | 134 const Region& invalidation) { |
| 135 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 135 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 136 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 136 FakeRasterSource::CreateFilled(layer_bounds); |
| 137 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 137 scoped_refptr<FakeRasterSource> active_raster_source = |
| 138 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 138 FakeRasterSource::CreateFilled(layer_bounds); |
| 139 | 139 |
| 140 SetupTreesWithInvalidation(pending_raster_source, active_raster_source, | 140 SetupTreesWithInvalidation(pending_raster_source, active_raster_source, |
| 141 invalidation); | 141 invalidation); |
| 142 } | 142 } |
| 143 | 143 |
| 144 void RebuildPropertyTreesOnPendingTree() { | 144 void RebuildPropertyTreesOnPendingTree() { |
| 145 host_impl_.pending_tree()->property_trees()->needs_rebuild = true; | 145 host_impl_.pending_tree()->property_trees()->needs_rebuild = true; |
| 146 host_impl_.pending_tree()->BuildPropertyTreesForTesting(); | 146 host_impl_.pending_tree()->BuildPropertyTreesForTesting(); |
| 147 } | 147 } |
| 148 | 148 |
| 149 void ActivateTree() { | 149 void ActivateTree() { |
| 150 RebuildPropertyTreesOnPendingTree(); | 150 RebuildPropertyTreesOnPendingTree(); |
| 151 host_impl_.ActivateSyncTree(); | 151 host_impl_.ActivateSyncTree(); |
| 152 CHECK(!host_impl_.pending_tree()); | 152 CHECK(!host_impl_.pending_tree()); |
| 153 CHECK(host_impl_.recycle_tree()); | 153 CHECK(host_impl_.recycle_tree()); |
| 154 old_pending_layer_ = pending_layer_; | 154 old_pending_layer_ = pending_layer_; |
| 155 pending_layer_ = nullptr; | 155 pending_layer_ = nullptr; |
| 156 active_layer_ = static_cast<FakePictureLayerImpl*>( | 156 active_layer_ = static_cast<FakePictureLayerImpl*>( |
| 157 host_impl_.active_tree()->LayerById(id_)); | 157 host_impl_.active_tree()->LayerById(id_)); |
| 158 | 158 |
| 159 bool update_lcd_text = false; | 159 bool update_lcd_text = false; |
| 160 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); | 160 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); |
| 161 } | 161 } |
| 162 | 162 |
| 163 void SetupDefaultTreesWithFixedTileSize(const gfx::Size& layer_bounds, | 163 void SetupDefaultTreesWithFixedTileSize(const gfx::Size& layer_bounds, |
| 164 const gfx::Size& tile_size, | 164 const gfx::Size& tile_size, |
| 165 const Region& invalidation) { | 165 const Region& invalidation) { |
| 166 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 166 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 167 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 167 FakeRasterSource::CreateFilled(layer_bounds); |
| 168 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 168 scoped_refptr<FakeRasterSource> active_raster_source = |
| 169 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 169 FakeRasterSource::CreateFilled(layer_bounds); |
| 170 | 170 |
| 171 SetupTreesWithFixedTileSize(pending_raster_source, active_raster_source, | 171 SetupTreesWithFixedTileSize(pending_raster_source, active_raster_source, |
| 172 tile_size, invalidation); | 172 tile_size, invalidation); |
| 173 } | 173 } |
| 174 | 174 |
| 175 void SetupTrees(scoped_refptr<DisplayListRasterSource> pending_raster_source, | 175 void SetupTrees(scoped_refptr<RasterSource> pending_raster_source, |
| 176 scoped_refptr<DisplayListRasterSource> active_raster_source) { | 176 scoped_refptr<RasterSource> active_raster_source) { |
| 177 SetupPendingTree(active_raster_source); | 177 SetupPendingTree(active_raster_source); |
| 178 ActivateTree(); | 178 ActivateTree(); |
| 179 SetupPendingTreeInternal(pending_raster_source, gfx::Size(), Region()); | 179 SetupPendingTreeInternal(pending_raster_source, gfx::Size(), Region()); |
| 180 } | 180 } |
| 181 | 181 |
| 182 void SetupTreesWithInvalidation( | 182 void SetupTreesWithInvalidation( |
| 183 scoped_refptr<DisplayListRasterSource> pending_raster_source, | 183 scoped_refptr<RasterSource> pending_raster_source, |
| 184 scoped_refptr<DisplayListRasterSource> active_raster_source, | 184 scoped_refptr<RasterSource> active_raster_source, |
| 185 const Region& pending_invalidation) { | 185 const Region& pending_invalidation) { |
| 186 SetupPendingTreeInternal(active_raster_source, gfx::Size(), Region()); | 186 SetupPendingTreeInternal(active_raster_source, gfx::Size(), Region()); |
| 187 ActivateTree(); | 187 ActivateTree(); |
| 188 SetupPendingTreeInternal(pending_raster_source, gfx::Size(), | 188 SetupPendingTreeInternal(pending_raster_source, gfx::Size(), |
| 189 pending_invalidation); | 189 pending_invalidation); |
| 190 } | 190 } |
| 191 | 191 |
| 192 void SetupTreesWithFixedTileSize( | 192 void SetupTreesWithFixedTileSize( |
| 193 scoped_refptr<DisplayListRasterSource> pending_raster_source, | 193 scoped_refptr<RasterSource> pending_raster_source, |
| 194 scoped_refptr<DisplayListRasterSource> active_raster_source, | 194 scoped_refptr<RasterSource> active_raster_source, |
| 195 const gfx::Size& tile_size, | 195 const gfx::Size& tile_size, |
| 196 const Region& pending_invalidation) { | 196 const Region& pending_invalidation) { |
| 197 SetupPendingTreeInternal(active_raster_source, tile_size, Region()); | 197 SetupPendingTreeInternal(active_raster_source, tile_size, Region()); |
| 198 ActivateTree(); | 198 ActivateTree(); |
| 199 SetupPendingTreeInternal(pending_raster_source, tile_size, | 199 SetupPendingTreeInternal(pending_raster_source, tile_size, |
| 200 pending_invalidation); | 200 pending_invalidation); |
| 201 } | 201 } |
| 202 | 202 |
| 203 void SetupPendingTree(scoped_refptr<DisplayListRasterSource> raster_source) { | 203 void SetupPendingTree(scoped_refptr<RasterSource> raster_source) { |
| 204 SetupPendingTreeInternal(raster_source, gfx::Size(), Region()); | 204 SetupPendingTreeInternal(raster_source, gfx::Size(), Region()); |
| 205 } | 205 } |
| 206 | 206 |
| 207 void SetupPendingTreeWithInvalidation( | 207 void SetupPendingTreeWithInvalidation( |
| 208 scoped_refptr<DisplayListRasterSource> raster_source, | 208 scoped_refptr<RasterSource> raster_source, |
| 209 const Region& invalidation) { | 209 const Region& invalidation) { |
| 210 SetupPendingTreeInternal(raster_source, gfx::Size(), invalidation); | 210 SetupPendingTreeInternal(raster_source, gfx::Size(), invalidation); |
| 211 } | 211 } |
| 212 | 212 |
| 213 void SetupPendingTreeWithFixedTileSize( | 213 void SetupPendingTreeWithFixedTileSize( |
| 214 scoped_refptr<DisplayListRasterSource> raster_source, | 214 scoped_refptr<RasterSource> raster_source, |
| 215 const gfx::Size& tile_size, | 215 const gfx::Size& tile_size, |
| 216 const Region& invalidation) { | 216 const Region& invalidation) { |
| 217 SetupPendingTreeInternal(raster_source, tile_size, invalidation); | 217 SetupPendingTreeInternal(raster_source, tile_size, invalidation); |
| 218 } | 218 } |
| 219 | 219 |
| 220 void SetupPendingTreeInternal( | 220 void SetupPendingTreeInternal(scoped_refptr<RasterSource> raster_source, |
| 221 scoped_refptr<DisplayListRasterSource> raster_source, | 221 const gfx::Size& tile_size, |
| 222 const gfx::Size& tile_size, | 222 const Region& invalidation) { |
| 223 const Region& invalidation) { | |
| 224 host_impl_.CreatePendingTree(); | 223 host_impl_.CreatePendingTree(); |
| 225 host_impl_.pending_tree()->PushPageScaleFromMainThread(1.f, 0.00001f, | 224 host_impl_.pending_tree()->PushPageScaleFromMainThread(1.f, 0.00001f, |
| 226 100000.f); | 225 100000.f); |
| 227 LayerTreeImpl* pending_tree = host_impl_.pending_tree(); | 226 LayerTreeImpl* pending_tree = host_impl_.pending_tree(); |
| 228 pending_tree->SetDeviceScaleFactor( | 227 pending_tree->SetDeviceScaleFactor( |
| 229 host_impl_.active_tree()->device_scale_factor()); | 228 host_impl_.active_tree()->device_scale_factor()); |
| 230 | 229 |
| 231 // Steal from the recycled tree if possible. | 230 // Steal from the recycled tree if possible. |
| 232 LayerImpl* pending_root = pending_tree->root_layer(); | 231 LayerImpl* pending_root = pending_tree->root_layer(); |
| 233 scoped_ptr<FakePictureLayerImpl> pending_layer; | 232 scoped_ptr<FakePictureLayerImpl> pending_layer; |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 bool animating_transform_to_screen) { | 298 bool animating_transform_to_screen) { |
| 300 SetupDrawProperties(layer, ideal_contents_scale, device_scale_factor, | 299 SetupDrawProperties(layer, ideal_contents_scale, device_scale_factor, |
| 301 page_scale_factor, maximum_animation_contents_scale, | 300 page_scale_factor, maximum_animation_contents_scale, |
| 302 starting_animation_contents_scale, | 301 starting_animation_contents_scale, |
| 303 animating_transform_to_screen); | 302 animating_transform_to_screen); |
| 304 layer->UpdateTiles(); | 303 layer->UpdateTiles(); |
| 305 } | 304 } |
| 306 | 305 |
| 307 static void VerifyAllPrioritizedTilesExistAndHaveRasterSource( | 306 static void VerifyAllPrioritizedTilesExistAndHaveRasterSource( |
| 308 const PictureLayerTiling* tiling, | 307 const PictureLayerTiling* tiling, |
| 309 DisplayListRasterSource* raster_source) { | 308 RasterSource* raster_source) { |
| 310 auto prioritized_tiles = | 309 auto prioritized_tiles = |
| 311 tiling->UpdateAndGetAllPrioritizedTilesForTesting(); | 310 tiling->UpdateAndGetAllPrioritizedTilesForTesting(); |
| 312 for (PictureLayerTiling::CoverageIterator iter( | 311 for (PictureLayerTiling::CoverageIterator iter( |
| 313 tiling, | 312 tiling, |
| 314 tiling->contents_scale(), | 313 tiling->contents_scale(), |
| 315 gfx::Rect(tiling->tiling_size())); | 314 gfx::Rect(tiling->tiling_size())); |
| 316 iter; | 315 iter; |
| 317 ++iter) { | 316 ++iter) { |
| 318 EXPECT_TRUE(*iter); | 317 EXPECT_TRUE(*iter); |
| 319 EXPECT_EQ(raster_source, prioritized_tiles[*iter].raster_source()); | 318 EXPECT_EQ(raster_source, prioritized_tiles[*iter].raster_source()); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 410 NoLowResPictureLayerImplTest() | 409 NoLowResPictureLayerImplTest() |
| 411 : PictureLayerImplTest(NoLowResTilingsSettings()) {} | 410 : PictureLayerImplTest(NoLowResTilingsSettings()) {} |
| 412 }; | 411 }; |
| 413 | 412 |
| 414 TEST_F(PictureLayerImplTest, TileGridAlignment) { | 413 TEST_F(PictureLayerImplTest, TileGridAlignment) { |
| 415 // Layer to span 4 raster tiles in x and in y | 414 // Layer to span 4 raster tiles in x and in y |
| 416 LayerTreeSettings settings; | 415 LayerTreeSettings settings; |
| 417 gfx::Size layer_size(settings.default_tile_size.width() * 7 / 2, | 416 gfx::Size layer_size(settings.default_tile_size.width() * 7 / 2, |
| 418 settings.default_tile_size.height() * 7 / 2); | 417 settings.default_tile_size.height() * 7 / 2); |
| 419 | 418 |
| 420 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 419 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 421 FakeDisplayListRasterSource::CreateFilled(layer_size); | 420 FakeRasterSource::CreateFilled(layer_size); |
| 422 | 421 |
| 423 // Create an active recording source, but make sure it's not solid. | 422 // Create an active recording source, but make sure it's not solid. |
| 424 scoped_ptr<FakeDisplayListRecordingSource> active_recording_source = | 423 scoped_ptr<FakeDisplayListRecordingSource> active_recording_source = |
| 425 FakeDisplayListRecordingSource::CreateFilledRecordingSource(layer_size); | 424 FakeDisplayListRecordingSource::CreateFilledRecordingSource(layer_size); |
| 426 active_recording_source->SetLayerBounds(layer_size); | 425 active_recording_source->SetLayerBounds(layer_size); |
| 427 active_recording_source->add_draw_rect(gfx::Rect(layer_size)); | 426 active_recording_source->add_draw_rect(gfx::Rect(layer_size)); |
| 428 active_recording_source->add_draw_rect( | 427 active_recording_source->add_draw_rect( |
| 429 gfx::Rect(0, 0, layer_size.width() - 1, layer_size.height() - 1)); | 428 gfx::Rect(0, 0, layer_size.width() - 1, layer_size.height() - 1)); |
| 430 active_recording_source->Rerecord(); | 429 active_recording_source->Rerecord(); |
| 431 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 430 scoped_refptr<FakeRasterSource> active_raster_source = |
| 432 FakeDisplayListRasterSource::CreateFromRecordingSource( | 431 FakeRasterSource::CreateFromRecordingSource(active_recording_source.get(), |
| 433 active_recording_source.get(), false); | 432 false); |
| 434 | 433 |
| 435 SetupTrees(pending_raster_source, active_raster_source); | 434 SetupTrees(pending_raster_source, active_raster_source); |
| 436 | 435 |
| 437 // Add 1x1 rects at the centers of each tile, then re-record recording source | 436 // Add 1x1 rects at the centers of each tile, then re-record recording source |
| 438 // contents. | 437 // contents. |
| 439 active_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); | 438 active_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); |
| 440 std::vector<Tile*> tiles = | 439 std::vector<Tile*> tiles = |
| 441 active_layer_->tilings()->tiling_at(0)->AllTilesForTesting(); | 440 active_layer_->tilings()->tiling_at(0)->AllTilesForTesting(); |
| 442 EXPECT_EQ(16u, tiles.size()); | 441 EXPECT_EQ(16u, tiles.size()); |
| 443 std::vector<SkRect> rects; | 442 std::vector<SkRect> rects; |
| 444 std::vector<Tile*>::const_iterator tile_iter; | 443 std::vector<Tile*>::const_iterator tile_iter; |
| 445 active_recording_source->reset_draws(); | 444 active_recording_source->reset_draws(); |
| 446 for (tile_iter = tiles.begin(); tile_iter < tiles.end(); tile_iter++) { | 445 for (tile_iter = tiles.begin(); tile_iter < tiles.end(); tile_iter++) { |
| 447 gfx::Point tile_center = (*tile_iter)->content_rect().CenterPoint(); | 446 gfx::Point tile_center = (*tile_iter)->content_rect().CenterPoint(); |
| 448 gfx::Rect rect(tile_center.x(), tile_center.y(), 1, 1); | 447 gfx::Rect rect(tile_center.x(), tile_center.y(), 1, 1); |
| 449 active_recording_source->add_draw_rect(rect); | 448 active_recording_source->add_draw_rect(rect); |
| 450 rects.push_back(SkRect::MakeXYWH(rect.x(), rect.y(), 1, 1)); | 449 rects.push_back(SkRect::MakeXYWH(rect.x(), rect.y(), 1, 1)); |
| 451 } | 450 } |
| 452 | 451 |
| 453 // Force re-raster with newly injected content | 452 // Force re-raster with newly injected content |
| 454 active_recording_source->Rerecord(); | 453 active_recording_source->Rerecord(); |
| 455 | 454 |
| 456 scoped_refptr<FakeDisplayListRasterSource> updated_active_raster_source = | 455 scoped_refptr<FakeRasterSource> updated_active_raster_source = |
| 457 FakeDisplayListRasterSource::CreateFromRecordingSource( | 456 FakeRasterSource::CreateFromRecordingSource(active_recording_source.get(), |
| 458 active_recording_source.get(), false); | 457 false); |
| 459 | 458 |
| 460 std::vector<SkRect>::const_iterator rect_iter = rects.begin(); | 459 std::vector<SkRect>::const_iterator rect_iter = rects.begin(); |
| 461 for (tile_iter = tiles.begin(); tile_iter < tiles.end(); tile_iter++) { | 460 for (tile_iter = tiles.begin(); tile_iter < tiles.end(); tile_iter++) { |
| 462 MockCanvas mock_canvas(1000, 1000); | 461 MockCanvas mock_canvas(1000, 1000); |
| 463 const bool include_images = true; | 462 const bool include_images = true; |
| 464 updated_active_raster_source->PlaybackToSharedCanvas( | 463 updated_active_raster_source->PlaybackToSharedCanvas( |
| 465 &mock_canvas, (*tile_iter)->content_rect(), 1.0f, include_images); | 464 &mock_canvas, (*tile_iter)->content_rect(), 1.0f, include_images); |
| 466 | 465 |
| 467 // This test verifies that when drawing the contents of a specific tile | 466 // This test verifies that when drawing the contents of a specific tile |
| 468 // at content scale 1.0, the playback canvas never receives content from | 467 // at content scale 1.0, the playback canvas never receives content from |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 595 // Now the UpdateDrawProperties is called. The viewport rect for tile | 594 // Now the UpdateDrawProperties is called. The viewport rect for tile |
| 596 // priority should be the latest value. | 595 // priority should be the latest value. |
| 597 EXPECT_EQ(another_viewport_rect_for_tile_priority, | 596 EXPECT_EQ(another_viewport_rect_for_tile_priority, |
| 598 active_layer_->viewport_rect_for_tile_priority_in_content_space()); | 597 active_layer_->viewport_rect_for_tile_priority_in_content_space()); |
| 599 } | 598 } |
| 600 | 599 |
| 601 TEST_F(PictureLayerImplTest, ClonePartialInvalidation) { | 600 TEST_F(PictureLayerImplTest, ClonePartialInvalidation) { |
| 602 gfx::Size layer_bounds(400, 400); | 601 gfx::Size layer_bounds(400, 400); |
| 603 gfx::Rect layer_invalidation(150, 200, 30, 180); | 602 gfx::Rect layer_invalidation(150, 200, 30, 180); |
| 604 | 603 |
| 605 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 604 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 606 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 605 FakeRasterSource::CreateFilled(layer_bounds); |
| 607 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 606 scoped_refptr<FakeRasterSource> active_raster_source = |
| 608 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 607 FakeRasterSource::CreateFilled(layer_bounds); |
| 609 scoped_refptr<FakeDisplayListRasterSource> lost_raster_source = | 608 scoped_refptr<FakeRasterSource> lost_raster_source = |
| 610 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 609 FakeRasterSource::CreateFilled(layer_bounds); |
| 611 | 610 |
| 612 SetupPendingTreeWithFixedTileSize(lost_raster_source, gfx::Size(50, 50), | 611 SetupPendingTreeWithFixedTileSize(lost_raster_source, gfx::Size(50, 50), |
| 613 Region()); | 612 Region()); |
| 614 ActivateTree(); | 613 ActivateTree(); |
| 615 // Add a unique tiling on the active tree. | 614 // Add a unique tiling on the active tree. |
| 616 PictureLayerTiling* tiling = active_layer_->AddTiling(3.f); | 615 PictureLayerTiling* tiling = active_layer_->AddTiling(3.f); |
| 617 tiling->set_resolution(HIGH_RESOLUTION); | 616 tiling->set_resolution(HIGH_RESOLUTION); |
| 618 tiling->CreateAllTilesForTesting(); | 617 tiling->CreateAllTilesForTesting(); |
| 619 | 618 |
| 620 // Ensure UpdateTiles won't remove any tilings. | 619 // Ensure UpdateTiles won't remove any tilings. |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 675 // Raster source will be updated upon activation. | 674 // Raster source will be updated upon activation. |
| 676 EXPECT_EQ(active_raster_source.get(), | 675 EXPECT_EQ(active_raster_source.get(), |
| 677 prioritized_tiles[*iter].raster_source()); | 676 prioritized_tiles[*iter].raster_source()); |
| 678 } | 677 } |
| 679 } | 678 } |
| 680 } | 679 } |
| 681 | 680 |
| 682 TEST_F(PictureLayerImplTest, CloneFullInvalidation) { | 681 TEST_F(PictureLayerImplTest, CloneFullInvalidation) { |
| 683 gfx::Size layer_bounds(300, 500); | 682 gfx::Size layer_bounds(300, 500); |
| 684 | 683 |
| 685 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 684 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 686 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 685 FakeRasterSource::CreateFilled(layer_bounds); |
| 687 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 686 scoped_refptr<FakeRasterSource> active_raster_source = |
| 688 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 687 FakeRasterSource::CreateFilled(layer_bounds); |
| 689 | 688 |
| 690 SetupTreesWithInvalidation(pending_raster_source, active_raster_source, | 689 SetupTreesWithInvalidation(pending_raster_source, active_raster_source, |
| 691 gfx::Rect(layer_bounds)); | 690 gfx::Rect(layer_bounds)); |
| 692 | 691 |
| 693 EXPECT_EQ(pending_layer_->tilings()->num_tilings(), | 692 EXPECT_EQ(pending_layer_->tilings()->num_tilings(), |
| 694 active_layer_->tilings()->num_tilings()); | 693 active_layer_->tilings()->num_tilings()); |
| 695 | 694 |
| 696 const PictureLayerTilingSet* tilings = pending_layer_->tilings(); | 695 const PictureLayerTilingSet* tilings = pending_layer_->tilings(); |
| 697 EXPECT_GT(tilings->num_tilings(), 0u); | 696 EXPECT_GT(tilings->num_tilings(), 0u); |
| 698 for (size_t i = 0; i < tilings->num_tilings(); ++i) { | 697 for (size_t i = 0; i < tilings->num_tilings(); ++i) { |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 830 EXPECT_FLOAT_EQ(7.26f, | 829 EXPECT_FLOAT_EQ(7.26f, |
| 831 pending_layer_->tilings()->tiling_at(0)->contents_scale()); | 830 pending_layer_->tilings()->tiling_at(0)->contents_scale()); |
| 832 } | 831 } |
| 833 | 832 |
| 834 TEST_F(PictureLayerImplTest, CreateTilingsEvenIfTwinHasNone) { | 833 TEST_F(PictureLayerImplTest, CreateTilingsEvenIfTwinHasNone) { |
| 835 // This test makes sure that if a layer can have tilings, then a commit makes | 834 // This test makes sure that if a layer can have tilings, then a commit makes |
| 836 // it not able to have tilings (empty size), and then a future commit that | 835 // it not able to have tilings (empty size), and then a future commit that |
| 837 // makes it valid again should be able to create tilings. | 836 // makes it valid again should be able to create tilings. |
| 838 gfx::Size layer_bounds(1300, 1900); | 837 gfx::Size layer_bounds(1300, 1900); |
| 839 | 838 |
| 840 scoped_refptr<FakeDisplayListRasterSource> empty_raster_source = | 839 scoped_refptr<FakeRasterSource> empty_raster_source = |
| 841 FakeDisplayListRasterSource::CreateEmpty(layer_bounds); | 840 FakeRasterSource::CreateEmpty(layer_bounds); |
| 842 scoped_refptr<FakeDisplayListRasterSource> valid_raster_source = | 841 scoped_refptr<FakeRasterSource> valid_raster_source = |
| 843 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 842 FakeRasterSource::CreateFilled(layer_bounds); |
| 844 | 843 |
| 845 SetupPendingTree(valid_raster_source); | 844 SetupPendingTree(valid_raster_source); |
| 846 ASSERT_EQ(1u, pending_layer_->tilings()->num_tilings()); | 845 ASSERT_EQ(1u, pending_layer_->tilings()->num_tilings()); |
| 847 | 846 |
| 848 ActivateTree(); | 847 ActivateTree(); |
| 849 SetupPendingTree(empty_raster_source); | 848 SetupPendingTree(empty_raster_source); |
| 850 EXPECT_FALSE(pending_layer_->CanHaveTilings()); | 849 EXPECT_FALSE(pending_layer_->CanHaveTilings()); |
| 851 ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); | 850 ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); |
| 852 ASSERT_EQ(0u, pending_layer_->tilings()->num_tilings()); | 851 ASSERT_EQ(0u, pending_layer_->tilings()->num_tilings()); |
| 853 | 852 |
| 854 ActivateTree(); | 853 ActivateTree(); |
| 855 EXPECT_FALSE(active_layer_->CanHaveTilings()); | 854 EXPECT_FALSE(active_layer_->CanHaveTilings()); |
| 856 ASSERT_EQ(0u, active_layer_->tilings()->num_tilings()); | 855 ASSERT_EQ(0u, active_layer_->tilings()->num_tilings()); |
| 857 | 856 |
| 858 SetupPendingTree(valid_raster_source); | 857 SetupPendingTree(valid_raster_source); |
| 859 ASSERT_EQ(1u, pending_layer_->tilings()->num_tilings()); | 858 ASSERT_EQ(1u, pending_layer_->tilings()->num_tilings()); |
| 860 ASSERT_EQ(0u, active_layer_->tilings()->num_tilings()); | 859 ASSERT_EQ(0u, active_layer_->tilings()->num_tilings()); |
| 861 } | 860 } |
| 862 | 861 |
| 863 TEST_F(PictureLayerImplTest, LowResTilingStaysOnActiveTree) { | 862 TEST_F(PictureLayerImplTest, LowResTilingStaysOnActiveTree) { |
| 864 gfx::Size layer_bounds(1300, 1900); | 863 gfx::Size layer_bounds(1300, 1900); |
| 865 | 864 |
| 866 scoped_refptr<FakeDisplayListRasterSource> valid_raster_source = | 865 scoped_refptr<FakeRasterSource> valid_raster_source = |
| 867 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 866 FakeRasterSource::CreateFilled(layer_bounds); |
| 868 scoped_refptr<FakeDisplayListRasterSource> other_valid_raster_source = | 867 scoped_refptr<FakeRasterSource> other_valid_raster_source = |
| 869 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 868 FakeRasterSource::CreateFilled(layer_bounds); |
| 870 | 869 |
| 871 SetupPendingTree(valid_raster_source); | 870 SetupPendingTree(valid_raster_source); |
| 872 ASSERT_EQ(1u, pending_layer_->tilings()->num_tilings()); | 871 ASSERT_EQ(1u, pending_layer_->tilings()->num_tilings()); |
| 873 | 872 |
| 874 ActivateTree(); | 873 ActivateTree(); |
| 875 SetupPendingTree(other_valid_raster_source); | 874 SetupPendingTree(other_valid_raster_source); |
| 876 ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); | 875 ASSERT_EQ(2u, active_layer_->tilings()->num_tilings()); |
| 877 ASSERT_EQ(1u, pending_layer_->tilings()->num_tilings()); | 876 ASSERT_EQ(1u, pending_layer_->tilings()->num_tilings()); |
| 878 auto* low_res_tiling = | 877 auto* low_res_tiling = |
| 879 active_layer_->tilings()->FindTilingWithResolution(LOW_RESOLUTION); | 878 active_layer_->tilings()->FindTilingWithResolution(LOW_RESOLUTION); |
| (...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1237 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 2.f); | 1236 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 2.f); |
| 1238 EXPECT_EQ(active_layer_->LowResTiling()->contents_scale(), | 1237 EXPECT_EQ(active_layer_->LowResTiling()->contents_scale(), |
| 1239 2.f * low_res_factor); | 1238 2.f * low_res_factor); |
| 1240 EXPECT_EQ(4u, active_layer_->num_tilings()); | 1239 EXPECT_EQ(4u, active_layer_->num_tilings()); |
| 1241 EXPECT_EQ(1u, pending_layer_->num_tilings()); | 1240 EXPECT_EQ(1u, pending_layer_->num_tilings()); |
| 1242 } | 1241 } |
| 1243 | 1242 |
| 1244 TEST_F(PictureLayerImplTest, DontAddLowResForSmallLayers) { | 1243 TEST_F(PictureLayerImplTest, DontAddLowResForSmallLayers) { |
| 1245 gfx::Size layer_bounds(host_impl_.settings().default_tile_size); | 1244 gfx::Size layer_bounds(host_impl_.settings().default_tile_size); |
| 1246 | 1245 |
| 1247 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 1246 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 1248 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 1247 FakeRasterSource::CreateFilled(layer_bounds); |
| 1249 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 1248 scoped_refptr<FakeRasterSource> active_raster_source = |
| 1250 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 1249 FakeRasterSource::CreateFilled(layer_bounds); |
| 1251 | 1250 |
| 1252 SetupTrees(pending_raster_source, active_raster_source); | 1251 SetupTrees(pending_raster_source, active_raster_source); |
| 1253 | 1252 |
| 1254 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 1253 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; |
| 1255 float device_scale = 1.f; | 1254 float device_scale = 1.f; |
| 1256 float page_scale = 1.f; | 1255 float page_scale = 1.f; |
| 1257 float maximum_animation_scale = 1.f; | 1256 float maximum_animation_scale = 1.f; |
| 1258 float starting_animation_scale = 0.f; | 1257 float starting_animation_scale = 0.f; |
| 1259 bool animating_transform = false; | 1258 bool animating_transform = false; |
| 1260 | 1259 |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1309 maximum_animation_scale, starting_animation_scale, animating_transform); | 1308 maximum_animation_scale, starting_animation_scale, animating_transform); |
| 1310 EXPECT_EQ(mask_raw->HighResTiling()->contents_scale(), contents_scale); | 1309 EXPECT_EQ(mask_raw->HighResTiling()->contents_scale(), contents_scale); |
| 1311 EXPECT_EQ(mask_raw->num_tilings(), 1u); | 1310 EXPECT_EQ(mask_raw->num_tilings(), 1u); |
| 1312 } | 1311 } |
| 1313 | 1312 |
| 1314 TEST_F(PictureLayerImplTest, HugeMasksGetScaledDown) { | 1313 TEST_F(PictureLayerImplTest, HugeMasksGetScaledDown) { |
| 1315 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 1314 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 1316 | 1315 |
| 1317 gfx::Size layer_bounds(1000, 1000); | 1316 gfx::Size layer_bounds(1000, 1000); |
| 1318 | 1317 |
| 1319 scoped_refptr<FakeDisplayListRasterSource> valid_raster_source = | 1318 scoped_refptr<FakeRasterSource> valid_raster_source = |
| 1320 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 1319 FakeRasterSource::CreateFilled(layer_bounds); |
| 1321 SetupPendingTree(valid_raster_source); | 1320 SetupPendingTree(valid_raster_source); |
| 1322 | 1321 |
| 1323 scoped_ptr<FakePictureLayerImpl> mask_ptr = | 1322 scoped_ptr<FakePictureLayerImpl> mask_ptr = |
| 1324 FakePictureLayerImpl::CreateMaskWithRasterSource( | 1323 FakePictureLayerImpl::CreateMaskWithRasterSource( |
| 1325 host_impl_.pending_tree(), 3, valid_raster_source); | 1324 host_impl_.pending_tree(), 3, valid_raster_source); |
| 1326 mask_ptr->SetBounds(layer_bounds); | 1325 mask_ptr->SetBounds(layer_bounds); |
| 1327 mask_ptr->SetDrawsContent(true); | 1326 mask_ptr->SetDrawsContent(true); |
| 1328 pending_layer_->SetMaskLayer(std::move(mask_ptr)); | 1327 pending_layer_->SetMaskLayer(std::move(mask_ptr)); |
| 1329 pending_layer_->SetForceRenderSurface(true); | 1328 pending_layer_->SetForceRenderSurface(true); |
| 1330 | 1329 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1364 SetupDrawPropertiesAndUpdateTiles(active_mask, 1.f, 1.f, 1.f, 1.f, 0.f, | 1363 SetupDrawPropertiesAndUpdateTiles(active_mask, 1.f, 1.f, 1.f, 1.f, 0.f, |
| 1365 false); | 1364 false); |
| 1366 active_mask->HighResTiling()->CreateAllTilesForTesting(); | 1365 active_mask->HighResTiling()->CreateAllTilesForTesting(); |
| 1367 EXPECT_EQ(1u, active_mask->HighResTiling()->AllTilesForTesting().size()); | 1366 EXPECT_EQ(1u, active_mask->HighResTiling()->AllTilesForTesting().size()); |
| 1368 EXPECT_NE(0u, mask_resource_id); | 1367 EXPECT_NE(0u, mask_resource_id); |
| 1369 EXPECT_EQ(active_mask->bounds(), mask_texture_size); | 1368 EXPECT_EQ(active_mask->bounds(), mask_texture_size); |
| 1370 | 1369 |
| 1371 // Resize larger than the max texture size. | 1370 // Resize larger than the max texture size. |
| 1372 int max_texture_size = host_impl_.GetRendererCapabilities().max_texture_size; | 1371 int max_texture_size = host_impl_.GetRendererCapabilities().max_texture_size; |
| 1373 gfx::Size huge_bounds(max_texture_size + 1, 10); | 1372 gfx::Size huge_bounds(max_texture_size + 1, 10); |
| 1374 scoped_refptr<FakeDisplayListRasterSource> huge_raster_source = | 1373 scoped_refptr<FakeRasterSource> huge_raster_source = |
| 1375 FakeDisplayListRasterSource::CreateFilled(huge_bounds); | 1374 FakeRasterSource::CreateFilled(huge_bounds); |
| 1376 | 1375 |
| 1377 SetupPendingTree(huge_raster_source); | 1376 SetupPendingTree(huge_raster_source); |
| 1378 pending_mask->SetBounds(huge_bounds); | 1377 pending_mask->SetBounds(huge_bounds); |
| 1379 pending_mask->SetRasterSourceOnPending(huge_raster_source, Region()); | 1378 pending_mask->SetRasterSourceOnPending(huge_raster_source, Region()); |
| 1380 | 1379 |
| 1381 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 1380 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 1382 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); | 1381 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); |
| 1383 | 1382 |
| 1384 // The mask tiling gets scaled down. | 1383 // The mask tiling gets scaled down. |
| 1385 EXPECT_LT(pending_mask->HighResTiling()->contents_scale(), 1.f); | 1384 EXPECT_LT(pending_mask->HighResTiling()->contents_scale(), 1.f); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1416 ActivateTree(); | 1415 ActivateTree(); |
| 1417 EXPECT_EQ(1u, active_mask->HighResTiling()->AllTilesForTesting().size()); | 1416 EXPECT_EQ(1u, active_mask->HighResTiling()->AllTilesForTesting().size()); |
| 1418 active_layer_->GetContentsResourceId(&mask_resource_id, &mask_texture_size); | 1417 active_layer_->GetContentsResourceId(&mask_resource_id, &mask_texture_size); |
| 1419 EXPECT_EQ(expected_size, mask_texture_size); | 1418 EXPECT_EQ(expected_size, mask_texture_size); |
| 1420 EXPECT_EQ(0u, mask_resource_id); | 1419 EXPECT_EQ(0u, mask_resource_id); |
| 1421 | 1420 |
| 1422 // Resize even larger, so that the scale would be smaller than the minimum | 1421 // Resize even larger, so that the scale would be smaller than the minimum |
| 1423 // contents scale. Then the layer should no longer have any tiling. | 1422 // contents scale. Then the layer should no longer have any tiling. |
| 1424 float min_contents_scale = host_impl_.settings().minimum_contents_scale; | 1423 float min_contents_scale = host_impl_.settings().minimum_contents_scale; |
| 1425 gfx::Size extra_huge_bounds(max_texture_size / min_contents_scale + 1, 10); | 1424 gfx::Size extra_huge_bounds(max_texture_size / min_contents_scale + 1, 10); |
| 1426 scoped_refptr<FakeDisplayListRasterSource> extra_huge_raster_source = | 1425 scoped_refptr<FakeRasterSource> extra_huge_raster_source = |
| 1427 FakeDisplayListRasterSource::CreateFilled(extra_huge_bounds); | 1426 FakeRasterSource::CreateFilled(extra_huge_bounds); |
| 1428 | 1427 |
| 1429 SetupPendingTree(extra_huge_raster_source); | 1428 SetupPendingTree(extra_huge_raster_source); |
| 1430 pending_mask->SetBounds(extra_huge_bounds); | 1429 pending_mask->SetBounds(extra_huge_bounds); |
| 1431 pending_mask->SetRasterSourceOnPending(extra_huge_raster_source, Region()); | 1430 pending_mask->SetRasterSourceOnPending(extra_huge_raster_source, Region()); |
| 1432 | 1431 |
| 1433 EXPECT_FALSE(pending_mask->CanHaveTilings()); | 1432 EXPECT_FALSE(pending_mask->CanHaveTilings()); |
| 1434 | 1433 |
| 1435 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 1434 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 1436 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); | 1435 host_impl_.pending_tree()->UpdateDrawProperties(update_lcd_text); |
| 1437 | 1436 |
| 1438 EXPECT_EQ(0u, pending_mask->num_tilings()); | 1437 EXPECT_EQ(0u, pending_mask->num_tilings()); |
| 1439 } | 1438 } |
| 1440 | 1439 |
| 1441 TEST_F(PictureLayerImplTest, ScaledMaskLayer) { | 1440 TEST_F(PictureLayerImplTest, ScaledMaskLayer) { |
| 1442 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 1441 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 1443 | 1442 |
| 1444 gfx::Size layer_bounds(1000, 1000); | 1443 gfx::Size layer_bounds(1000, 1000); |
| 1445 | 1444 |
| 1446 SetInitialDeviceScaleFactor(1.3f); | 1445 SetInitialDeviceScaleFactor(1.3f); |
| 1447 | 1446 |
| 1448 scoped_refptr<FakeDisplayListRasterSource> valid_raster_source = | 1447 scoped_refptr<FakeRasterSource> valid_raster_source = |
| 1449 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 1448 FakeRasterSource::CreateFilled(layer_bounds); |
| 1450 SetupPendingTree(valid_raster_source); | 1449 SetupPendingTree(valid_raster_source); |
| 1451 | 1450 |
| 1452 scoped_ptr<FakePictureLayerImpl> mask_ptr = | 1451 scoped_ptr<FakePictureLayerImpl> mask_ptr = |
| 1453 FakePictureLayerImpl::CreateMaskWithRasterSource( | 1452 FakePictureLayerImpl::CreateMaskWithRasterSource( |
| 1454 host_impl_.pending_tree(), 3, valid_raster_source); | 1453 host_impl_.pending_tree(), 3, valid_raster_source); |
| 1455 mask_ptr->SetBounds(layer_bounds); | 1454 mask_ptr->SetBounds(layer_bounds); |
| 1456 mask_ptr->SetDrawsContent(true); | 1455 mask_ptr->SetDrawsContent(true); |
| 1457 pending_layer_->SetMaskLayer(std::move(mask_ptr)); | 1456 pending_layer_->SetMaskLayer(std::move(mask_ptr)); |
| 1458 pending_layer_->SetForceRenderSurface(true); | 1457 pending_layer_->SetForceRenderSurface(true); |
| 1459 | 1458 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1511 1.f, // page scale | 1510 1.f, // page scale |
| 1512 1.f, // maximum animation scale | 1511 1.f, // maximum animation scale |
| 1513 0.f, // starting animation_scale | 1512 0.f, // starting animation_scale |
| 1514 false); | 1513 false); |
| 1515 EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings()); | 1514 EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings()); |
| 1516 } | 1515 } |
| 1517 | 1516 |
| 1518 TEST_F(PictureLayerImplTest, ClampTilesToMaxTileSize) { | 1517 TEST_F(PictureLayerImplTest, ClampTilesToMaxTileSize) { |
| 1519 gfx::Size layer_bounds(5000, 5000); | 1518 gfx::Size layer_bounds(5000, 5000); |
| 1520 | 1519 |
| 1521 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 1520 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 1522 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 1521 FakeRasterSource::CreateFilled(layer_bounds); |
| 1523 | 1522 |
| 1524 SetupPendingTree(pending_raster_source); | 1523 SetupPendingTree(pending_raster_source); |
| 1525 EXPECT_GE(pending_layer_->tilings()->num_tilings(), 1u); | 1524 EXPECT_GE(pending_layer_->tilings()->num_tilings(), 1u); |
| 1526 | 1525 |
| 1527 pending_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); | 1526 pending_layer_->tilings()->tiling_at(0)->CreateAllTilesForTesting(); |
| 1528 | 1527 |
| 1529 // The default value. | 1528 // The default value. |
| 1530 EXPECT_EQ(gfx::Size(256, 256).ToString(), | 1529 EXPECT_EQ(gfx::Size(256, 256).ToString(), |
| 1531 host_impl_.settings().default_tile_size.ToString()); | 1530 host_impl_.settings().default_tile_size.ToString()); |
| 1532 | 1531 |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1631 | 1630 |
| 1632 TEST_F(PictureLayerImplTest, ResourcelessPartialRecording) { | 1631 TEST_F(PictureLayerImplTest, ResourcelessPartialRecording) { |
| 1633 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); | 1632 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
| 1634 | 1633 |
| 1635 gfx::Size tile_size(400, 400); | 1634 gfx::Size tile_size(400, 400); |
| 1636 gfx::Size layer_bounds(700, 650); | 1635 gfx::Size layer_bounds(700, 650); |
| 1637 gfx::Rect layer_rect(layer_bounds); | 1636 gfx::Rect layer_rect(layer_bounds); |
| 1638 SetInitialDeviceScaleFactor(2.f); | 1637 SetInitialDeviceScaleFactor(2.f); |
| 1639 | 1638 |
| 1640 gfx::Rect recorded_viewport(20, 30, 40, 50); | 1639 gfx::Rect recorded_viewport(20, 30, 40, 50); |
| 1641 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 1640 scoped_refptr<FakeRasterSource> active_raster_source = |
| 1642 FakeDisplayListRasterSource::CreatePartiallyFilled(layer_bounds, | 1641 FakeRasterSource::CreatePartiallyFilled(layer_bounds, recorded_viewport); |
| 1643 recorded_viewport); | |
| 1644 | 1642 |
| 1645 SetupPendingTree(active_raster_source); | 1643 SetupPendingTree(active_raster_source); |
| 1646 ActivateTree(); | 1644 ActivateTree(); |
| 1647 | 1645 |
| 1648 active_layer_->SetContentsOpaque(true); | 1646 active_layer_->SetContentsOpaque(true); |
| 1649 gfx::Rect visible_rect(30, 35, 10, 5); | 1647 gfx::Rect visible_rect(30, 35, 10, 5); |
| 1650 active_layer_->draw_properties().visible_layer_rect = visible_rect; | 1648 active_layer_->draw_properties().visible_layer_rect = visible_rect; |
| 1651 | 1649 |
| 1652 AppendQuadsData data; | 1650 AppendQuadsData data; |
| 1653 active_layer_->WillDraw(DRAW_MODE_RESOURCELESS_SOFTWARE, nullptr); | 1651 active_layer_->WillDraw(DRAW_MODE_RESOURCELESS_SOFTWARE, nullptr); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1664 const DrawQuad* quad = render_pass->quad_list.front(); | 1662 const DrawQuad* quad = render_pass->quad_list.front(); |
| 1665 EXPECT_EQ(quad_visible, quad->rect); | 1663 EXPECT_EQ(quad_visible, quad->rect); |
| 1666 EXPECT_EQ(quad_visible, quad->opaque_rect); | 1664 EXPECT_EQ(quad_visible, quad->opaque_rect); |
| 1667 EXPECT_EQ(quad_visible, quad->visible_rect); | 1665 EXPECT_EQ(quad_visible, quad->visible_rect); |
| 1668 } | 1666 } |
| 1669 | 1667 |
| 1670 TEST_F(PictureLayerImplTest, ResourcelessEmptyRecording) { | 1668 TEST_F(PictureLayerImplTest, ResourcelessEmptyRecording) { |
| 1671 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); | 1669 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
| 1672 | 1670 |
| 1673 gfx::Size layer_bounds(700, 650); | 1671 gfx::Size layer_bounds(700, 650); |
| 1674 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 1672 scoped_refptr<FakeRasterSource> active_raster_source = |
| 1675 FakeDisplayListRasterSource::CreatePartiallyFilled(layer_bounds, | 1673 FakeRasterSource::CreatePartiallyFilled(layer_bounds, gfx::Rect()); |
| 1676 gfx::Rect()); | |
| 1677 SetupPendingTree(active_raster_source); | 1674 SetupPendingTree(active_raster_source); |
| 1678 ActivateTree(); | 1675 ActivateTree(); |
| 1679 | 1676 |
| 1680 active_layer_->SetContentsOpaque(true); | 1677 active_layer_->SetContentsOpaque(true); |
| 1681 active_layer_->draw_properties().visible_layer_rect = gfx::Rect(layer_bounds); | 1678 active_layer_->draw_properties().visible_layer_rect = gfx::Rect(layer_bounds); |
| 1682 | 1679 |
| 1683 AppendQuadsData data; | 1680 AppendQuadsData data; |
| 1684 active_layer_->WillDraw(DRAW_MODE_RESOURCELESS_SOFTWARE, nullptr); | 1681 active_layer_->WillDraw(DRAW_MODE_RESOURCELESS_SOFTWARE, nullptr); |
| 1685 active_layer_->AppendQuads(render_pass.get(), &data); | 1682 active_layer_->AppendQuads(render_pass.get(), &data); |
| 1686 active_layer_->DidDraw(nullptr); | 1683 active_layer_->DidDraw(nullptr); |
| 1687 | 1684 |
| 1688 EXPECT_EQ(0U, render_pass->quad_list.size()); | 1685 EXPECT_EQ(0U, render_pass->quad_list.size()); |
| 1689 } | 1686 } |
| 1690 | 1687 |
| 1691 TEST_F(PictureLayerImplTest, SolidColorLayerHasVisibleFullCoverage) { | 1688 TEST_F(PictureLayerImplTest, SolidColorLayerHasVisibleFullCoverage) { |
| 1692 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); | 1689 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
| 1693 | 1690 |
| 1694 gfx::Size layer_bounds(1500, 1500); | 1691 gfx::Size layer_bounds(1500, 1500); |
| 1695 gfx::Rect visible_rect(250, 250, 1000, 1000); | 1692 gfx::Rect visible_rect(250, 250, 1000, 1000); |
| 1696 | 1693 |
| 1697 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 1694 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 1698 FakeDisplayListRasterSource::CreateFilledSolidColor(layer_bounds); | 1695 FakeRasterSource::CreateFilledSolidColor(layer_bounds); |
| 1699 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 1696 scoped_refptr<FakeRasterSource> active_raster_source = |
| 1700 FakeDisplayListRasterSource::CreateFilledSolidColor(layer_bounds); | 1697 FakeRasterSource::CreateFilledSolidColor(layer_bounds); |
| 1701 | 1698 |
| 1702 SetupTrees(pending_raster_source, active_raster_source); | 1699 SetupTrees(pending_raster_source, active_raster_source); |
| 1703 | 1700 |
| 1704 active_layer_->draw_properties().visible_layer_rect = visible_rect; | 1701 active_layer_->draw_properties().visible_layer_rect = visible_rect; |
| 1705 | 1702 |
| 1706 AppendQuadsData data; | 1703 AppendQuadsData data; |
| 1707 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr); | 1704 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr); |
| 1708 active_layer_->AppendQuads(render_pass.get(), &data); | 1705 active_layer_->AppendQuads(render_pass.get(), &data); |
| 1709 active_layer_->DidDraw(nullptr); | 1706 active_layer_->DidDraw(nullptr); |
| 1710 | 1707 |
| 1711 Region remaining = visible_rect; | 1708 Region remaining = visible_rect; |
| 1712 for (const auto& quad : render_pass->quad_list) { | 1709 for (const auto& quad : render_pass->quad_list) { |
| 1713 EXPECT_TRUE(visible_rect.Contains(quad->rect)); | 1710 EXPECT_TRUE(visible_rect.Contains(quad->rect)); |
| 1714 EXPECT_TRUE(remaining.Contains(quad->rect)); | 1711 EXPECT_TRUE(remaining.Contains(quad->rect)); |
| 1715 remaining.Subtract(quad->rect); | 1712 remaining.Subtract(quad->rect); |
| 1716 } | 1713 } |
| 1717 | 1714 |
| 1718 EXPECT_TRUE(remaining.IsEmpty()); | 1715 EXPECT_TRUE(remaining.IsEmpty()); |
| 1719 } | 1716 } |
| 1720 | 1717 |
| 1721 TEST_F(PictureLayerImplTest, TileScalesWithSolidColorRasterSource) { | 1718 TEST_F(PictureLayerImplTest, TileScalesWithSolidColorRasterSource) { |
| 1722 gfx::Size layer_bounds(200, 200); | 1719 gfx::Size layer_bounds(200, 200); |
| 1723 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 1720 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 1724 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 1721 FakeRasterSource::CreateFilled(layer_bounds); |
| 1725 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 1722 scoped_refptr<FakeRasterSource> active_raster_source = |
| 1726 FakeDisplayListRasterSource::CreateFilledSolidColor(layer_bounds); | 1723 FakeRasterSource::CreateFilledSolidColor(layer_bounds); |
| 1727 | 1724 |
| 1728 SetupTrees(pending_raster_source, active_raster_source); | 1725 SetupTrees(pending_raster_source, active_raster_source); |
| 1729 // Solid color raster source should not allow tilings at any scale. | 1726 // Solid color raster source should not allow tilings at any scale. |
| 1730 EXPECT_FALSE(active_layer_->CanHaveTilings()); | 1727 EXPECT_FALSE(active_layer_->CanHaveTilings()); |
| 1731 EXPECT_EQ(0.f, active_layer_->ideal_contents_scale()); | 1728 EXPECT_EQ(0.f, active_layer_->ideal_contents_scale()); |
| 1732 | 1729 |
| 1733 // Activate non-solid-color pending raster source makes active layer can have | 1730 // Activate non-solid-color pending raster source makes active layer can have |
| 1734 // tilings. | 1731 // tilings. |
| 1735 ActivateTree(); | 1732 ActivateTree(); |
| 1736 EXPECT_TRUE(active_layer_->CanHaveTilings()); | 1733 EXPECT_TRUE(active_layer_->CanHaveTilings()); |
| 1737 EXPECT_GT(active_layer_->ideal_contents_scale(), 0.f); | 1734 EXPECT_GT(active_layer_->ideal_contents_scale(), 0.f); |
| 1738 } | 1735 } |
| 1739 | 1736 |
| 1740 TEST_F(NoLowResPictureLayerImplTest, MarkRequiredOffscreenTiles) { | 1737 TEST_F(NoLowResPictureLayerImplTest, MarkRequiredOffscreenTiles) { |
| 1741 gfx::Size layer_bounds(200, 200); | 1738 gfx::Size layer_bounds(200, 200); |
| 1742 | 1739 |
| 1743 gfx::Transform transform; | 1740 gfx::Transform transform; |
| 1744 gfx::Rect viewport(0, 0, 100, 200); | 1741 gfx::Rect viewport(0, 0, 100, 200); |
| 1745 host_impl_.SetExternalTilePriorityConstraints(viewport, transform); | 1742 host_impl_.SetExternalTilePriorityConstraints(viewport, transform); |
| 1746 | 1743 |
| 1747 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 1744 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 1748 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 1745 FakeRasterSource::CreateFilled(layer_bounds); |
| 1749 SetupPendingTreeWithFixedTileSize(pending_raster_source, gfx::Size(100, 100), | 1746 SetupPendingTreeWithFixedTileSize(pending_raster_source, gfx::Size(100, 100), |
| 1750 Region()); | 1747 Region()); |
| 1751 | 1748 |
| 1752 EXPECT_EQ(1u, pending_layer_->num_tilings()); | 1749 EXPECT_EQ(1u, pending_layer_->num_tilings()); |
| 1753 EXPECT_EQ(viewport, | 1750 EXPECT_EQ(viewport, |
| 1754 pending_layer_->viewport_rect_for_tile_priority_in_content_space()); | 1751 pending_layer_->viewport_rect_for_tile_priority_in_content_space()); |
| 1755 | 1752 |
| 1756 base::TimeTicks time_ticks; | 1753 base::TimeTicks time_ticks; |
| 1757 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 1754 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 1758 pending_layer_->UpdateTiles(); | 1755 pending_layer_->UpdateTiles(); |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1854 EXPECT_EQ(0u, data.num_incomplete_tiles); | 1851 EXPECT_EQ(0u, data.num_incomplete_tiles); |
| 1855 EXPECT_FALSE(active_layer_->only_used_low_res_last_append_quads()); | 1852 EXPECT_FALSE(active_layer_->only_used_low_res_last_append_quads()); |
| 1856 } | 1853 } |
| 1857 | 1854 |
| 1858 TEST_F(PictureLayerImplTest, HighResTileIsComplete) { | 1855 TEST_F(PictureLayerImplTest, HighResTileIsComplete) { |
| 1859 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 1856 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 1860 | 1857 |
| 1861 gfx::Size tile_size(100, 100); | 1858 gfx::Size tile_size(100, 100); |
| 1862 gfx::Size layer_bounds(200, 200); | 1859 gfx::Size layer_bounds(200, 200); |
| 1863 | 1860 |
| 1864 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 1861 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 1865 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 1862 FakeRasterSource::CreateFilled(layer_bounds); |
| 1866 | 1863 |
| 1867 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); | 1864 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); |
| 1868 ActivateTree(); | 1865 ActivateTree(); |
| 1869 | 1866 |
| 1870 // All high res tiles have resources. | 1867 // All high res tiles have resources. |
| 1871 std::vector<Tile*> tiles = | 1868 std::vector<Tile*> tiles = |
| 1872 active_layer_->tilings()->tiling_at(0)->AllTilesForTesting(); | 1869 active_layer_->tilings()->tiling_at(0)->AllTilesForTesting(); |
| 1873 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); | 1870 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); |
| 1874 | 1871 |
| 1875 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); | 1872 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
| 1876 AppendQuadsData data; | 1873 AppendQuadsData data; |
| 1877 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr); | 1874 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr); |
| 1878 active_layer_->AppendQuads(render_pass.get(), &data); | 1875 active_layer_->AppendQuads(render_pass.get(), &data); |
| 1879 active_layer_->DidDraw(nullptr); | 1876 active_layer_->DidDraw(nullptr); |
| 1880 | 1877 |
| 1881 // All high res tiles drew, nothing was incomplete. | 1878 // All high res tiles drew, nothing was incomplete. |
| 1882 EXPECT_EQ(9u, render_pass->quad_list.size()); | 1879 EXPECT_EQ(9u, render_pass->quad_list.size()); |
| 1883 EXPECT_EQ(0u, data.num_missing_tiles); | 1880 EXPECT_EQ(0u, data.num_missing_tiles); |
| 1884 EXPECT_EQ(0u, data.num_incomplete_tiles); | 1881 EXPECT_EQ(0u, data.num_incomplete_tiles); |
| 1885 EXPECT_FALSE(active_layer_->only_used_low_res_last_append_quads()); | 1882 EXPECT_FALSE(active_layer_->only_used_low_res_last_append_quads()); |
| 1886 } | 1883 } |
| 1887 | 1884 |
| 1888 TEST_F(PictureLayerImplTest, HighResTileIsIncomplete) { | 1885 TEST_F(PictureLayerImplTest, HighResTileIsIncomplete) { |
| 1889 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 1886 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 1890 | 1887 |
| 1891 gfx::Size tile_size(100, 100); | 1888 gfx::Size tile_size(100, 100); |
| 1892 gfx::Size layer_bounds(200, 200); | 1889 gfx::Size layer_bounds(200, 200); |
| 1893 | 1890 |
| 1894 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 1891 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 1895 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 1892 FakeRasterSource::CreateFilled(layer_bounds); |
| 1896 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); | 1893 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); |
| 1897 ActivateTree(); | 1894 ActivateTree(); |
| 1898 | 1895 |
| 1899 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); | 1896 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
| 1900 AppendQuadsData data; | 1897 AppendQuadsData data; |
| 1901 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr); | 1898 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr); |
| 1902 active_layer_->AppendQuads(render_pass.get(), &data); | 1899 active_layer_->AppendQuads(render_pass.get(), &data); |
| 1903 active_layer_->DidDraw(nullptr); | 1900 active_layer_->DidDraw(nullptr); |
| 1904 | 1901 |
| 1905 EXPECT_EQ(1u, render_pass->quad_list.size()); | 1902 EXPECT_EQ(1u, render_pass->quad_list.size()); |
| 1906 EXPECT_EQ(1u, data.num_missing_tiles); | 1903 EXPECT_EQ(1u, data.num_missing_tiles); |
| 1907 EXPECT_EQ(0u, data.num_incomplete_tiles); | 1904 EXPECT_EQ(0u, data.num_incomplete_tiles); |
| 1908 EXPECT_TRUE(active_layer_->only_used_low_res_last_append_quads()); | 1905 EXPECT_TRUE(active_layer_->only_used_low_res_last_append_quads()); |
| 1909 } | 1906 } |
| 1910 | 1907 |
| 1911 TEST_F(PictureLayerImplTest, HighResTileIsIncompleteLowResComplete) { | 1908 TEST_F(PictureLayerImplTest, HighResTileIsIncompleteLowResComplete) { |
| 1912 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 1909 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 1913 | 1910 |
| 1914 gfx::Size tile_size(100, 100); | 1911 gfx::Size tile_size(100, 100); |
| 1915 gfx::Size layer_bounds(200, 200); | 1912 gfx::Size layer_bounds(200, 200); |
| 1916 | 1913 |
| 1917 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 1914 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 1918 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 1915 FakeRasterSource::CreateFilled(layer_bounds); |
| 1919 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); | 1916 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); |
| 1920 ActivateTree(); | 1917 ActivateTree(); |
| 1921 | 1918 |
| 1922 std::vector<Tile*> low_tiles = | 1919 std::vector<Tile*> low_tiles = |
| 1923 active_layer_->tilings()->tiling_at(1)->AllTilesForTesting(); | 1920 active_layer_->tilings()->tiling_at(1)->AllTilesForTesting(); |
| 1924 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(low_tiles); | 1921 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(low_tiles); |
| 1925 | 1922 |
| 1926 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); | 1923 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
| 1927 AppendQuadsData data; | 1924 AppendQuadsData data; |
| 1928 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr); | 1925 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr); |
| 1929 active_layer_->AppendQuads(render_pass.get(), &data); | 1926 active_layer_->AppendQuads(render_pass.get(), &data); |
| 1930 active_layer_->DidDraw(nullptr); | 1927 active_layer_->DidDraw(nullptr); |
| 1931 | 1928 |
| 1932 EXPECT_EQ(1u, render_pass->quad_list.size()); | 1929 EXPECT_EQ(1u, render_pass->quad_list.size()); |
| 1933 EXPECT_EQ(0u, data.num_missing_tiles); | 1930 EXPECT_EQ(0u, data.num_missing_tiles); |
| 1934 EXPECT_EQ(1u, data.num_incomplete_tiles); | 1931 EXPECT_EQ(1u, data.num_incomplete_tiles); |
| 1935 EXPECT_TRUE(active_layer_->only_used_low_res_last_append_quads()); | 1932 EXPECT_TRUE(active_layer_->only_used_low_res_last_append_quads()); |
| 1936 } | 1933 } |
| 1937 | 1934 |
| 1938 TEST_F(PictureLayerImplTest, LowResTileIsIncomplete) { | 1935 TEST_F(PictureLayerImplTest, LowResTileIsIncomplete) { |
| 1939 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 1936 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 1940 | 1937 |
| 1941 gfx::Size tile_size(100, 100); | 1938 gfx::Size tile_size(100, 100); |
| 1942 gfx::Size layer_bounds(200, 200); | 1939 gfx::Size layer_bounds(200, 200); |
| 1943 | 1940 |
| 1944 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 1941 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 1945 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 1942 FakeRasterSource::CreateFilled(layer_bounds); |
| 1946 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); | 1943 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); |
| 1947 ActivateTree(); | 1944 ActivateTree(); |
| 1948 | 1945 |
| 1949 // All high res tiles have resources except one. | 1946 // All high res tiles have resources except one. |
| 1950 std::vector<Tile*> high_tiles = | 1947 std::vector<Tile*> high_tiles = |
| 1951 active_layer_->tilings()->tiling_at(0)->AllTilesForTesting(); | 1948 active_layer_->tilings()->tiling_at(0)->AllTilesForTesting(); |
| 1952 high_tiles.erase(high_tiles.begin()); | 1949 high_tiles.erase(high_tiles.begin()); |
| 1953 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(high_tiles); | 1950 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(high_tiles); |
| 1954 | 1951 |
| 1955 // All low res tiles have resources. | 1952 // All low res tiles have resources. |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2031 EXPECT_FALSE(active_layer_->only_used_low_res_last_append_quads()); | 2028 EXPECT_FALSE(active_layer_->only_used_low_res_last_append_quads()); |
| 2032 } | 2029 } |
| 2033 | 2030 |
| 2034 TEST_F(PictureLayerImplTest, AppendQuadsDataForCheckerboard) { | 2031 TEST_F(PictureLayerImplTest, AppendQuadsDataForCheckerboard) { |
| 2035 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 2032 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 2036 | 2033 |
| 2037 gfx::Size tile_size(100, 100); | 2034 gfx::Size tile_size(100, 100); |
| 2038 gfx::Size layer_bounds(200, 200); | 2035 gfx::Size layer_bounds(200, 200); |
| 2039 gfx::Rect recorded_viewport(0, 0, 150, 150); | 2036 gfx::Rect recorded_viewport(0, 0, 150, 150); |
| 2040 | 2037 |
| 2041 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 2038 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 2042 FakeDisplayListRasterSource::CreatePartiallyFilled(layer_bounds, | 2039 FakeRasterSource::CreatePartiallyFilled(layer_bounds, recorded_viewport); |
| 2043 recorded_viewport); | |
| 2044 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); | 2040 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); |
| 2045 ActivateTree(); | 2041 ActivateTree(); |
| 2046 | 2042 |
| 2047 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); | 2043 scoped_ptr<RenderPass> render_pass = RenderPass::Create(); |
| 2048 AppendQuadsData data; | 2044 AppendQuadsData data; |
| 2049 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr); | 2045 active_layer_->WillDraw(DRAW_MODE_SOFTWARE, nullptr); |
| 2050 active_layer_->AppendQuads(render_pass.get(), &data); | 2046 active_layer_->AppendQuads(render_pass.get(), &data); |
| 2051 active_layer_->DidDraw(nullptr); | 2047 active_layer_->DidDraw(nullptr); |
| 2052 | 2048 |
| 2053 EXPECT_EQ(1u, render_pass->quad_list.size()); | 2049 EXPECT_EQ(1u, render_pass->quad_list.size()); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2144 active_layer_->LowResTiling()->UpdateAllRequiredStateForTesting(); | 2140 active_layer_->LowResTiling()->UpdateAllRequiredStateForTesting(); |
| 2145 | 2141 |
| 2146 AssertNoTilesRequired(active_layer_->HighResTiling()); | 2142 AssertNoTilesRequired(active_layer_->HighResTiling()); |
| 2147 AssertNoTilesRequired(active_layer_->LowResTiling()); | 2143 AssertNoTilesRequired(active_layer_->LowResTiling()); |
| 2148 } | 2144 } |
| 2149 | 2145 |
| 2150 TEST_F(PictureLayerImplTest, NothingRequiredIfActiveMissingTiles) { | 2146 TEST_F(PictureLayerImplTest, NothingRequiredIfActiveMissingTiles) { |
| 2151 gfx::Size layer_bounds(400, 400); | 2147 gfx::Size layer_bounds(400, 400); |
| 2152 gfx::Size tile_size(100, 100); | 2148 gfx::Size tile_size(100, 100); |
| 2153 | 2149 |
| 2154 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 2150 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 2155 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 2151 FakeRasterSource::CreateFilled(layer_bounds); |
| 2156 // This raster source will create tilings, but has no recordings so will not | 2152 // This raster source will create tilings, but has no recordings so will not |
| 2157 // create any tiles. This is attempting to simulate scrolling past the end of | 2153 // create any tiles. This is attempting to simulate scrolling past the end of |
| 2158 // recorded content on the active layer, where the recordings are so far away | 2154 // recorded content on the active layer, where the recordings are so far away |
| 2159 // that no tiles are created. | 2155 // that no tiles are created. |
| 2160 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 2156 scoped_refptr<FakeRasterSource> active_raster_source = |
| 2161 FakeDisplayListRasterSource::CreatePartiallyFilled(layer_bounds, | 2157 FakeRasterSource::CreatePartiallyFilled(layer_bounds, gfx::Rect()); |
| 2162 gfx::Rect()); | |
| 2163 | 2158 |
| 2164 SetupTreesWithFixedTileSize(pending_raster_source, active_raster_source, | 2159 SetupTreesWithFixedTileSize(pending_raster_source, active_raster_source, |
| 2165 tile_size, Region()); | 2160 tile_size, Region()); |
| 2166 | 2161 |
| 2167 // Active layer has tilings, but no tiles due to missing recordings. | 2162 // Active layer has tilings, but no tiles due to missing recordings. |
| 2168 EXPECT_TRUE(active_layer_->CanHaveTilings()); | 2163 EXPECT_TRUE(active_layer_->CanHaveTilings()); |
| 2169 EXPECT_EQ(active_layer_->tilings()->num_tilings(), 2u); | 2164 EXPECT_EQ(active_layer_->tilings()->num_tilings(), 2u); |
| 2170 EXPECT_EQ(active_layer_->HighResTiling()->AllTilesForTesting().size(), 0u); | 2165 EXPECT_EQ(active_layer_->HighResTiling()->AllTilesForTesting().size(), 0u); |
| 2171 | 2166 |
| 2172 // Since the active layer has no tiles at all, the pending layer doesn't | 2167 // Since the active layer has no tiles at all, the pending layer doesn't |
| 2173 // need content in order to activate. | 2168 // need content in order to activate. |
| 2174 pending_layer_->HighResTiling()->UpdateAllRequiredStateForTesting(); | 2169 pending_layer_->HighResTiling()->UpdateAllRequiredStateForTesting(); |
| 2175 EXPECT_FALSE(pending_layer_->LowResTiling()); | 2170 EXPECT_FALSE(pending_layer_->LowResTiling()); |
| 2176 | 2171 |
| 2177 AssertNoTilesRequired(pending_layer_->HighResTiling()); | 2172 AssertNoTilesRequired(pending_layer_->HighResTiling()); |
| 2178 } | 2173 } |
| 2179 | 2174 |
| 2180 TEST_F(PictureLayerImplTest, HighResRequiredIfActiveCantHaveTiles) { | 2175 TEST_F(PictureLayerImplTest, HighResRequiredIfActiveCantHaveTiles) { |
| 2181 gfx::Size layer_bounds(400, 400); | 2176 gfx::Size layer_bounds(400, 400); |
| 2182 gfx::Size tile_size(100, 100); | 2177 gfx::Size tile_size(100, 100); |
| 2183 | 2178 |
| 2184 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 2179 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 2185 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 2180 FakeRasterSource::CreateFilled(layer_bounds); |
| 2186 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 2181 scoped_refptr<FakeRasterSource> active_raster_source = |
| 2187 FakeDisplayListRasterSource::CreateEmpty(layer_bounds); | 2182 FakeRasterSource::CreateEmpty(layer_bounds); |
| 2188 SetupTreesWithFixedTileSize(pending_raster_source, active_raster_source, | 2183 SetupTreesWithFixedTileSize(pending_raster_source, active_raster_source, |
| 2189 tile_size, Region()); | 2184 tile_size, Region()); |
| 2190 | 2185 |
| 2191 // Active layer can't have tiles. | 2186 // Active layer can't have tiles. |
| 2192 EXPECT_FALSE(active_layer_->CanHaveTilings()); | 2187 EXPECT_FALSE(active_layer_->CanHaveTilings()); |
| 2193 | 2188 |
| 2194 // All high res tiles required. This should be considered identical | 2189 // All high res tiles required. This should be considered identical |
| 2195 // to the case where there is no active layer, to avoid flashing content. | 2190 // to the case where there is no active layer, to avoid flashing content. |
| 2196 // This can happen if a layer exists for a while and switches from | 2191 // This can happen if a layer exists for a while and switches from |
| 2197 // not being able to have content to having content. | 2192 // not being able to have content to having content. |
| 2198 pending_layer_->HighResTiling()->UpdateAllRequiredStateForTesting(); | 2193 pending_layer_->HighResTiling()->UpdateAllRequiredStateForTesting(); |
| 2199 EXPECT_FALSE(pending_layer_->LowResTiling()); | 2194 EXPECT_FALSE(pending_layer_->LowResTiling()); |
| 2200 | 2195 |
| 2201 AssertAllTilesRequired(pending_layer_->HighResTiling()); | 2196 AssertAllTilesRequired(pending_layer_->HighResTiling()); |
| 2202 } | 2197 } |
| 2203 | 2198 |
| 2204 TEST_F(PictureLayerImplTest, HighResRequiredWhenActiveHasDifferentBounds) { | 2199 TEST_F(PictureLayerImplTest, HighResRequiredWhenActiveHasDifferentBounds) { |
| 2205 gfx::Size pending_layer_bounds(400, 400); | 2200 gfx::Size pending_layer_bounds(400, 400); |
| 2206 gfx::Size active_layer_bounds(200, 200); | 2201 gfx::Size active_layer_bounds(200, 200); |
| 2207 gfx::Size tile_size(100, 100); | 2202 gfx::Size tile_size(100, 100); |
| 2208 | 2203 |
| 2209 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 2204 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 2210 FakeDisplayListRasterSource::CreateFilled(pending_layer_bounds); | 2205 FakeRasterSource::CreateFilled(pending_layer_bounds); |
| 2211 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 2206 scoped_refptr<FakeRasterSource> active_raster_source = |
| 2212 FakeDisplayListRasterSource::CreateFilled(active_layer_bounds); | 2207 FakeRasterSource::CreateFilled(active_layer_bounds); |
| 2213 | 2208 |
| 2214 SetupTreesWithFixedTileSize(pending_raster_source, active_raster_source, | 2209 SetupTreesWithFixedTileSize(pending_raster_source, active_raster_source, |
| 2215 tile_size, Region()); | 2210 tile_size, Region()); |
| 2216 | 2211 |
| 2217 // Since the active layer has different bounds, the pending layer needs all | 2212 // Since the active layer has different bounds, the pending layer needs all |
| 2218 // high res tiles in order to activate. | 2213 // high res tiles in order to activate. |
| 2219 pending_layer_->HighResTiling()->UpdateAllRequiredStateForTesting(); | 2214 pending_layer_->HighResTiling()->UpdateAllRequiredStateForTesting(); |
| 2220 EXPECT_FALSE(pending_layer_->LowResTiling()); | 2215 EXPECT_FALSE(pending_layer_->LowResTiling()); |
| 2221 active_layer_->HighResTiling()->UpdateAllRequiredStateForTesting(); | 2216 active_layer_->HighResTiling()->UpdateAllRequiredStateForTesting(); |
| 2222 active_layer_->LowResTiling()->UpdateAllRequiredStateForTesting(); | 2217 active_layer_->LowResTiling()->UpdateAllRequiredStateForTesting(); |
| 2223 | 2218 |
| 2224 AssertAllTilesRequired(pending_layer_->HighResTiling()); | 2219 AssertAllTilesRequired(pending_layer_->HighResTiling()); |
| 2225 AssertAllTilesRequired(active_layer_->HighResTiling()); | 2220 AssertAllTilesRequired(active_layer_->HighResTiling()); |
| 2226 AssertNoTilesRequired(active_layer_->LowResTiling()); | 2221 AssertNoTilesRequired(active_layer_->LowResTiling()); |
| 2227 } | 2222 } |
| 2228 | 2223 |
| 2229 TEST_F(PictureLayerImplTest, ActivateUninitializedLayer) { | 2224 TEST_F(PictureLayerImplTest, ActivateUninitializedLayer) { |
| 2230 gfx::Size layer_bounds(400, 400); | 2225 gfx::Size layer_bounds(400, 400); |
| 2231 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 2226 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 2232 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 2227 FakeRasterSource::CreateFilled(layer_bounds); |
| 2233 | 2228 |
| 2234 host_impl_.CreatePendingTree(); | 2229 host_impl_.CreatePendingTree(); |
| 2235 LayerTreeImpl* pending_tree = host_impl_.pending_tree(); | 2230 LayerTreeImpl* pending_tree = host_impl_.pending_tree(); |
| 2236 | 2231 |
| 2237 scoped_ptr<FakePictureLayerImpl> pending_layer = | 2232 scoped_ptr<FakePictureLayerImpl> pending_layer = |
| 2238 FakePictureLayerImpl::CreateWithRasterSource(pending_tree, id_, | 2233 FakePictureLayerImpl::CreateWithRasterSource(pending_tree, id_, |
| 2239 pending_raster_source); | 2234 pending_raster_source); |
| 2240 pending_layer->SetDrawsContent(true); | 2235 pending_layer->SetDrawsContent(true); |
| 2241 pending_tree->SetRootLayer(std::move(pending_layer)); | 2236 pending_tree->SetRootLayer(std::move(pending_layer)); |
| 2242 | 2237 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 2255 active_layer_ = static_cast<FakePictureLayerImpl*>( | 2250 active_layer_ = static_cast<FakePictureLayerImpl*>( |
| 2256 host_impl_.active_tree()->LayerById(id_)); | 2251 host_impl_.active_tree()->LayerById(id_)); |
| 2257 | 2252 |
| 2258 EXPECT_EQ(0u, active_layer_->num_tilings()); | 2253 EXPECT_EQ(0u, active_layer_->num_tilings()); |
| 2259 EXPECT_EQ(raster_page_scale, active_layer_->raster_page_scale()); | 2254 EXPECT_EQ(raster_page_scale, active_layer_->raster_page_scale()); |
| 2260 } | 2255 } |
| 2261 | 2256 |
| 2262 TEST_F(PictureLayerImplTest, ShareTilesOnNextFrame) { | 2257 TEST_F(PictureLayerImplTest, ShareTilesOnNextFrame) { |
| 2263 gfx::Size layer_bounds(1500, 1500); | 2258 gfx::Size layer_bounds(1500, 1500); |
| 2264 | 2259 |
| 2265 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 2260 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 2266 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 2261 FakeRasterSource::CreateFilled(layer_bounds); |
| 2267 | 2262 |
| 2268 SetupPendingTree(pending_raster_source); | 2263 SetupPendingTree(pending_raster_source); |
| 2269 | 2264 |
| 2270 PictureLayerTiling* tiling = pending_layer_->HighResTiling(); | 2265 PictureLayerTiling* tiling = pending_layer_->HighResTiling(); |
| 2271 gfx::Rect first_invalidate = tiling->TilingDataForTesting().TileBounds(0, 0); | 2266 gfx::Rect first_invalidate = tiling->TilingDataForTesting().TileBounds(0, 0); |
| 2272 first_invalidate.Inset(tiling->TilingDataForTesting().border_texels(), | 2267 first_invalidate.Inset(tiling->TilingDataForTesting().border_texels(), |
| 2273 tiling->TilingDataForTesting().border_texels()); | 2268 tiling->TilingDataForTesting().border_texels()); |
| 2274 gfx::Rect second_invalidate = tiling->TilingDataForTesting().TileBounds(1, 1); | 2269 gfx::Rect second_invalidate = tiling->TilingDataForTesting().TileBounds(1, 1); |
| 2275 second_invalidate.Inset(tiling->TilingDataForTesting().border_texels(), | 2270 second_invalidate.Inset(tiling->TilingDataForTesting().border_texels(), |
| 2276 tiling->TilingDataForTesting().border_texels()); | 2271 tiling->TilingDataForTesting().border_texels()); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2335 | 2330 |
| 2336 EXPECT_FALSE(pending_tiling->TileAt(0, 0)); | 2331 EXPECT_FALSE(pending_tiling->TileAt(0, 0)); |
| 2337 EXPECT_FALSE(pending_tiling->TileAt(1, 0)); | 2332 EXPECT_FALSE(pending_tiling->TileAt(1, 0)); |
| 2338 EXPECT_FALSE(pending_tiling->TileAt(0, 1)); | 2333 EXPECT_FALSE(pending_tiling->TileAt(0, 1)); |
| 2339 EXPECT_FALSE(pending_tiling->TileAt(1, 1)); | 2334 EXPECT_FALSE(pending_tiling->TileAt(1, 1)); |
| 2340 } | 2335 } |
| 2341 | 2336 |
| 2342 TEST_F(PictureLayerImplTest, ShareInvalidActiveTreeTiles) { | 2337 TEST_F(PictureLayerImplTest, ShareInvalidActiveTreeTiles) { |
| 2343 gfx::Size layer_bounds(1500, 1500); | 2338 gfx::Size layer_bounds(1500, 1500); |
| 2344 | 2339 |
| 2345 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 2340 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 2346 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 2341 FakeRasterSource::CreateFilled(layer_bounds); |
| 2347 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 2342 scoped_refptr<FakeRasterSource> active_raster_source = |
| 2348 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 2343 FakeRasterSource::CreateFilled(layer_bounds); |
| 2349 SetupTreesWithInvalidation(pending_raster_source, active_raster_source, | 2344 SetupTreesWithInvalidation(pending_raster_source, active_raster_source, |
| 2350 gfx::Rect(1, 1)); | 2345 gfx::Rect(1, 1)); |
| 2351 // Activate the invalidation. | 2346 // Activate the invalidation. |
| 2352 ActivateTree(); | 2347 ActivateTree(); |
| 2353 // Make another pending tree without any invalidation in it. | 2348 // Make another pending tree without any invalidation in it. |
| 2354 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source2 = | 2349 scoped_refptr<FakeRasterSource> pending_raster_source2 = |
| 2355 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 2350 FakeRasterSource::CreateFilled(layer_bounds); |
| 2356 SetupPendingTree(pending_raster_source2); | 2351 SetupPendingTree(pending_raster_source2); |
| 2357 | 2352 |
| 2358 EXPECT_GE(active_layer_->num_tilings(), 1u); | 2353 EXPECT_GE(active_layer_->num_tilings(), 1u); |
| 2359 EXPECT_GE(pending_layer_->num_tilings(), 1u); | 2354 EXPECT_GE(pending_layer_->num_tilings(), 1u); |
| 2360 | 2355 |
| 2361 // The active tree invalidation was handled by the active tiles. | 2356 // The active tree invalidation was handled by the active tiles. |
| 2362 PictureLayerTiling* active_tiling = active_layer_->tilings()->tiling_at(0); | 2357 PictureLayerTiling* active_tiling = active_layer_->tilings()->tiling_at(0); |
| 2363 PictureLayerTiling* pending_tiling = pending_layer_->tilings()->tiling_at(0); | 2358 PictureLayerTiling* pending_tiling = pending_layer_->tilings()->tiling_at(0); |
| 2364 ASSERT_TRUE(active_tiling); | 2359 ASSERT_TRUE(active_tiling); |
| 2365 ASSERT_TRUE(pending_tiling); | 2360 ASSERT_TRUE(pending_tiling); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2400 EXPECT_FALSE(pending_tiling->TileAt(1, 1)); | 2395 EXPECT_FALSE(pending_tiling->TileAt(1, 1)); |
| 2401 | 2396 |
| 2402 EXPECT_NE(active_tiling->TileAt(0, 0), pending_tiling->TileAt(0, 0)); | 2397 EXPECT_NE(active_tiling->TileAt(0, 0), pending_tiling->TileAt(0, 0)); |
| 2403 } | 2398 } |
| 2404 | 2399 |
| 2405 TEST_F(PictureLayerImplTest, SyncTilingAfterGpuRasterizationToggles) { | 2400 TEST_F(PictureLayerImplTest, SyncTilingAfterGpuRasterizationToggles) { |
| 2406 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 2401 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 2407 | 2402 |
| 2408 gfx::Size layer_bounds(10, 10); | 2403 gfx::Size layer_bounds(10, 10); |
| 2409 | 2404 |
| 2410 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 2405 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 2411 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 2406 FakeRasterSource::CreateFilled(layer_bounds); |
| 2412 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 2407 scoped_refptr<FakeRasterSource> active_raster_source = |
| 2413 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 2408 FakeRasterSource::CreateFilled(layer_bounds); |
| 2414 | 2409 |
| 2415 SetupTrees(pending_raster_source, active_raster_source); | 2410 SetupTrees(pending_raster_source, active_raster_source); |
| 2416 | 2411 |
| 2417 EXPECT_TRUE(pending_layer_->tilings()->FindTilingWithScale(1.f)); | 2412 EXPECT_TRUE(pending_layer_->tilings()->FindTilingWithScale(1.f)); |
| 2418 EXPECT_TRUE(active_layer_->tilings()->FindTilingWithScale(1.f)); | 2413 EXPECT_TRUE(active_layer_->tilings()->FindTilingWithScale(1.f)); |
| 2419 | 2414 |
| 2420 // Gpu rasterization is disabled by default. | 2415 // Gpu rasterization is disabled by default. |
| 2421 EXPECT_FALSE(host_impl_.use_gpu_rasterization()); | 2416 EXPECT_FALSE(host_impl_.use_gpu_rasterization()); |
| 2422 // Toggling the gpu rasterization clears all tilings on both trees. | 2417 // Toggling the gpu rasterization clears all tilings on both trees. |
| 2423 host_impl_.SetHasGpuRasterizationTrigger(true); | 2418 host_impl_.SetHasGpuRasterizationTrigger(true); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 2451 host_impl_.SetHasGpuRasterizationTrigger(true); | 2446 host_impl_.SetHasGpuRasterizationTrigger(true); |
| 2452 host_impl_.SetContentIsSuitableForGpuRasterization(false); | 2447 host_impl_.SetContentIsSuitableForGpuRasterization(false); |
| 2453 EXPECT_EQ(GpuRasterizationStatus::OFF_CONTENT, | 2448 EXPECT_EQ(GpuRasterizationStatus::OFF_CONTENT, |
| 2454 host_impl_.gpu_rasterization_status()); | 2449 host_impl_.gpu_rasterization_status()); |
| 2455 } | 2450 } |
| 2456 | 2451 |
| 2457 TEST_F(PictureLayerImplTest, HighResCreatedWhenBoundsShrink) { | 2452 TEST_F(PictureLayerImplTest, HighResCreatedWhenBoundsShrink) { |
| 2458 // Put 0.5 as high res. | 2453 // Put 0.5 as high res. |
| 2459 SetInitialDeviceScaleFactor(0.5f); | 2454 SetInitialDeviceScaleFactor(0.5f); |
| 2460 | 2455 |
| 2461 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 2456 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 2462 FakeDisplayListRasterSource::CreateFilled(gfx::Size(10, 10)); | 2457 FakeRasterSource::CreateFilled(gfx::Size(10, 10)); |
| 2463 SetupPendingTree(pending_raster_source); | 2458 SetupPendingTree(pending_raster_source); |
| 2464 | 2459 |
| 2465 // Sanity checks. | 2460 // Sanity checks. |
| 2466 EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings()); | 2461 EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings()); |
| 2467 EXPECT_TRUE(pending_layer_->tilings()->FindTilingWithScale(0.5f)); | 2462 EXPECT_TRUE(pending_layer_->tilings()->FindTilingWithScale(0.5f)); |
| 2468 | 2463 |
| 2469 ActivateTree(); | 2464 ActivateTree(); |
| 2470 | 2465 |
| 2471 // Now, set the bounds to be 1x1, so that minimum contents scale becomes 1. | 2466 // Now, set the bounds to be 1x1, so that minimum contents scale becomes 1. |
| 2472 pending_raster_source = | 2467 pending_raster_source = FakeRasterSource::CreateFilled(gfx::Size(1, 1)); |
| 2473 FakeDisplayListRasterSource::CreateFilled(gfx::Size(1, 1)); | |
| 2474 SetupPendingTree(pending_raster_source); | 2468 SetupPendingTree(pending_raster_source); |
| 2475 | 2469 |
| 2476 // Another sanity check. | 2470 // Another sanity check. |
| 2477 EXPECT_EQ(1.f, pending_layer_->MinimumContentsScale()); | 2471 EXPECT_EQ(1.f, pending_layer_->MinimumContentsScale()); |
| 2478 | 2472 |
| 2479 // Since the MinContentsScale is 1, the 0.5 tiling should have been replaced | 2473 // Since the MinContentsScale is 1, the 0.5 tiling should have been replaced |
| 2480 // by a 1.0 tiling during the UDP in SetupPendingTree. | 2474 // by a 1.0 tiling during the UDP in SetupPendingTree. |
| 2481 EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings()); | 2475 EXPECT_EQ(1u, pending_layer_->tilings()->num_tilings()); |
| 2482 PictureLayerTiling* tiling = | 2476 PictureLayerTiling* tiling = |
| 2483 pending_layer_->tilings()->FindTilingWithScale(1.0f); | 2477 pending_layer_->tilings()->FindTilingWithScale(1.0f); |
| (...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2879 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 4.f); | 2873 EXPECT_BOTH_EQ(HighResTiling()->contents_scale(), 4.f); |
| 2880 } | 2874 } |
| 2881 | 2875 |
| 2882 TEST_F(PictureLayerImplTest, TilingSetRasterQueue) { | 2876 TEST_F(PictureLayerImplTest, TilingSetRasterQueue) { |
| 2883 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 2877 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 2884 | 2878 |
| 2885 host_impl_.SetViewportSize(gfx::Size(500, 500)); | 2879 host_impl_.SetViewportSize(gfx::Size(500, 500)); |
| 2886 | 2880 |
| 2887 gfx::Size layer_bounds(1000, 1000); | 2881 gfx::Size layer_bounds(1000, 1000); |
| 2888 | 2882 |
| 2889 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 2883 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 2890 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 2884 FakeRasterSource::CreateFilled(layer_bounds); |
| 2891 | 2885 |
| 2892 SetupPendingTree(pending_raster_source); | 2886 SetupPendingTree(pending_raster_source); |
| 2893 EXPECT_EQ(1u, pending_layer_->num_tilings()); | 2887 EXPECT_EQ(1u, pending_layer_->num_tilings()); |
| 2894 | 2888 |
| 2895 std::set<Tile*> unique_tiles; | 2889 std::set<Tile*> unique_tiles; |
| 2896 bool reached_prepaint = false; | 2890 bool reached_prepaint = false; |
| 2897 int non_ideal_tile_count = 0u; | 2891 int non_ideal_tile_count = 0u; |
| 2898 int low_res_tile_count = 0u; | 2892 int low_res_tile_count = 0u; |
| 2899 int high_res_tile_count = 0u; | 2893 int high_res_tile_count = 0u; |
| 2900 int high_res_now_tiles = 0u; | 2894 int high_res_now_tiles = 0u; |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3011 EXPECT_TRUE(queue->IsEmpty()); | 3005 EXPECT_TRUE(queue->IsEmpty()); |
| 3012 } | 3006 } |
| 3013 | 3007 |
| 3014 TEST_F(PictureLayerImplTest, TilingSetRasterQueueActiveTree) { | 3008 TEST_F(PictureLayerImplTest, TilingSetRasterQueueActiveTree) { |
| 3015 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 3009 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 3016 | 3010 |
| 3017 host_impl_.SetViewportSize(gfx::Size(500, 500)); | 3011 host_impl_.SetViewportSize(gfx::Size(500, 500)); |
| 3018 | 3012 |
| 3019 gfx::Size layer_bounds(1000, 1000); | 3013 gfx::Size layer_bounds(1000, 1000); |
| 3020 | 3014 |
| 3021 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 3015 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 3022 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 3016 FakeRasterSource::CreateFilled(layer_bounds); |
| 3023 | 3017 |
| 3024 SetupPendingTree(pending_raster_source); | 3018 SetupPendingTree(pending_raster_source); |
| 3025 ActivateTree(); | 3019 ActivateTree(); |
| 3026 EXPECT_EQ(2u, active_layer_->num_tilings()); | 3020 EXPECT_EQ(2u, active_layer_->num_tilings()); |
| 3027 | 3021 |
| 3028 scoped_ptr<TilingSetRasterQueueRequired> queue( | 3022 scoped_ptr<TilingSetRasterQueueRequired> queue( |
| 3029 new TilingSetRasterQueueRequired( | 3023 new TilingSetRasterQueueRequired( |
| 3030 active_layer_->picture_layer_tiling_set(), | 3024 active_layer_->picture_layer_tiling_set(), |
| 3031 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW)); | 3025 RasterTilePriorityQueue::Type::REQUIRED_FOR_DRAW)); |
| 3032 EXPECT_FALSE(queue->IsEmpty()); | 3026 EXPECT_FALSE(queue->IsEmpty()); |
| 3033 while (!queue->IsEmpty()) { | 3027 while (!queue->IsEmpty()) { |
| 3034 PrioritizedTile prioritized_tile = queue->Top(); | 3028 PrioritizedTile prioritized_tile = queue->Top(); |
| 3035 EXPECT_TRUE(prioritized_tile.tile()->required_for_draw()); | 3029 EXPECT_TRUE(prioritized_tile.tile()->required_for_draw()); |
| 3036 EXPECT_FALSE(prioritized_tile.tile()->draw_info().IsReadyToDraw()); | 3030 EXPECT_FALSE(prioritized_tile.tile()->draw_info().IsReadyToDraw()); |
| 3037 queue->Pop(); | 3031 queue->Pop(); |
| 3038 } | 3032 } |
| 3039 | 3033 |
| 3040 queue.reset(new TilingSetRasterQueueRequired( | 3034 queue.reset(new TilingSetRasterQueueRequired( |
| 3041 active_layer_->picture_layer_tiling_set(), | 3035 active_layer_->picture_layer_tiling_set(), |
| 3042 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION)); | 3036 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION)); |
| 3043 EXPECT_TRUE(queue->IsEmpty()); | 3037 EXPECT_TRUE(queue->IsEmpty()); |
| 3044 } | 3038 } |
| 3045 | 3039 |
| 3046 TEST_F(PictureLayerImplTest, TilingSetRasterQueueRequiredNoHighRes) { | 3040 TEST_F(PictureLayerImplTest, TilingSetRasterQueueRequiredNoHighRes) { |
| 3047 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 3041 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 3048 FakeDisplayListRasterSource::CreateFilledSolidColor( | 3042 FakeRasterSource::CreateFilledSolidColor(gfx::Size(1024, 1024)); |
| 3049 gfx::Size(1024, 1024)); | |
| 3050 | 3043 |
| 3051 SetupPendingTree(pending_raster_source); | 3044 SetupPendingTree(pending_raster_source); |
| 3052 EXPECT_FALSE( | 3045 EXPECT_FALSE( |
| 3053 pending_layer_->picture_layer_tiling_set()->FindTilingWithResolution( | 3046 pending_layer_->picture_layer_tiling_set()->FindTilingWithResolution( |
| 3054 HIGH_RESOLUTION)); | 3047 HIGH_RESOLUTION)); |
| 3055 | 3048 |
| 3056 scoped_ptr<TilingSetRasterQueueRequired> queue( | 3049 scoped_ptr<TilingSetRasterQueueRequired> queue( |
| 3057 new TilingSetRasterQueueRequired( | 3050 new TilingSetRasterQueueRequired( |
| 3058 pending_layer_->picture_layer_tiling_set(), | 3051 pending_layer_->picture_layer_tiling_set(), |
| 3059 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION)); | 3052 RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION)); |
| 3060 EXPECT_TRUE(queue->IsEmpty()); | 3053 EXPECT_TRUE(queue->IsEmpty()); |
| 3061 } | 3054 } |
| 3062 | 3055 |
| 3063 TEST_F(PictureLayerImplTest, TilingSetEvictionQueue) { | 3056 TEST_F(PictureLayerImplTest, TilingSetEvictionQueue) { |
| 3064 gfx::Size layer_bounds(1000, 1000); | 3057 gfx::Size layer_bounds(1000, 1000); |
| 3065 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; | 3058 float low_res_factor = host_impl_.settings().low_res_contents_scale_factor; |
| 3066 | 3059 |
| 3067 host_impl_.SetViewportSize(gfx::Size(500, 500)); | 3060 host_impl_.SetViewportSize(gfx::Size(500, 500)); |
| 3068 | 3061 |
| 3069 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 3062 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 3070 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 3063 FakeRasterSource::CreateFilled(layer_bounds); |
| 3071 | 3064 |
| 3072 // TODO(vmpstr): Add a test with tilings other than high res on the active | 3065 // TODO(vmpstr): Add a test with tilings other than high res on the active |
| 3073 // tree (crbug.com/519607). | 3066 // tree (crbug.com/519607). |
| 3074 SetupPendingTree(pending_raster_source); | 3067 SetupPendingTree(pending_raster_source); |
| 3075 EXPECT_EQ(1u, pending_layer_->num_tilings()); | 3068 EXPECT_EQ(1u, pending_layer_->num_tilings()); |
| 3076 | 3069 |
| 3077 std::vector<Tile*> all_tiles; | 3070 std::vector<Tile*> all_tiles; |
| 3078 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { | 3071 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { |
| 3079 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); | 3072 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); |
| 3080 std::vector<Tile*> tiles = tiling->AllTilesForTesting(); | 3073 std::vector<Tile*> tiles = tiling->AllTilesForTesting(); |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3204 } | 3197 } |
| 3205 | 3198 |
| 3206 TEST_F(PictureLayerImplTest, Occlusion) { | 3199 TEST_F(PictureLayerImplTest, Occlusion) { |
| 3207 gfx::Size tile_size(102, 102); | 3200 gfx::Size tile_size(102, 102); |
| 3208 gfx::Size layer_bounds(1000, 1000); | 3201 gfx::Size layer_bounds(1000, 1000); |
| 3209 gfx::Size viewport_size(1000, 1000); | 3202 gfx::Size viewport_size(1000, 1000); |
| 3210 | 3203 |
| 3211 LayerTestCommon::LayerImplTest impl; | 3204 LayerTestCommon::LayerImplTest impl; |
| 3212 host_impl_.SetViewportSize(viewport_size); | 3205 host_impl_.SetViewportSize(viewport_size); |
| 3213 | 3206 |
| 3214 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 3207 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 3215 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 3208 FakeRasterSource::CreateFilled(layer_bounds); |
| 3216 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); | 3209 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); |
| 3217 ActivateTree(); | 3210 ActivateTree(); |
| 3218 | 3211 |
| 3219 std::vector<Tile*> tiles = | 3212 std::vector<Tile*> tiles = |
| 3220 active_layer_->HighResTiling()->AllTilesForTesting(); | 3213 active_layer_->HighResTiling()->AllTilesForTesting(); |
| 3221 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); | 3214 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); |
| 3222 | 3215 |
| 3223 { | 3216 { |
| 3224 SCOPED_TRACE("No occlusion"); | 3217 SCOPED_TRACE("No occlusion"); |
| 3225 gfx::Rect occluded; | 3218 gfx::Rect occluded; |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3489 | 3482 |
| 3490 AssertAllTilesRequired(active_layer_->HighResTiling()); | 3483 AssertAllTilesRequired(active_layer_->HighResTiling()); |
| 3491 if (host_impl_.settings().create_low_res_tiling) | 3484 if (host_impl_.settings().create_low_res_tiling) |
| 3492 AssertNoTilesRequired(active_layer_->LowResTiling()); | 3485 AssertNoTilesRequired(active_layer_->LowResTiling()); |
| 3493 } | 3486 } |
| 3494 | 3487 |
| 3495 TEST_F(NoLowResPictureLayerImplTest, NothingRequiredIfActiveMissingTiles) { | 3488 TEST_F(NoLowResPictureLayerImplTest, NothingRequiredIfActiveMissingTiles) { |
| 3496 gfx::Size layer_bounds(400, 400); | 3489 gfx::Size layer_bounds(400, 400); |
| 3497 gfx::Size tile_size(100, 100); | 3490 gfx::Size tile_size(100, 100); |
| 3498 | 3491 |
| 3499 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 3492 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 3500 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 3493 FakeRasterSource::CreateFilled(layer_bounds); |
| 3501 // This raster source will create tilings, but has no recordings so will not | 3494 // This raster source will create tilings, but has no recordings so will not |
| 3502 // create any tiles. This is attempting to simulate scrolling past the end of | 3495 // create any tiles. This is attempting to simulate scrolling past the end of |
| 3503 // recorded content on the active layer, where the recordings are so far away | 3496 // recorded content on the active layer, where the recordings are so far away |
| 3504 // that no tiles are created. | 3497 // that no tiles are created. |
| 3505 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 3498 scoped_refptr<FakeRasterSource> active_raster_source = |
| 3506 FakeDisplayListRasterSource::CreatePartiallyFilled(layer_bounds, | 3499 FakeRasterSource::CreatePartiallyFilled(layer_bounds, gfx::Rect()); |
| 3507 gfx::Rect()); | |
| 3508 | 3500 |
| 3509 SetupTreesWithFixedTileSize(pending_raster_source, active_raster_source, | 3501 SetupTreesWithFixedTileSize(pending_raster_source, active_raster_source, |
| 3510 tile_size, Region()); | 3502 tile_size, Region()); |
| 3511 | 3503 |
| 3512 // Active layer has tilings, but no tiles due to missing recordings. | 3504 // Active layer has tilings, but no tiles due to missing recordings. |
| 3513 EXPECT_TRUE(active_layer_->CanHaveTilings()); | 3505 EXPECT_TRUE(active_layer_->CanHaveTilings()); |
| 3514 EXPECT_EQ(active_layer_->tilings()->num_tilings(), | 3506 EXPECT_EQ(active_layer_->tilings()->num_tilings(), |
| 3515 host_impl_.settings().create_low_res_tiling ? 2u : 1u); | 3507 host_impl_.settings().create_low_res_tiling ? 2u : 1u); |
| 3516 EXPECT_EQ(active_layer_->HighResTiling()->AllTilesForTesting().size(), 0u); | 3508 EXPECT_EQ(active_layer_->HighResTiling()->AllTilesForTesting().size(), 0u); |
| 3517 | 3509 |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3720 } | 3712 } |
| 3721 }; | 3713 }; |
| 3722 | 3714 |
| 3723 TEST_F(PictureLayerImplTestWithDelegatingRenderer, | 3715 TEST_F(PictureLayerImplTestWithDelegatingRenderer, |
| 3724 DelegatingRendererWithTileOOM) { | 3716 DelegatingRendererWithTileOOM) { |
| 3725 // This test is added for crbug.com/402321, where quad should be produced when | 3717 // This test is added for crbug.com/402321, where quad should be produced when |
| 3726 // raster on demand is not allowed and tile is OOM. | 3718 // raster on demand is not allowed and tile is OOM. |
| 3727 gfx::Size layer_bounds(1000, 1000); | 3719 gfx::Size layer_bounds(1000, 1000); |
| 3728 | 3720 |
| 3729 // Create tiles. | 3721 // Create tiles. |
| 3730 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 3722 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 3731 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 3723 FakeRasterSource::CreateFilled(layer_bounds); |
| 3732 SetupPendingTree(pending_raster_source); | 3724 SetupPendingTree(pending_raster_source); |
| 3733 pending_layer_->SetBounds(layer_bounds); | 3725 pending_layer_->SetBounds(layer_bounds); |
| 3734 ActivateTree(); | 3726 ActivateTree(); |
| 3735 bool update_lcd_text = false; | 3727 bool update_lcd_text = false; |
| 3736 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); | 3728 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); |
| 3737 std::vector<Tile*> tiles = | 3729 std::vector<Tile*> tiles = |
| 3738 active_layer_->HighResTiling()->AllTilesForTesting(); | 3730 active_layer_->HighResTiling()->AllTilesForTesting(); |
| 3739 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); | 3731 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); |
| 3740 | 3732 |
| 3741 // Force tiles after max_tiles to be OOM. TileManager uses | 3733 // Force tiles after max_tiles to be OOM. TileManager uses |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3827 OccludedTilesSkippedDuringRasterization) { | 3819 OccludedTilesSkippedDuringRasterization) { |
| 3828 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 3820 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 3829 | 3821 |
| 3830 gfx::Size tile_size(102, 102); | 3822 gfx::Size tile_size(102, 102); |
| 3831 gfx::Size layer_bounds(1000, 1000); | 3823 gfx::Size layer_bounds(1000, 1000); |
| 3832 gfx::Size viewport_size(500, 500); | 3824 gfx::Size viewport_size(500, 500); |
| 3833 gfx::PointF occluding_layer_position(310.f, 0.f); | 3825 gfx::PointF occluding_layer_position(310.f, 0.f); |
| 3834 | 3826 |
| 3835 host_impl_.SetViewportSize(viewport_size); | 3827 host_impl_.SetViewportSize(viewport_size); |
| 3836 | 3828 |
| 3837 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 3829 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 3838 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 3830 FakeRasterSource::CreateFilled(layer_bounds); |
| 3839 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); | 3831 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); |
| 3840 | 3832 |
| 3841 // No occlusion. | 3833 // No occlusion. |
| 3842 int unoccluded_tile_count = 0; | 3834 int unoccluded_tile_count = 0; |
| 3843 scoped_ptr<TilingSetRasterQueueAll> queue(new TilingSetRasterQueueAll( | 3835 scoped_ptr<TilingSetRasterQueueAll> queue(new TilingSetRasterQueueAll( |
| 3844 pending_layer_->picture_layer_tiling_set(), false)); | 3836 pending_layer_->picture_layer_tiling_set(), false)); |
| 3845 while (!queue->IsEmpty()) { | 3837 while (!queue->IsEmpty()) { |
| 3846 PrioritizedTile prioritized_tile = queue->Top(); | 3838 PrioritizedTile prioritized_tile = queue->Top(); |
| 3847 Tile* tile = prioritized_tile.tile(); | 3839 Tile* tile = prioritized_tile.tile(); |
| 3848 | 3840 |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3919 OccludedTilesNotMarkedAsRequired) { | 3911 OccludedTilesNotMarkedAsRequired) { |
| 3920 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 3912 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 3921 | 3913 |
| 3922 gfx::Size tile_size(102, 102); | 3914 gfx::Size tile_size(102, 102); |
| 3923 gfx::Size layer_bounds(1000, 1000); | 3915 gfx::Size layer_bounds(1000, 1000); |
| 3924 gfx::Size viewport_size(500, 500); | 3916 gfx::Size viewport_size(500, 500); |
| 3925 gfx::PointF occluding_layer_position(310.f, 0.f); | 3917 gfx::PointF occluding_layer_position(310.f, 0.f); |
| 3926 | 3918 |
| 3927 host_impl_.SetViewportSize(viewport_size); | 3919 host_impl_.SetViewportSize(viewport_size); |
| 3928 | 3920 |
| 3929 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 3921 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 3930 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 3922 FakeRasterSource::CreateFilled(layer_bounds); |
| 3931 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); | 3923 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); |
| 3932 | 3924 |
| 3933 // No occlusion. | 3925 // No occlusion. |
| 3934 int occluded_tile_count = 0; | 3926 int occluded_tile_count = 0; |
| 3935 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { | 3927 for (size_t i = 0; i < pending_layer_->num_tilings(); ++i) { |
| 3936 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); | 3928 PictureLayerTiling* tiling = pending_layer_->tilings()->tiling_at(i); |
| 3937 auto prioritized_tiles = | 3929 auto prioritized_tiles = |
| 3938 tiling->UpdateAndGetAllPrioritizedTilesForTesting(); | 3930 tiling->UpdateAndGetAllPrioritizedTilesForTesting(); |
| 3939 | 3931 |
| 3940 occluded_tile_count = 0; | 3932 occluded_tile_count = 0; |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4037 } | 4029 } |
| 4038 | 4030 |
| 4039 TEST_F(OcclusionTrackingPictureLayerImplTest, OcclusionForDifferentScales) { | 4031 TEST_F(OcclusionTrackingPictureLayerImplTest, OcclusionForDifferentScales) { |
| 4040 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 4032 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 4041 | 4033 |
| 4042 gfx::Size tile_size(102, 102); | 4034 gfx::Size tile_size(102, 102); |
| 4043 gfx::Size layer_bounds(1000, 1000); | 4035 gfx::Size layer_bounds(1000, 1000); |
| 4044 gfx::Size viewport_size(500, 500); | 4036 gfx::Size viewport_size(500, 500); |
| 4045 gfx::PointF occluding_layer_position(310.f, 0.f); | 4037 gfx::PointF occluding_layer_position(310.f, 0.f); |
| 4046 | 4038 |
| 4047 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 4039 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 4048 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 4040 FakeRasterSource::CreateFilled(layer_bounds); |
| 4049 | 4041 |
| 4050 host_impl_.SetViewportSize(viewport_size); | 4042 host_impl_.SetViewportSize(viewport_size); |
| 4051 | 4043 |
| 4052 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); | 4044 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); |
| 4053 ASSERT_TRUE(pending_layer_->CanHaveTilings()); | 4045 ASSERT_TRUE(pending_layer_->CanHaveTilings()); |
| 4054 | 4046 |
| 4055 pending_layer_->AddChild(LayerImpl::Create(host_impl_.pending_tree(), 1)); | 4047 pending_layer_->AddChild(LayerImpl::Create(host_impl_.pending_tree(), 1)); |
| 4056 LayerImpl* layer1 = pending_layer_->children()[0]; | 4048 LayerImpl* layer1 = pending_layer_->children()[0]; |
| 4057 layer1->SetBounds(layer_bounds); | 4049 layer1->SetBounds(layer_bounds); |
| 4058 layer1->SetDrawsContent(true); | 4050 layer1->SetDrawsContent(true); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4111 } | 4103 } |
| 4112 } | 4104 } |
| 4113 } | 4105 } |
| 4114 | 4106 |
| 4115 TEST_F(OcclusionTrackingPictureLayerImplTest, DifferentOcclusionOnTrees) { | 4107 TEST_F(OcclusionTrackingPictureLayerImplTest, DifferentOcclusionOnTrees) { |
| 4116 gfx::Size layer_bounds(1000, 1000); | 4108 gfx::Size layer_bounds(1000, 1000); |
| 4117 gfx::Size viewport_size(1000, 1000); | 4109 gfx::Size viewport_size(1000, 1000); |
| 4118 gfx::PointF occluding_layer_position(310.f, 0.f); | 4110 gfx::PointF occluding_layer_position(310.f, 0.f); |
| 4119 gfx::Rect invalidation_rect(230, 230, 102, 102); | 4111 gfx::Rect invalidation_rect(230, 230, 102, 102); |
| 4120 | 4112 |
| 4121 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 4113 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 4122 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 4114 FakeRasterSource::CreateFilled(layer_bounds); |
| 4123 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 4115 scoped_refptr<FakeRasterSource> active_raster_source = |
| 4124 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 4116 FakeRasterSource::CreateFilled(layer_bounds); |
| 4125 | 4117 |
| 4126 host_impl_.SetViewportSize(viewport_size); | 4118 host_impl_.SetViewportSize(viewport_size); |
| 4127 SetupPendingTree(active_raster_source); | 4119 SetupPendingTree(active_raster_source); |
| 4128 | 4120 |
| 4129 // Partially occlude the active layer. | 4121 // Partially occlude the active layer. |
| 4130 pending_layer_->AddChild(LayerImpl::Create(host_impl_.pending_tree(), 2)); | 4122 pending_layer_->AddChild(LayerImpl::Create(host_impl_.pending_tree(), 2)); |
| 4131 LayerImpl* layer1 = pending_layer_->children()[0]; | 4123 LayerImpl* layer1 = pending_layer_->children()[0]; |
| 4132 layer1->SetBounds(layer_bounds); | 4124 layer1->SetBounds(layer_bounds); |
| 4133 layer1->SetDrawsContent(true); | 4125 layer1->SetDrawsContent(true); |
| 4134 layer1->SetContentsOpaque(true); | 4126 layer1->SetContentsOpaque(true); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4205 gfx::Size tile_size(102, 102); | 4197 gfx::Size tile_size(102, 102); |
| 4206 gfx::Size layer_bounds(1000, 1000); | 4198 gfx::Size layer_bounds(1000, 1000); |
| 4207 gfx::Size viewport_size(1000, 1000); | 4199 gfx::Size viewport_size(1000, 1000); |
| 4208 gfx::PointF pending_occluding_layer_position(310.f, 0.f); | 4200 gfx::PointF pending_occluding_layer_position(310.f, 0.f); |
| 4209 gfx::PointF active_occluding_layer_position(0.f, 310.f); | 4201 gfx::PointF active_occluding_layer_position(0.f, 310.f); |
| 4210 gfx::Rect invalidation_rect(230, 230, 152, 152); | 4202 gfx::Rect invalidation_rect(230, 230, 152, 152); |
| 4211 | 4203 |
| 4212 host_impl_.SetViewportSize(viewport_size); | 4204 host_impl_.SetViewportSize(viewport_size); |
| 4213 SetInitialDeviceScaleFactor(2.f); | 4205 SetInitialDeviceScaleFactor(2.f); |
| 4214 | 4206 |
| 4215 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 4207 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 4216 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 4208 FakeRasterSource::CreateFilled(layer_bounds); |
| 4217 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 4209 scoped_refptr<FakeRasterSource> active_raster_source = |
| 4218 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 4210 FakeRasterSource::CreateFilled(layer_bounds); |
| 4219 | 4211 |
| 4220 SetupPendingTreeWithFixedTileSize(active_raster_source, tile_size, Region()); | 4212 SetupPendingTreeWithFixedTileSize(active_raster_source, tile_size, Region()); |
| 4221 | 4213 |
| 4222 // Partially occlude the active layer. | 4214 // Partially occlude the active layer. |
| 4223 pending_layer_->AddChild(LayerImpl::Create(host_impl_.pending_tree(), 2)); | 4215 pending_layer_->AddChild(LayerImpl::Create(host_impl_.pending_tree(), 2)); |
| 4224 LayerImpl* active_occluding_layer = pending_layer_->children()[0]; | 4216 LayerImpl* active_occluding_layer = pending_layer_->children()[0]; |
| 4225 active_occluding_layer->SetBounds(layer_bounds); | 4217 active_occluding_layer->SetBounds(layer_bounds); |
| 4226 active_occluding_layer->SetDrawsContent(true); | 4218 active_occluding_layer->SetDrawsContent(true); |
| 4227 active_occluding_layer->SetContentsOpaque(true); | 4219 active_occluding_layer->SetContentsOpaque(true); |
| 4228 active_occluding_layer->SetPosition(active_occluding_layer_position); | 4220 active_occluding_layer->SetPosition(active_occluding_layer_position); |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4344 total_expected_occluded_tile_count_on_trees[ACTIVE_TREE], __LINE__); | 4336 total_expected_occluded_tile_count_on_trees[ACTIVE_TREE], __LINE__); |
| 4345 VerifyEvictionConsidersOcclusion( | 4337 VerifyEvictionConsidersOcclusion( |
| 4346 pending_layer_, PENDING_TREE, | 4338 pending_layer_, PENDING_TREE, |
| 4347 total_expected_occluded_tile_count_on_trees[PENDING_TREE], __LINE__); | 4339 total_expected_occluded_tile_count_on_trees[PENDING_TREE], __LINE__); |
| 4348 pending_layer_->set_has_valid_tile_priorities(true); | 4340 pending_layer_->set_has_valid_tile_priorities(true); |
| 4349 } | 4341 } |
| 4350 | 4342 |
| 4351 TEST_F(PictureLayerImplTest, PendingOrActiveTwinLayer) { | 4343 TEST_F(PictureLayerImplTest, PendingOrActiveTwinLayer) { |
| 4352 gfx::Size layer_bounds(1000, 1000); | 4344 gfx::Size layer_bounds(1000, 1000); |
| 4353 | 4345 |
| 4354 scoped_refptr<FakeDisplayListRasterSource> raster_source = | 4346 scoped_refptr<FakeRasterSource> raster_source = |
| 4355 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 4347 FakeRasterSource::CreateFilled(layer_bounds); |
| 4356 SetupPendingTree(raster_source); | 4348 SetupPendingTree(raster_source); |
| 4357 EXPECT_FALSE(pending_layer_->GetPendingOrActiveTwinLayer()); | 4349 EXPECT_FALSE(pending_layer_->GetPendingOrActiveTwinLayer()); |
| 4358 | 4350 |
| 4359 ActivateTree(); | 4351 ActivateTree(); |
| 4360 EXPECT_FALSE(active_layer_->GetPendingOrActiveTwinLayer()); | 4352 EXPECT_FALSE(active_layer_->GetPendingOrActiveTwinLayer()); |
| 4361 | 4353 |
| 4362 SetupPendingTree(raster_source); | 4354 SetupPendingTree(raster_source); |
| 4363 EXPECT_TRUE(pending_layer_->GetPendingOrActiveTwinLayer()); | 4355 EXPECT_TRUE(pending_layer_->GetPendingOrActiveTwinLayer()); |
| 4364 EXPECT_TRUE(active_layer_->GetPendingOrActiveTwinLayer()); | 4356 EXPECT_TRUE(active_layer_->GetPendingOrActiveTwinLayer()); |
| 4365 EXPECT_EQ(pending_layer_, active_layer_->GetPendingOrActiveTwinLayer()); | 4357 EXPECT_EQ(pending_layer_, active_layer_->GetPendingOrActiveTwinLayer()); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 4394 | 4386 |
| 4395 int frame_number = 0; | 4387 int frame_number = 0; |
| 4396 | 4388 |
| 4397 client.set_fill_with_nonsolid_color(!test_for_solid); | 4389 client.set_fill_with_nonsolid_color(!test_for_solid); |
| 4398 | 4390 |
| 4399 Region invalidation(layer_rect); | 4391 Region invalidation(layer_rect); |
| 4400 recording_source->UpdateAndExpandInvalidation( | 4392 recording_source->UpdateAndExpandInvalidation( |
| 4401 &client, &invalidation, layer_bounds, layer_rect, frame_number++, | 4393 &client, &invalidation, layer_bounds, layer_rect, frame_number++, |
| 4402 DisplayListRecordingSource::RECORD_NORMALLY); | 4394 DisplayListRecordingSource::RECORD_NORMALLY); |
| 4403 | 4395 |
| 4404 scoped_refptr<DisplayListRasterSource> pending_raster_source = | 4396 scoped_refptr<RasterSource> pending_raster_source = |
| 4405 recording_source->CreateRasterSource(true); | 4397 recording_source->CreateRasterSource(true); |
| 4406 | 4398 |
| 4407 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); | 4399 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); |
| 4408 ActivateTree(); | 4400 ActivateTree(); |
| 4409 | 4401 |
| 4410 if (test_for_solid) { | 4402 if (test_for_solid) { |
| 4411 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); | 4403 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); |
| 4412 } else { | 4404 } else { |
| 4413 ASSERT_TRUE(active_layer_->tilings()); | 4405 ASSERT_TRUE(active_layer_->tilings()); |
| 4414 ASSERT_GT(active_layer_->tilings()->num_tilings(), 0u); | 4406 ASSERT_GT(active_layer_->tilings()->num_tilings(), 0u); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4459 int frame_number = 0; | 4451 int frame_number = 0; |
| 4460 | 4452 |
| 4461 client.set_fill_with_nonsolid_color(true); | 4453 client.set_fill_with_nonsolid_color(true); |
| 4462 | 4454 |
| 4463 recording_source->SetNeedsDisplayRect(layer_rect); | 4455 recording_source->SetNeedsDisplayRect(layer_rect); |
| 4464 Region invalidation1; | 4456 Region invalidation1; |
| 4465 recording_source->UpdateAndExpandInvalidation( | 4457 recording_source->UpdateAndExpandInvalidation( |
| 4466 &client, &invalidation1, layer_bounds, layer_rect, frame_number++, | 4458 &client, &invalidation1, layer_bounds, layer_rect, frame_number++, |
| 4467 DisplayListRecordingSource::RECORD_NORMALLY); | 4459 DisplayListRecordingSource::RECORD_NORMALLY); |
| 4468 | 4460 |
| 4469 scoped_refptr<DisplayListRasterSource> raster_source1 = | 4461 scoped_refptr<RasterSource> raster_source1 = |
| 4470 recording_source->CreateRasterSource(true); | 4462 recording_source->CreateRasterSource(true); |
| 4471 | 4463 |
| 4472 SetupPendingTree(raster_source1); | 4464 SetupPendingTree(raster_source1); |
| 4473 ActivateTree(); | 4465 ActivateTree(); |
| 4474 bool update_lcd_text = false; | 4466 bool update_lcd_text = false; |
| 4475 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); | 4467 host_impl_.active_tree()->UpdateDrawProperties(update_lcd_text); |
| 4476 | 4468 |
| 4477 // We've started with a solid layer that contains some tilings. | 4469 // We've started with a solid layer that contains some tilings. |
| 4478 ASSERT_TRUE(active_layer_->tilings()); | 4470 ASSERT_TRUE(active_layer_->tilings()); |
| 4479 EXPECT_NE(0u, active_layer_->tilings()->num_tilings()); | 4471 EXPECT_NE(0u, active_layer_->tilings()->num_tilings()); |
| 4480 | 4472 |
| 4481 client.set_fill_with_nonsolid_color(false); | 4473 client.set_fill_with_nonsolid_color(false); |
| 4482 | 4474 |
| 4483 recording_source->SetNeedsDisplayRect(layer_rect); | 4475 recording_source->SetNeedsDisplayRect(layer_rect); |
| 4484 Region invalidation2; | 4476 Region invalidation2; |
| 4485 recording_source->UpdateAndExpandInvalidation( | 4477 recording_source->UpdateAndExpandInvalidation( |
| 4486 &client, &invalidation2, layer_bounds, layer_rect, frame_number++, | 4478 &client, &invalidation2, layer_bounds, layer_rect, frame_number++, |
| 4487 DisplayListRecordingSource::RECORD_NORMALLY); | 4479 DisplayListRecordingSource::RECORD_NORMALLY); |
| 4488 | 4480 |
| 4489 scoped_refptr<DisplayListRasterSource> raster_source2 = | 4481 scoped_refptr<RasterSource> raster_source2 = |
| 4490 recording_source->CreateRasterSource(true); | 4482 recording_source->CreateRasterSource(true); |
| 4491 | 4483 |
| 4492 SetupPendingTree(raster_source2); | 4484 SetupPendingTree(raster_source2); |
| 4493 ActivateTree(); | 4485 ActivateTree(); |
| 4494 | 4486 |
| 4495 // We've switched to a solid color, so we should end up with no tilings. | 4487 // We've switched to a solid color, so we should end up with no tilings. |
| 4496 ASSERT_TRUE(active_layer_->tilings()); | 4488 ASSERT_TRUE(active_layer_->tilings()); |
| 4497 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); | 4489 EXPECT_EQ(0u, active_layer_->tilings()->num_tilings()); |
| 4498 } | 4490 } |
| 4499 | 4491 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4552 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); | 4544 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting(tiles); |
| 4553 | 4545 |
| 4554 // Ensure we can activate. | 4546 // Ensure we can activate. |
| 4555 EXPECT_TRUE(host_impl_.tile_manager()->IsReadyToActivate()); | 4547 EXPECT_TRUE(host_impl_.tile_manager()->IsReadyToActivate()); |
| 4556 } | 4548 } |
| 4557 | 4549 |
| 4558 TEST_F(PictureLayerImplTest, CloneMissingRecordings) { | 4550 TEST_F(PictureLayerImplTest, CloneMissingRecordings) { |
| 4559 gfx::Size tile_size(100, 100); | 4551 gfx::Size tile_size(100, 100); |
| 4560 gfx::Size layer_bounds(400, 400); | 4552 gfx::Size layer_bounds(400, 400); |
| 4561 | 4553 |
| 4562 scoped_refptr<FakeDisplayListRasterSource> filled_raster_source = | 4554 scoped_refptr<FakeRasterSource> filled_raster_source = |
| 4563 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 4555 FakeRasterSource::CreateFilled(layer_bounds); |
| 4564 | 4556 |
| 4565 scoped_refptr<FakeDisplayListRasterSource> partial_raster_source = | 4557 scoped_refptr<FakeRasterSource> partial_raster_source = |
| 4566 FakeDisplayListRasterSource::CreatePartiallyFilled( | 4558 FakeRasterSource::CreatePartiallyFilled(layer_bounds, |
| 4567 layer_bounds, gfx::Rect(100, 100, 300, 300)); | 4559 gfx::Rect(100, 100, 300, 300)); |
| 4568 | 4560 |
| 4569 SetupPendingTreeWithFixedTileSize(filled_raster_source, tile_size, Region()); | 4561 SetupPendingTreeWithFixedTileSize(filled_raster_source, tile_size, Region()); |
| 4570 ActivateTree(); | 4562 ActivateTree(); |
| 4571 | 4563 |
| 4572 PictureLayerTiling* pending_tiling = old_pending_layer_->HighResTiling(); | 4564 PictureLayerTiling* pending_tiling = old_pending_layer_->HighResTiling(); |
| 4573 PictureLayerTiling* active_tiling = active_layer_->HighResTiling(); | 4565 PictureLayerTiling* active_tiling = active_layer_->HighResTiling(); |
| 4574 | 4566 |
| 4575 // We should have all tiles on active, and none on pending. | 4567 // We should have all tiles on active, and none on pending. |
| 4576 EXPECT_EQ(0u, pending_tiling->AllTilesForTesting().size()); | 4568 EXPECT_EQ(0u, pending_tiling->AllTilesForTesting().size()); |
| 4577 EXPECT_EQ(5u * 5u, active_tiling->AllTilesForTesting().size()); | 4569 EXPECT_EQ(5u * 5u, active_tiling->AllTilesForTesting().size()); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4619 TEST_F(PictureLayerImplTest, ScrollPastLiveTilesRectAndBack) { | 4611 TEST_F(PictureLayerImplTest, ScrollPastLiveTilesRectAndBack) { |
| 4620 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 4612 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 4621 | 4613 |
| 4622 gfx::Size tile_size(102, 102); | 4614 gfx::Size tile_size(102, 102); |
| 4623 gfx::Size layer_bounds(100, 100); | 4615 gfx::Size layer_bounds(100, 100); |
| 4624 gfx::Size viewport_size(100, 100); | 4616 gfx::Size viewport_size(100, 100); |
| 4625 | 4617 |
| 4626 host_impl_.SetViewportSize(viewport_size); | 4618 host_impl_.SetViewportSize(viewport_size); |
| 4627 SetInitialDeviceScaleFactor(1.f); | 4619 SetInitialDeviceScaleFactor(1.f); |
| 4628 | 4620 |
| 4629 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 4621 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 4630 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 4622 FakeRasterSource::CreateFilled(layer_bounds); |
| 4631 scoped_refptr<FakeDisplayListRasterSource> active_raster_source = | 4623 scoped_refptr<FakeRasterSource> active_raster_source = |
| 4632 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 4624 FakeRasterSource::CreateFilled(layer_bounds); |
| 4633 | 4625 |
| 4634 SetupPendingTreeWithFixedTileSize(active_raster_source, tile_size, Region()); | 4626 SetupPendingTreeWithFixedTileSize(active_raster_source, tile_size, Region()); |
| 4635 | 4627 |
| 4636 ActivateTree(); | 4628 ActivateTree(); |
| 4637 EXPECT_TRUE(active_layer_->HighResTiling()->has_tiles()); | 4629 EXPECT_TRUE(active_layer_->HighResTiling()->has_tiles()); |
| 4638 | 4630 |
| 4639 host_impl_.SetExternalTilePriorityConstraints(gfx::Rect(0, 5000, 100, 100), | 4631 host_impl_.SetExternalTilePriorityConstraints(gfx::Rect(0, 5000, 100, 100), |
| 4640 gfx::Transform()); | 4632 gfx::Transform()); |
| 4641 | 4633 |
| 4642 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, | 4634 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4690 TEST_F(PictureLayerImplTest, UpdateLCDInvalidatesPendingTree) { | 4682 TEST_F(PictureLayerImplTest, UpdateLCDInvalidatesPendingTree) { |
| 4691 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); | 4683 host_impl_.AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 4692 | 4684 |
| 4693 gfx::Size tile_size(102, 102); | 4685 gfx::Size tile_size(102, 102); |
| 4694 gfx::Size layer_bounds(100, 100); | 4686 gfx::Size layer_bounds(100, 100); |
| 4695 gfx::Size viewport_size(100, 100); | 4687 gfx::Size viewport_size(100, 100); |
| 4696 | 4688 |
| 4697 host_impl_.SetViewportSize(viewport_size); | 4689 host_impl_.SetViewportSize(viewport_size); |
| 4698 SetInitialDeviceScaleFactor(1.f); | 4690 SetInitialDeviceScaleFactor(1.f); |
| 4699 | 4691 |
| 4700 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 4692 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 4701 FakeDisplayListRasterSource::CreateFilledLCD(layer_bounds); | 4693 FakeRasterSource::CreateFilledLCD(layer_bounds); |
| 4702 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); | 4694 SetupPendingTreeWithFixedTileSize(pending_raster_source, tile_size, Region()); |
| 4703 | 4695 |
| 4704 EXPECT_TRUE(pending_layer_->RasterSourceUsesLCDText()); | 4696 EXPECT_TRUE(pending_layer_->RasterSourceUsesLCDText()); |
| 4705 EXPECT_TRUE(pending_layer_->HighResTiling()->has_tiles()); | 4697 EXPECT_TRUE(pending_layer_->HighResTiling()->has_tiles()); |
| 4706 std::vector<Tile*> tiles = | 4698 std::vector<Tile*> tiles = |
| 4707 pending_layer_->HighResTiling()->AllTilesForTesting(); | 4699 pending_layer_->HighResTiling()->AllTilesForTesting(); |
| 4708 auto prioritized_tiles = pending_layer_->HighResTiling() | 4700 auto prioritized_tiles = pending_layer_->HighResTiling() |
| 4709 ->UpdateAndGetAllPrioritizedTilesForTesting(); | 4701 ->UpdateAndGetAllPrioritizedTilesForTesting(); |
| 4710 | 4702 |
| 4711 for (Tile* tile : tiles) | 4703 for (Tile* tile : tiles) |
| (...skipping 13 matching lines...) Expand all Loading... |
| 4725 EXPECT_EQ(pending_layer_->raster_source(), | 4717 EXPECT_EQ(pending_layer_->raster_source(), |
| 4726 prioritized_tiles[tile].raster_source()); | 4718 prioritized_tiles[tile].raster_source()); |
| 4727 } | 4719 } |
| 4728 | 4720 |
| 4729 TEST_F(PictureLayerImplTest, TilingAllTilesDone) { | 4721 TEST_F(PictureLayerImplTest, TilingAllTilesDone) { |
| 4730 gfx::Size tile_size = host_impl_.settings().default_tile_size; | 4722 gfx::Size tile_size = host_impl_.settings().default_tile_size; |
| 4731 size_t tile_mem = 4 * tile_size.width() * tile_size.height(); | 4723 size_t tile_mem = 4 * tile_size.width() * tile_size.height(); |
| 4732 gfx::Size layer_bounds(1000, 1000); | 4724 gfx::Size layer_bounds(1000, 1000); |
| 4733 | 4725 |
| 4734 // Create tiles. | 4726 // Create tiles. |
| 4735 scoped_refptr<FakeDisplayListRasterSource> pending_raster_source = | 4727 scoped_refptr<FakeRasterSource> pending_raster_source = |
| 4736 FakeDisplayListRasterSource::CreateFilled(layer_bounds); | 4728 FakeRasterSource::CreateFilled(layer_bounds); |
| 4737 SetupPendingTree(pending_raster_source); | 4729 SetupPendingTree(pending_raster_source); |
| 4738 pending_layer_->SetBounds(layer_bounds); | 4730 pending_layer_->SetBounds(layer_bounds); |
| 4739 ActivateTree(); | 4731 ActivateTree(); |
| 4740 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting( | 4732 host_impl_.tile_manager()->InitializeTilesWithResourcesForTesting( |
| 4741 active_layer_->HighResTiling()->AllTilesForTesting()); | 4733 active_layer_->HighResTiling()->AllTilesForTesting()); |
| 4742 host_impl_.SetTreePriority(SAME_PRIORITY_FOR_BOTH_TREES); | 4734 host_impl_.SetTreePriority(SAME_PRIORITY_FOR_BOTH_TREES); |
| 4743 | 4735 |
| 4744 EXPECT_FALSE(active_layer_->HighResTiling()->all_tiles_done()); | 4736 EXPECT_FALSE(active_layer_->HighResTiling()->all_tiles_done()); |
| 4745 | 4737 |
| 4746 { | 4738 { |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4923 // New low res tiling. | 4915 // New low res tiling. |
| 4924 EXPECT_TRUE(tilings->tiling_at(2)->may_contain_low_resolution_tiles()); | 4916 EXPECT_TRUE(tilings->tiling_at(2)->may_contain_low_resolution_tiles()); |
| 4925 | 4917 |
| 4926 // This tiling will be high res now, it won't contain low res content since it | 4918 // This tiling will be high res now, it won't contain low res content since it |
| 4927 // was all destroyed. | 4919 // was all destroyed. |
| 4928 EXPECT_FALSE(tilings->tiling_at(1)->may_contain_low_resolution_tiles()); | 4920 EXPECT_FALSE(tilings->tiling_at(1)->may_contain_low_resolution_tiles()); |
| 4929 } | 4921 } |
| 4930 | 4922 |
| 4931 } // namespace | 4923 } // namespace |
| 4932 } // namespace cc | 4924 } // namespace cc |
| OLD | NEW |