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 1646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1657 | 1657 |
1658 gfx::Rect full_rect(0, 0, 10, 10); | 1658 gfx::Rect full_rect(0, 0, 10, 10); |
1659 ResourceUpdate upload = ResourceUpdate::Create( | 1659 ResourceUpdate upload = ResourceUpdate::Create( |
1660 texture_.get(), &bitmap_, full_rect, full_rect, gfx::Vector2d()); | 1660 texture_.get(), &bitmap_, full_rect, full_rect, gfx::Vector2d()); |
1661 queue->AppendFullUpload(upload); | 1661 queue->AppendFullUpload(upload); |
1662 return true; | 1662 return true; |
1663 } | 1663 } |
1664 | 1664 |
1665 scoped_ptr<LayerImpl> EvictionTestLayer::CreateLayerImpl( | 1665 scoped_ptr<LayerImpl> EvictionTestLayer::CreateLayerImpl( |
1666 LayerTreeImpl* tree_impl) { | 1666 LayerTreeImpl* tree_impl) { |
1667 return EvictionTestLayerImpl::Create(tree_impl, layer_id_) | 1667 return EvictionTestLayerImpl::Create(tree_impl, layer_id_); |
1668 .PassAs<LayerImpl>(); | |
1669 } | 1668 } |
1670 | 1669 |
1671 void EvictionTestLayer::PushPropertiesTo(LayerImpl* layer_impl) { | 1670 void EvictionTestLayer::PushPropertiesTo(LayerImpl* layer_impl) { |
1672 Layer::PushPropertiesTo(layer_impl); | 1671 Layer::PushPropertiesTo(layer_impl); |
1673 | 1672 |
1674 EvictionTestLayerImpl* test_layer_impl = | 1673 EvictionTestLayerImpl* test_layer_impl = |
1675 static_cast<EvictionTestLayerImpl*>(layer_impl); | 1674 static_cast<EvictionTestLayerImpl*>(layer_impl); |
1676 test_layer_impl->SetHasTexture(texture_->have_backing_texture()); | 1675 test_layer_impl->SetHasTexture(texture_->have_backing_texture()); |
1677 } | 1676 } |
1678 | 1677 |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1896 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestDeferCommits); | 1895 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestDeferCommits); |
1897 | 1896 |
1898 class LayerTreeHostWithProxy : public LayerTreeHost { | 1897 class LayerTreeHostWithProxy : public LayerTreeHost { |
1899 public: | 1898 public: |
1900 LayerTreeHostWithProxy(FakeLayerTreeHostClient* client, | 1899 LayerTreeHostWithProxy(FakeLayerTreeHostClient* client, |
1901 const LayerTreeSettings& settings, | 1900 const LayerTreeSettings& settings, |
1902 scoped_ptr<FakeProxy> proxy) | 1901 scoped_ptr<FakeProxy> proxy) |
1903 : LayerTreeHost(client, NULL, settings) { | 1902 : LayerTreeHost(client, NULL, settings) { |
1904 proxy->SetLayerTreeHost(this); | 1903 proxy->SetLayerTreeHost(this); |
1905 client->SetLayerTreeHost(this); | 1904 client->SetLayerTreeHost(this); |
1906 InitializeForTesting(proxy.PassAs<Proxy>()); | 1905 InitializeForTesting(proxy.Pass()); |
1907 } | 1906 } |
1908 }; | 1907 }; |
1909 | 1908 |
1910 TEST(LayerTreeHostTest, LimitPartialUpdates) { | 1909 TEST(LayerTreeHostTest, LimitPartialUpdates) { |
1911 // When partial updates are not allowed, max updates should be 0. | 1910 // When partial updates are not allowed, max updates should be 0. |
1912 { | 1911 { |
1913 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D); | 1912 FakeLayerTreeHostClient client(FakeLayerTreeHostClient::DIRECT_3D); |
1914 | 1913 |
1915 scoped_ptr<FakeProxy> proxy(new FakeProxy); | 1914 scoped_ptr<FakeProxy> proxy(new FakeProxy); |
1916 proxy->GetRendererCapabilities().allow_partial_texture_updates = false; | 1915 proxy->GetRendererCapabilities().allow_partial_texture_updates = false; |
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2469 }; | 2468 }; |
2470 | 2469 |
2471 class LayerTreeHostTestIOSurfaceDrawing : public LayerTreeHostTest { | 2470 class LayerTreeHostTestIOSurfaceDrawing : public LayerTreeHostTest { |
2472 protected: | 2471 protected: |
2473 virtual scoped_ptr<FakeOutputSurface> CreateFakeOutputSurface(bool fallback) | 2472 virtual scoped_ptr<FakeOutputSurface> CreateFakeOutputSurface(bool fallback) |
2474 OVERRIDE { | 2473 OVERRIDE { |
2475 scoped_ptr<MockIOSurfaceWebGraphicsContext3D> mock_context_owned( | 2474 scoped_ptr<MockIOSurfaceWebGraphicsContext3D> mock_context_owned( |
2476 new MockIOSurfaceWebGraphicsContext3D); | 2475 new MockIOSurfaceWebGraphicsContext3D); |
2477 mock_context_ = mock_context_owned.get(); | 2476 mock_context_ = mock_context_owned.get(); |
2478 | 2477 |
2479 if (delegating_renderer()) { | 2478 if (delegating_renderer()) |
2480 return FakeOutputSurface::CreateDelegating3d( | 2479 return FakeOutputSurface::CreateDelegating3d(mock_context_owned.Pass()); |
2481 mock_context_owned.PassAs<TestWebGraphicsContext3D>()); | 2480 else |
2482 } else { | 2481 return FakeOutputSurface::Create3d(mock_context_owned.Pass()); |
2483 return FakeOutputSurface::Create3d( | |
2484 mock_context_owned.PassAs<TestWebGraphicsContext3D>()); | |
2485 } | |
2486 } | 2482 } |
2487 | 2483 |
2488 virtual void SetupTree() OVERRIDE { | 2484 virtual void SetupTree() OVERRIDE { |
2489 LayerTreeHostTest::SetupTree(); | 2485 LayerTreeHostTest::SetupTree(); |
2490 | 2486 |
2491 layer_tree_host()->root_layer()->SetIsDrawable(false); | 2487 layer_tree_host()->root_layer()->SetIsDrawable(false); |
2492 | 2488 |
2493 io_surface_id_ = 9; | 2489 io_surface_id_ = 9; |
2494 io_surface_size_ = gfx::Size(6, 7); | 2490 io_surface_size_ = gfx::Size(6, 7); |
2495 | 2491 |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2861 if (layer_tree_host()->settings().impl_side_painting) | 2857 if (layer_tree_host()->settings().impl_side_painting) |
2862 PerformTest(impl); | 2858 PerformTest(impl); |
2863 } | 2859 } |
2864 | 2860 |
2865 virtual void AfterTest() OVERRIDE {} | 2861 virtual void AfterTest() OVERRIDE {} |
2866 | 2862 |
2867 private: | 2863 private: |
2868 // Must clear all resources before exiting. | 2864 // Must clear all resources before exiting. |
2869 void ClearResources() { | 2865 void ClearResources() { |
2870 for (int i = 0; i < num_ui_resources_; i++) | 2866 for (int i = 0; i < num_ui_resources_; i++) |
2871 ui_resources_[i].reset(); | 2867 ui_resources_[i] = nullptr; |
2872 } | 2868 } |
2873 | 2869 |
2874 void CreateResource() { | 2870 void CreateResource() { |
2875 ui_resources_[num_ui_resources_++] = | 2871 ui_resources_[num_ui_resources_++] = |
2876 FakeScopedUIResource::Create(layer_tree_host()); | 2872 FakeScopedUIResource::Create(layer_tree_host()); |
2877 } | 2873 } |
2878 | 2874 |
2879 scoped_ptr<FakeScopedUIResource> ui_resources_[5]; | 2875 scoped_ptr<FakeScopedUIResource> ui_resources_[5]; |
2880 int num_ui_resources_; | 2876 int num_ui_resources_; |
2881 }; | 2877 }; |
(...skipping 12 matching lines...) Expand all Loading... |
2894 virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE { | 2890 virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE { |
2895 LayerImpl::PushPropertiesTo(layer); | 2891 LayerImpl::PushPropertiesTo(layer); |
2896 push_properties_count_++; | 2892 push_properties_count_++; |
2897 // Push state to the active tree because we can only access it from there. | 2893 // Push state to the active tree because we can only access it from there. |
2898 static_cast<PushPropertiesCountingLayerImpl*>( | 2894 static_cast<PushPropertiesCountingLayerImpl*>( |
2899 layer)->push_properties_count_ = push_properties_count_; | 2895 layer)->push_properties_count_ = push_properties_count_; |
2900 } | 2896 } |
2901 | 2897 |
2902 virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) | 2898 virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) |
2903 OVERRIDE { | 2899 OVERRIDE { |
2904 return PushPropertiesCountingLayerImpl::Create(tree_impl, id()). | 2900 return PushPropertiesCountingLayerImpl::Create(tree_impl, id()); |
2905 PassAs<LayerImpl>(); | |
2906 } | 2901 } |
2907 | 2902 |
2908 size_t push_properties_count() const { return push_properties_count_; } | 2903 size_t push_properties_count() const { return push_properties_count_; } |
2909 void reset_push_properties_count() { push_properties_count_ = 0; } | 2904 void reset_push_properties_count() { push_properties_count_ = 0; } |
2910 | 2905 |
2911 private: | 2906 private: |
2912 size_t push_properties_count_; | 2907 size_t push_properties_count_; |
2913 | 2908 |
2914 PushPropertiesCountingLayerImpl(LayerTreeImpl* tree_impl, int id) | 2909 PushPropertiesCountingLayerImpl(LayerTreeImpl* tree_impl, int id) |
2915 : LayerImpl(tree_impl, id), | 2910 : LayerImpl(tree_impl, id), |
(...skipping 10 matching lines...) Expand all Loading... |
2926 | 2921 |
2927 virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE { | 2922 virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE { |
2928 Layer::PushPropertiesTo(layer); | 2923 Layer::PushPropertiesTo(layer); |
2929 push_properties_count_++; | 2924 push_properties_count_++; |
2930 if (persist_needs_push_properties_) | 2925 if (persist_needs_push_properties_) |
2931 needs_push_properties_ = true; | 2926 needs_push_properties_ = true; |
2932 } | 2927 } |
2933 | 2928 |
2934 virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) | 2929 virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) |
2935 OVERRIDE { | 2930 OVERRIDE { |
2936 return PushPropertiesCountingLayerImpl::Create(tree_impl, id()). | 2931 return PushPropertiesCountingLayerImpl::Create(tree_impl, id()); |
2937 PassAs<LayerImpl>(); | |
2938 } | 2932 } |
2939 | 2933 |
2940 void SetDrawsContent(bool draws_content) { SetIsDrawable(draws_content); } | 2934 void SetDrawsContent(bool draws_content) { SetIsDrawable(draws_content); } |
2941 | 2935 |
2942 size_t push_properties_count() const { return push_properties_count_; } | 2936 size_t push_properties_count() const { return push_properties_count_; } |
2943 void reset_push_properties_count() { push_properties_count_ = 0; } | 2937 void reset_push_properties_count() { push_properties_count_ = 0; } |
2944 | 2938 |
2945 void set_persist_needs_push_properties(bool persist) { | 2939 void set_persist_needs_push_properties(bool persist) { |
2946 persist_needs_push_properties_ = persist; | 2940 persist_needs_push_properties_ = persist; |
2947 } | 2941 } |
(...skipping 1779 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4727 EXPECT_TRUE(host_impl->active_tree()->RequiresHighResToDraw()); | 4721 EXPECT_TRUE(host_impl->active_tree()->RequiresHighResToDraw()); |
4728 } | 4722 } |
4729 | 4723 |
4730 virtual void DidCommit() OVERRIDE { | 4724 virtual void DidCommit() OVERRIDE { |
4731 int frame = layer_tree_host()->source_frame_number(); | 4725 int frame = layer_tree_host()->source_frame_number(); |
4732 switch (frame) { | 4726 switch (frame) { |
4733 case 1: | 4727 case 1: |
4734 PostSetNeedsCommitToMainThread(); | 4728 PostSetNeedsCommitToMainThread(); |
4735 break; | 4729 break; |
4736 case 2: | 4730 case 2: |
4737 ui_resource_.reset(); | 4731 ui_resource_ = nullptr; |
4738 EndTest(); | 4732 EndTest(); |
4739 break; | 4733 break; |
4740 } | 4734 } |
4741 } | 4735 } |
4742 | 4736 |
4743 virtual void AfterTest() OVERRIDE {} | 4737 virtual void AfterTest() OVERRIDE {} |
4744 | 4738 |
4745 FakeContentLayerClient client_; | 4739 FakeContentLayerClient client_; |
4746 scoped_ptr<FakeScopedUIResource> ui_resource_; | 4740 scoped_ptr<FakeScopedUIResource> ui_resource_; |
4747 }; | 4741 }; |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5106 int activation_count_; | 5100 int activation_count_; |
5107 | 5101 |
5108 FakeContentLayerClient client_; | 5102 FakeContentLayerClient client_; |
5109 scoped_refptr<FakePictureLayer> picture_layer_; | 5103 scoped_refptr<FakePictureLayer> picture_layer_; |
5110 }; | 5104 }; |
5111 | 5105 |
5112 // TODO(vmpstr): Enable with single thread impl-side painting. | 5106 // TODO(vmpstr): Enable with single thread impl-side painting. |
5113 MULTI_THREAD_TEST_F(LayerTreeHostTestInvisibleDoesntActivate); | 5107 MULTI_THREAD_TEST_F(LayerTreeHostTestInvisibleDoesntActivate); |
5114 | 5108 |
5115 } // namespace cc | 5109 } // namespace cc |
OLD | NEW |