OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
10 #include "base/synchronization/lock.h" | 10 #include "base/synchronization/lock.h" |
(...skipping 1461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1472 } | 1472 } |
1473 | 1473 |
1474 virtual void BeginTest() OVERRIDE { | 1474 virtual void BeginTest() OVERRIDE { |
1475 drew_frame_ = -1; | 1475 drew_frame_ = -1; |
1476 PostSetNeedsCommitToMainThread(); | 1476 PostSetNeedsCommitToMainThread(); |
1477 } | 1477 } |
1478 | 1478 |
1479 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 1479 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
1480 ASSERT_EQ(0u, layer_tree_host()->settings().max_partial_texture_updates); | 1480 ASSERT_EQ(0u, layer_tree_host()->settings().max_partial_texture_updates); |
1481 | 1481 |
1482 TestWebGraphicsContext3D* context = static_cast<TestWebGraphicsContext3D*>( | 1482 TestWebGraphicsContext3D* context = static_cast<TestContextProvider*>( |
1483 impl->output_surface()->context_provider()->Context3d()); | 1483 impl->output_surface()->context_provider().get())->TestContext3d(); |
1484 | 1484 |
1485 switch (impl->active_tree()->source_frame_number()) { | 1485 switch (impl->active_tree()->source_frame_number()) { |
1486 case 0: | 1486 case 0: |
1487 // Number of textures should be one for each layer | 1487 // Number of textures should be one for each layer |
1488 ASSERT_EQ(2u, context->NumTextures()); | 1488 ASSERT_EQ(2u, context->NumTextures()); |
1489 // Number of textures used for commit should be one for each layer. | 1489 // Number of textures used for commit should be one for each layer. |
1490 EXPECT_EQ(2u, context->NumUsedTextures()); | 1490 EXPECT_EQ(2u, context->NumUsedTextures()); |
1491 // Verify that used texture is correct. | 1491 // Verify that used texture is correct. |
1492 EXPECT_TRUE(context->UsedTexture(context->TextureAt(0))); | 1492 EXPECT_TRUE(context->UsedTexture(context->TextureAt(0))); |
1493 EXPECT_TRUE(context->UsedTexture(context->TextureAt(1))); | 1493 EXPECT_TRUE(context->UsedTexture(context->TextureAt(1))); |
(...skipping 20 matching lines...) Expand all Loading... |
1514 case 2: | 1514 case 2: |
1515 EndTest(); | 1515 EndTest(); |
1516 break; | 1516 break; |
1517 default: | 1517 default: |
1518 NOTREACHED(); | 1518 NOTREACHED(); |
1519 break; | 1519 break; |
1520 } | 1520 } |
1521 } | 1521 } |
1522 | 1522 |
1523 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 1523 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
1524 TestWebGraphicsContext3D* context = static_cast<TestWebGraphicsContext3D*>( | 1524 TestWebGraphicsContext3D* context = static_cast<TestContextProvider*>( |
1525 impl->output_surface()->context_provider()->Context3d()); | 1525 impl->output_surface()->context_provider().get())->TestContext3d(); |
1526 | 1526 |
1527 if (drew_frame_ == impl->active_tree()->source_frame_number()) { | 1527 if (drew_frame_ == impl->active_tree()->source_frame_number()) { |
1528 EXPECT_EQ(0u, context->NumUsedTextures()) << "For frame " << drew_frame_; | 1528 EXPECT_EQ(0u, context->NumUsedTextures()) << "For frame " << drew_frame_; |
1529 return; | 1529 return; |
1530 } | 1530 } |
1531 drew_frame_ = impl->active_tree()->source_frame_number(); | 1531 drew_frame_ = impl->active_tree()->source_frame_number(); |
1532 | 1532 |
1533 // We draw/ship one texture each frame for each layer. | 1533 // We draw/ship one texture each frame for each layer. |
1534 EXPECT_EQ(2u, context->NumUsedTextures()); | 1534 EXPECT_EQ(2u, context->NumUsedTextures()); |
1535 context->ResetUsedTextures(); | 1535 context->ResetUsedTextures(); |
(...skipping 15 matching lines...) Expand all Loading... |
1551 | 1551 |
1552 MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F( | 1552 MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F( |
1553 LayerTreeHostTestDirectRendererAtomicCommit); | 1553 LayerTreeHostTestDirectRendererAtomicCommit); |
1554 | 1554 |
1555 class LayerTreeHostTestDelegatingRendererAtomicCommit | 1555 class LayerTreeHostTestDelegatingRendererAtomicCommit |
1556 : public LayerTreeHostTestDirectRendererAtomicCommit { | 1556 : public LayerTreeHostTestDirectRendererAtomicCommit { |
1557 public: | 1557 public: |
1558 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 1558 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
1559 ASSERT_EQ(0u, layer_tree_host()->settings().max_partial_texture_updates); | 1559 ASSERT_EQ(0u, layer_tree_host()->settings().max_partial_texture_updates); |
1560 | 1560 |
1561 TestWebGraphicsContext3D* context = static_cast<TestWebGraphicsContext3D*>( | 1561 TestWebGraphicsContext3D* context = static_cast<TestContextProvider*>( |
1562 impl->output_surface()->context_provider()->Context3d()); | 1562 impl->output_surface()->context_provider().get())->TestContext3d(); |
1563 | 1563 |
1564 switch (impl->active_tree()->source_frame_number()) { | 1564 switch (impl->active_tree()->source_frame_number()) { |
1565 case 0: | 1565 case 0: |
1566 // Number of textures should be one for each layer | 1566 // Number of textures should be one for each layer |
1567 ASSERT_EQ(2u, context->NumTextures()); | 1567 ASSERT_EQ(2u, context->NumTextures()); |
1568 // Number of textures used for commit should be one for each layer. | 1568 // Number of textures used for commit should be one for each layer. |
1569 EXPECT_EQ(2u, context->NumUsedTextures()); | 1569 EXPECT_EQ(2u, context->NumUsedTextures()); |
1570 // Verify that used texture is correct. | 1570 // Verify that used texture is correct. |
1571 EXPECT_TRUE(context->UsedTexture(context->TextureAt(0))); | 1571 EXPECT_TRUE(context->UsedTexture(context->TextureAt(0))); |
1572 EXPECT_TRUE(context->UsedTexture(context->TextureAt(1))); | 1572 EXPECT_TRUE(context->UsedTexture(context->TextureAt(1))); |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1674 break; | 1674 break; |
1675 default: | 1675 default: |
1676 NOTREACHED() << layer_tree_host()->source_frame_number(); | 1676 NOTREACHED() << layer_tree_host()->source_frame_number(); |
1677 break; | 1677 break; |
1678 } | 1678 } |
1679 } | 1679 } |
1680 | 1680 |
1681 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 1681 virtual void CommitCompleteOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
1682 ASSERT_EQ(1u, layer_tree_host()->settings().max_partial_texture_updates); | 1682 ASSERT_EQ(1u, layer_tree_host()->settings().max_partial_texture_updates); |
1683 | 1683 |
1684 TestWebGraphicsContext3D* context = static_cast<TestWebGraphicsContext3D*>( | 1684 TestWebGraphicsContext3D* context = static_cast<TestContextProvider*>( |
1685 impl->output_surface()->context_provider()->Context3d()); | 1685 impl->output_surface()->context_provider().get())->TestContext3d(); |
1686 | 1686 |
1687 switch (impl->active_tree()->source_frame_number()) { | 1687 switch (impl->active_tree()->source_frame_number()) { |
1688 case 0: | 1688 case 0: |
1689 // Number of textures should be one for each layer. | 1689 // Number of textures should be one for each layer. |
1690 ASSERT_EQ(2u, context->NumTextures()); | 1690 ASSERT_EQ(2u, context->NumTextures()); |
1691 // Number of textures used for commit should be one for each layer. | 1691 // Number of textures used for commit should be one for each layer. |
1692 EXPECT_EQ(2u, context->NumUsedTextures()); | 1692 EXPECT_EQ(2u, context->NumUsedTextures()); |
1693 // Verify that used textures are correct. | 1693 // Verify that used textures are correct. |
1694 EXPECT_TRUE(context->UsedTexture(context->TextureAt(0))); | 1694 EXPECT_TRUE(context->UsedTexture(context->TextureAt(0))); |
1695 EXPECT_TRUE(context->UsedTexture(context->TextureAt(1))); | 1695 EXPECT_TRUE(context->UsedTexture(context->TextureAt(1))); |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1765 break; | 1765 break; |
1766 default: | 1766 default: |
1767 NOTREACHED(); | 1767 NOTREACHED(); |
1768 break; | 1768 break; |
1769 } | 1769 } |
1770 } | 1770 } |
1771 | 1771 |
1772 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 1772 virtual void DrawLayersOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
1773 EXPECT_LT(impl->active_tree()->source_frame_number(), 5); | 1773 EXPECT_LT(impl->active_tree()->source_frame_number(), 5); |
1774 | 1774 |
1775 TestWebGraphicsContext3D* context = static_cast<TestWebGraphicsContext3D*>( | 1775 TestWebGraphicsContext3D* context = static_cast<TestContextProvider*>( |
1776 impl->output_surface()->context_provider()->Context3d()); | 1776 impl->output_surface()->context_provider().get())->TestContext3d(); |
1777 | 1777 |
1778 // Number of textures used for drawing should one per layer except for | 1778 // Number of textures used for drawing should one per layer except for |
1779 // frame 3 where the viewport only contains one layer. | 1779 // frame 3 where the viewport only contains one layer. |
1780 if (impl->active_tree()->source_frame_number() == 3) { | 1780 if (impl->active_tree()->source_frame_number() == 3) { |
1781 EXPECT_EQ(1u, context->NumUsedTextures()); | 1781 EXPECT_EQ(1u, context->NumUsedTextures()); |
1782 } else { | 1782 } else { |
1783 EXPECT_EQ(2u, context->NumUsedTextures()) << | 1783 EXPECT_EQ(2u, context->NumUsedTextures()) << |
1784 "For frame " << impl->active_tree()->source_frame_number(); | 1784 "For frame " << impl->active_tree()->source_frame_number(); |
1785 } | 1785 } |
1786 | 1786 |
(...skipping 1362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3149 PostSetNeedsCommitToMainThread(); | 3149 PostSetNeedsCommitToMainThread(); |
3150 break; | 3150 break; |
3151 case 5: | 3151 case 5: |
3152 ClearResources(); | 3152 ClearResources(); |
3153 EndTest(); | 3153 EndTest(); |
3154 break; | 3154 break; |
3155 } | 3155 } |
3156 } | 3156 } |
3157 | 3157 |
3158 void PerformTest(LayerTreeHostImpl* impl) { | 3158 void PerformTest(LayerTreeHostImpl* impl) { |
3159 TestWebGraphicsContext3D* context = static_cast<TestWebGraphicsContext3D*>( | 3159 TestWebGraphicsContext3D* context = static_cast<TestContextProvider*>( |
3160 impl->output_surface()->context_provider()->Context3d()); | 3160 impl->output_surface()->context_provider().get())->TestContext3d(); |
3161 | 3161 |
3162 int frame = num_commits_; | 3162 int frame = num_commits_; |
3163 switch (frame) { | 3163 switch (frame) { |
3164 case 1: | 3164 case 1: |
3165 ASSERT_EQ(0u, context->NumTextures()); | 3165 ASSERT_EQ(0u, context->NumTextures()); |
3166 break; | 3166 break; |
3167 case 2: | 3167 case 2: |
3168 // Created two textures. | 3168 // Created two textures. |
3169 ASSERT_EQ(2u, context->NumTextures()); | 3169 ASSERT_EQ(2u, context->NumTextures()); |
3170 break; | 3170 break; |
(...skipping 1086 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4257 | 4257 |
4258 layer_tree_host()->SetRootLayer(root_layer); | 4258 layer_tree_host()->SetRootLayer(root_layer); |
4259 LayerTreeHostTest::SetupTree(); | 4259 LayerTreeHostTest::SetupTree(); |
4260 } | 4260 } |
4261 | 4261 |
4262 virtual void BeginTest() OVERRIDE { | 4262 virtual void BeginTest() OVERRIDE { |
4263 PostSetNeedsCommitToMainThread(); | 4263 PostSetNeedsCommitToMainThread(); |
4264 } | 4264 } |
4265 | 4265 |
4266 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { | 4266 virtual void DidActivateTreeOnThread(LayerTreeHostImpl* impl) OVERRIDE { |
4267 TestWebGraphicsContext3D* context = static_cast<TestWebGraphicsContext3D*>( | 4267 TestWebGraphicsContext3D* context = static_cast<TestContextProvider*>( |
4268 impl->output_surface()->context_provider()->Context3d()); | 4268 impl->output_surface()->context_provider().get())->TestContext3d(); |
4269 | 4269 |
4270 // Expect that the transfer buffer memory used is equal to the | 4270 // Expect that the transfer buffer memory used is equal to the |
4271 // MaxTransferBufferUsageBytes value set in CreateOutputSurface. | 4271 // MaxTransferBufferUsageBytes value set in CreateOutputSurface. |
4272 // NOTE: This is now 1/2 due to raster memory limit in TileManager. | 4272 // NOTE: This is now 1/2 due to raster memory limit in TileManager. |
4273 // Only half the limit will be reached unless the task set | 4273 // Only half the limit will be reached unless the task set |
4274 // thrashes to a completly new set of tiles. | 4274 // thrashes to a completly new set of tiles. |
4275 EXPECT_EQ(512 * 1024u, | 4275 EXPECT_EQ(512 * 1024u, |
4276 context->GetPeakTransferBufferMemoryUsedBytes()); | 4276 context->GetPeakTransferBufferMemoryUsedBytes()); |
4277 EndTest(); | 4277 EndTest(); |
4278 } | 4278 } |
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4766 | 4766 |
4767 EndTest(); | 4767 EndTest(); |
4768 } | 4768 } |
4769 | 4769 |
4770 virtual void AfterTest() OVERRIDE {} | 4770 virtual void AfterTest() OVERRIDE {} |
4771 }; | 4771 }; |
4772 | 4772 |
4773 MULTI_THREAD_TEST_F(LayerTreeHostTestSimpleSwapPromiseMonitor); | 4773 MULTI_THREAD_TEST_F(LayerTreeHostTestSimpleSwapPromiseMonitor); |
4774 | 4774 |
4775 } // namespace cc | 4775 } // namespace cc |
OLD | NEW |