| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "cc/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <sstream> | 9 #include <sstream> |
| 10 | 10 |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 | 128 |
| 129 void ReadTestFile(const std::string& name) { | 129 void ReadTestFile(const std::string& name) { |
| 130 base::FilePath test_data_dir; | 130 base::FilePath test_data_dir; |
| 131 ASSERT_TRUE(PathService::Get(CCPaths::DIR_TEST_DATA, &test_data_dir)); | 131 ASSERT_TRUE(PathService::Get(CCPaths::DIR_TEST_DATA, &test_data_dir)); |
| 132 base::FilePath json_file = test_data_dir.AppendASCII(name + ".json"); | 132 base::FilePath json_file = test_data_dir.AppendASCII(name + ".json"); |
| 133 ASSERT_TRUE(base::ReadFileToString(json_file, &json_)); | 133 ASSERT_TRUE(base::ReadFileToString(json_file, &json_)); |
| 134 } | 134 } |
| 135 | 135 |
| 136 void BuildTree() override { | 136 void BuildTree() override { |
| 137 gfx::Size viewport = gfx::Size(720, 1038); | 137 gfx::Size viewport = gfx::Size(720, 1038); |
| 138 layer_tree_host()->SetViewportSize(viewport); | 138 layer_tree()->SetViewportSize(viewport); |
| 139 scoped_refptr<Layer> root = ParseTreeFromJson(json_, | 139 scoped_refptr<Layer> root = ParseTreeFromJson(json_, |
| 140 &fake_content_layer_client_); | 140 &fake_content_layer_client_); |
| 141 ASSERT_TRUE(root.get()); | 141 ASSERT_TRUE(root.get()); |
| 142 layer_tree_host()->SetRootLayer(root); | 142 layer_tree()->SetRootLayer(root); |
| 143 fake_content_layer_client_.set_bounds(viewport); | 143 fake_content_layer_client_.set_bounds(viewport); |
| 144 } | 144 } |
| 145 | 145 |
| 146 private: | 146 private: |
| 147 std::string json_; | 147 std::string json_; |
| 148 }; | 148 }; |
| 149 | 149 |
| 150 // Simulates a tab switcher scene with two stacks of 10 tabs each. | 150 // Simulates a tab switcher scene with two stacks of 10 tabs each. |
| 151 TEST_F(LayerTreeHostPerfTestJsonReader, TenTenSingleThread) { | 151 TEST_F(LayerTreeHostPerfTestJsonReader, TenTenSingleThread) { |
| 152 SetTestName("10_10_single_thread"); | 152 SetTestName("10_10_single_thread"); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 177 } | 177 } |
| 178 | 178 |
| 179 // Invalidates a leaf layer in the tree on the main thread after every commit. | 179 // Invalidates a leaf layer in the tree on the main thread after every commit. |
| 180 class LayerTreeHostPerfTestLeafInvalidates | 180 class LayerTreeHostPerfTestLeafInvalidates |
| 181 : public LayerTreeHostPerfTestJsonReader { | 181 : public LayerTreeHostPerfTestJsonReader { |
| 182 public: | 182 public: |
| 183 void BuildTree() override { | 183 void BuildTree() override { |
| 184 LayerTreeHostPerfTestJsonReader::BuildTree(); | 184 LayerTreeHostPerfTestJsonReader::BuildTree(); |
| 185 | 185 |
| 186 // Find a leaf layer. | 186 // Find a leaf layer. |
| 187 for (layer_to_invalidate_ = layer_tree_host()->root_layer(); | 187 for (layer_to_invalidate_ = layer_tree()->root_layer(); |
| 188 layer_to_invalidate_->children().size(); | 188 layer_to_invalidate_->children().size(); |
| 189 layer_to_invalidate_ = layer_to_invalidate_->children()[0].get()) { | 189 layer_to_invalidate_ = layer_to_invalidate_->children()[0].get()) { |
| 190 } | 190 } |
| 191 } | 191 } |
| 192 | 192 |
| 193 void DidCommitAndDrawFrame() override { | 193 void DidCommitAndDrawFrame() override { |
| 194 if (TestEnded()) | 194 if (TestEnded()) |
| 195 return; | 195 return; |
| 196 | 196 |
| 197 layer_to_invalidate_->SetOpacity( | 197 layer_to_invalidate_->SetOpacity( |
| (...skipping 20 matching lines...) Expand all Loading... |
| 218 | 218 |
| 219 // Simulates main-thread scrolling on each frame. | 219 // Simulates main-thread scrolling on each frame. |
| 220 class ScrollingLayerTreePerfTest : public LayerTreeHostPerfTestJsonReader { | 220 class ScrollingLayerTreePerfTest : public LayerTreeHostPerfTestJsonReader { |
| 221 public: | 221 public: |
| 222 ScrollingLayerTreePerfTest() | 222 ScrollingLayerTreePerfTest() |
| 223 : LayerTreeHostPerfTestJsonReader() { | 223 : LayerTreeHostPerfTestJsonReader() { |
| 224 } | 224 } |
| 225 | 225 |
| 226 void BuildTree() override { | 226 void BuildTree() override { |
| 227 LayerTreeHostPerfTestJsonReader::BuildTree(); | 227 LayerTreeHostPerfTestJsonReader::BuildTree(); |
| 228 scrollable_ = layer_tree_host()->root_layer()->children()[1]; | 228 scrollable_ = layer_tree()->root_layer()->children()[1]; |
| 229 ASSERT_TRUE(scrollable_.get()); | 229 ASSERT_TRUE(scrollable_.get()); |
| 230 } | 230 } |
| 231 | 231 |
| 232 void UpdateLayerTreeHost() override { | 232 void UpdateLayerTreeHost() override { |
| 233 if (TestEnded()) | 233 if (TestEnded()) |
| 234 return; | 234 return; |
| 235 static const gfx::Vector2d delta = gfx::Vector2d(0, 10); | 235 static const gfx::Vector2d delta = gfx::Vector2d(0, 10); |
| 236 scrollable_->SetScrollOffset( | 236 scrollable_->SetScrollOffset( |
| 237 gfx::ScrollOffsetWithDelta(scrollable_->scroll_offset(), delta)); | 237 gfx::ScrollOffsetWithDelta(scrollable_->scroll_offset(), delta)); |
| 238 } | 238 } |
| (...skipping 15 matching lines...) Expand all Loading... |
| 254 } | 254 } |
| 255 | 255 |
| 256 // Simulates main-thread scrolling on each frame. | 256 // Simulates main-thread scrolling on each frame. |
| 257 class BrowserCompositorInvalidateLayerTreePerfTest | 257 class BrowserCompositorInvalidateLayerTreePerfTest |
| 258 : public LayerTreeHostPerfTestJsonReader { | 258 : public LayerTreeHostPerfTestJsonReader { |
| 259 public: | 259 public: |
| 260 BrowserCompositorInvalidateLayerTreePerfTest() = default; | 260 BrowserCompositorInvalidateLayerTreePerfTest() = default; |
| 261 | 261 |
| 262 void BuildTree() override { | 262 void BuildTree() override { |
| 263 LayerTreeHostPerfTestJsonReader::BuildTree(); | 263 LayerTreeHostPerfTestJsonReader::BuildTree(); |
| 264 tab_contents_ = | 264 tab_contents_ = static_cast<TextureLayer*>(layer_tree() |
| 265 static_cast<TextureLayer*>( | 265 ->root_layer() |
| 266 layer_tree_host()->root_layer()->children()[0]-> | 266 ->children()[0] |
| 267 children()[0]-> | 267 ->children()[0] |
| 268 children()[0]-> | 268 ->children()[0] |
| 269 children()[0].get()); | 269 ->children()[0] |
| 270 .get()); |
| 270 ASSERT_TRUE(tab_contents_.get()); | 271 ASSERT_TRUE(tab_contents_.get()); |
| 271 } | 272 } |
| 272 | 273 |
| 273 void WillCommit() override { | 274 void WillCommit() override { |
| 274 if (CleanUpStarted()) | 275 if (CleanUpStarted()) |
| 275 return; | 276 return; |
| 276 gpu::Mailbox gpu_mailbox; | 277 gpu::Mailbox gpu_mailbox; |
| 277 std::ostringstream name_stream; | 278 std::ostringstream name_stream; |
| 278 name_stream << "name" << next_fence_sync_; | 279 name_stream << "name" << next_fence_sync_; |
| 279 gpu_mailbox.SetName( | 280 gpu_mailbox.SetName( |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 TEST_F(LayerTreeHostPerfTestJsonReader, HeavyPageThreaded) { | 345 TEST_F(LayerTreeHostPerfTestJsonReader, HeavyPageThreaded) { |
| 345 begin_frame_driven_drawing_ = true; | 346 begin_frame_driven_drawing_ = true; |
| 346 measure_commit_cost_ = true; | 347 measure_commit_cost_ = true; |
| 347 SetTestName("heavy_page"); | 348 SetTestName("heavy_page"); |
| 348 ReadTestFile("heavy_layer_tree"); | 349 ReadTestFile("heavy_layer_tree"); |
| 349 RunTest(CompositorMode::THREADED); | 350 RunTest(CompositorMode::THREADED); |
| 350 } | 351 } |
| 351 | 352 |
| 352 } // namespace | 353 } // namespace |
| 353 } // namespace cc | 354 } // namespace cc |
| OLD | NEW |